diff --git a/.circleci/config.yml b/.circleci/config.yml index 5eb5b2953d..9e4f83ae79 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,9 +1,9 @@ --- version: 2 jobs: - python3_test: + test: # Run Python 3 tests - working_directory: /python3_test + working_directory: /test docker: - image: continuumio/miniconda3 steps: @@ -14,7 +14,7 @@ jobs: date --rfc-3339 date > cache_key.txt cat environment.yml >> cache_key.txt - restore_cache: - key: deps3-{{ .Branch }}-{{ checksum "cache_key.txt" }} + key: test-{{ .Branch }}-{{ checksum "cache_key.txt" }} - run: # Update/Create Conda environment and run tests command: | @@ -25,7 +25,7 @@ jobs: conda install -yS r-lintr python setup.py test - save_cache: - key: deps3-{{ .Branch }}-{{ checksum "cache_key.txt" }} + key: test-{{ .Branch }}-{{ checksum "cache_key.txt" }} paths: - "/opt/conda/envs/esmvaltool" - ".eggs" @@ -34,15 +34,15 @@ jobs: - store_artifacts: path: test-reports/ - python3_install: + test_installation: # Test Python 3 installation - working_directory: /python3_install + working_directory: /test_installation docker: - image: continuumio/miniconda3 steps: - checkout - restore_cache: - key: python3-install-{{ .Branch }} + key: test-install-{{ .Branch }} - run: command: | . /opt/conda/etc/profile.d/conda.sh @@ -72,7 +72,7 @@ jobs: ncdump tmp.nc | ncgen -k hdf5 -o tmp.nc cdo -f nc copy tmp.nc tmp2.nc - save_cache: - key: python3-install-{{ .Branch }} + key: test-install-{{ .Branch }} paths: - "/opt/conda/pkgs" - ".eggs" @@ -86,7 +86,7 @@ jobs: when: always command: | pip install codacy-coverage - python-codacy-coverage -r test-reports/python3/coverage.xml + python-codacy-coverage -r test-reports/coverage.xml develop: # Test development installation @@ -122,29 +122,30 @@ jobs: - store_artifacts: path: /logs - doc: + documentation: # Test building documentation working_directory: /doc docker: - image: continuumio/miniconda3 steps: - checkout + - restore_cache: + key: documentation-{{ .Branch }} - run: command: | - . /opt/conda/etc/profile.d/conda.sh - set -x mkdir /logs # Install - conda update -y conda > /logs/conda.txt 2>&1 - conda env update >> /logs/conda.txt 2>&1 - set +x; conda activate esmvaltool; set -x - pip install -e .[develop] > /logs/install.txt 2>&1 + pip install -r doc/sphinx/source/requirements.txt > /logs/install.txt 2>&1 + pip install sphinx sphinx_rtd_theme >> /logs/install.txt 2>&1 # Log versions dpkg -l > /logs/versions.txt - conda env export > /logs/environment.yml pip freeze > /logs/requirements.txt # Test building documentation - python setup.py build_sphinx + MPLBACKEND=Agg python setup.py build_sphinx --warning-is-error + - save_cache: + key: documentation-{{ .Branch }} + paths: + - ".eggs" - store_artifacts: path: /logs @@ -170,11 +171,11 @@ jobs: dpkg -l > /logs/versions.txt conda env export -n base > /logs/build_environment.yml # Build conda package - conda build . -c conda-forge -c birdhouse > /logs/build_log.txt + conda build . -c conda-forge -c esmvalgroup > /logs/build_log.txt # Install Python 3 conda package conda create -y --name esmvaltool3 > /logs/conda_esmvaltool3.txt 2>&1 set +x; conda activate esmvaltool3; set -x - conda install -y esmvaltool --use-local -c conda-forge -c birdhouse + conda install -y esmvaltool --use-local -c conda-forge -c esmvalgroup conda env export > /logs/test_environment3.yml esmvaltool -h - store_artifacts: @@ -200,7 +201,7 @@ jobs: conda create -y --name esmvaltool set +x; conda activate esmvaltool; set -x # Install - conda install -y esmvaltool -c esmvalgroup -c conda-forge -c birdhouse + conda install -y esmvaltool -c conda-forge -c esmvalgroup # Log versions conda env export > /logs/environment.yml # Test installation @@ -238,8 +239,9 @@ workflows: version: 2 commit: jobs: - - python3_test - - python3_install + - test + - test_installation + - documentation nightly: triggers: - schedule: @@ -250,10 +252,10 @@ workflows: - version2_development - version2_master jobs: - - python3_test - - python3_install + - test + - test_installation - develop - - doc + - documentation - conda_build - conda_install - ncl_cdo_test diff --git a/.gitignore b/.gitignore index c0f1f23055..f53f12633e 100644 --- a/.gitignore +++ b/.gitignore @@ -83,9 +83,8 @@ test-reports/ /python_test_out.txt # Build folder -doc/sphinx/source/diag_scripts/** -doc/sphinx/source/plot_scripts/** doc/sphinx/build +doc/sphinx/source/gallery.rst # Data files *.nc diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d90788e6d..13541b5caf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,87 +7,100 @@ If you have a bug to report, please do so using the [issues tab on the ESMValToo To get started developing, follow the instructions below. More detailed instructions can be found in the [manual](https://esmvaltool.readthedocs.io) under Developer's Guide. ## Getting started + To install in development mode, follow these instructions. - - [Download and install conda](https://conda.io/projects/conda/en/latest/user-guide/install/linux.html) (this should be done even if the system in use already has a preinstalled version of conda, as problems have been reported with NCL when using such a version) - - To make the `conda` command availble, add `source /etc/profile.d/conda.sh` to your `.bashrc` file and restart your shell. If using (t)csh shell, add `source /etc/profile.d/conda.csh` to your `.cshrc`/`.tcshrc` file instead. - - Update conda: `conda update -y conda` - - Clone the ESMValTool public github repository: `git clone git@github.com:ESMValGroup/ESMValTool.git`, or one of the private github repositories (e.g. `git clone git@github.com:ESMValGroup/ESMValTool-private.git`) - - Go to the esmvaltool directory: `cd ESMValTool` - - Create the esmvaltool conda environment `conda env create --name esmvaltool --file environment.yml` - - Activate the esmvaltool environment: `conda activate esmvaltool` - - Install in development mode: `pip install -e '.[develop]'`. If you are installing behind a proxy that does not trust the usual pip-urls you can declare them with the option `--trusted-host`, e.g. `pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org -e .[develop]` - - If you want to use R diagnostics, run `Rscript esmvaltool/install/R/setup.R` to install the R dependences. - - If you want to use Julia diagnostics, run `julia esmvaltool/install/Julia/setup.jl` to install the Julia dependences. - - Test that your installation was succesful by running `esmvaltool -h`. - - If you log into a cluster or other device via `ssh` and your origin machine sends the `locale` environment via the `ssh` connection, make sure the environment is set correctly, specifically `LANG` and `LC_ALL` are set correctly (for GB English UTF-8 encoding these variables must be set to `en_GB.UTF-8`; you can set them by adding `export LANG=en_GB.UTF-8` and `export LC_ALL=en_GB.UTF-8` in your origin or login machines' `.profile`) + +- [Download and install conda](https://conda.io/projects/conda/en/latest/user-guide/install/linux.html) (this should be done even if the system in use already has a preinstalled version of conda, as problems have been reported with NCL when using such a version) +- To make the `conda` command availble, add `source /etc/profile.d/conda.sh` to your `.bashrc` file and restart your shell. If using (t)csh shell, add `source /etc/profile.d/conda.csh` to your `.cshrc`/`.tcshrc` file instead. +- Update conda: `conda update -y conda` +- Clone the ESMValTool public github repository: `git clone git@github.com:ESMValGroup/ESMValTool`, or one of the private github repositories (e.g. `git clone git@github.com:ESMValGroup/ESMValTool-private`) +- Go to the esmvaltool directory: `cd ESMValTool` +- Create the esmvaltool conda environment `conda env create --name esmvaltool --file environment.yml` +- Activate the esmvaltool environment: `conda activate esmvaltool` +- Install in development mode: `pip install -e '.[develop]'`. If you are installing behind a proxy that does not trust the usual pip-urls you can declare them with the option `--trusted-host`, e.g. `pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org -e .[develop]` +- If you want to use R diagnostics, run `Rscript esmvaltool/install/R/setup.R` to install the R dependences. +- If you want to use Julia diagnostics, run `julia esmvaltool/install/Julia/setup.jl` to install the Julia dependences. +- Test that your installation was succesful by running `esmvaltool -h`. +- If you log into a cluster or other device via `ssh` and your origin machine sends the `locale` environment via the `ssh` connection, make sure the environment is set correctly, specifically `LANG` and `LC_ALL` are set correctly (for GB English UTF-8 encoding these variables must be set to `en_GB.UTF-8`; you can set them by adding `export LANG=en_GB.UTF-8` and `export LC_ALL=en_GB.UTF-8` in your origin or login machines' `.profile`) + +## Using the development version of the ESMValTool Core package + +If you need the latest developments of the ESMValTool Core package, +you can install that into the same conda environment: + +- Clone the ESMValTool Core github repository: `git clone git@github.com:ESMValGroup/ESMValCore`) +- Go to the esmvalcore directory: `cd ESMValCore` +- Update the esmvaltool conda environment `conda env update --name esmvaltool --file environment.yml` +- Activate the esmvaltool environment: `conda activate esmvaltool` +- Install `esmvalcore` in development mode: `pip install -e '.[develop]'`. ## Running tests + Go to the directory where the repository is cloned and run `python setup.py test --installation`. Tests will also be run automatically by [CircleCI](https://circleci.com/gh/ESMValGroup/ESMValTool). ## Code style + To increase the readability and maintainability or the ESMValTool source code, we aim to adhere to best practices and coding standards. All pull requests are reviewed and tested by one or more members of the core development team. For code in all languages, it is highly recommended that you split your code up in functions that are short enough to view without scrolling. ### Python + The standard document on best practices for Python code is [PEP8](https://www.python.org/dev/peps/pep-0008/) and there is [PEP257](https://www.python.org/dev/peps/pep-0257/) for documentation. We make use of [numpy style docstrings](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html) to document Python functions that are visible on [readthedocs](https://esmvaltool.readthedocs.io). Most formatting issues in Python code can be fixed automatically by running the commands -``` -isort some_file.py -``` + + isort some_file.py + to sort the imports in the standard way and -``` -yapf -i some_file.py -``` + + yapf -i some_file.py + to add/remove whitespace as required by the standard. To check if your code adheres to the standard, go to the directory where the repository is cloned, e.g. `cd ESMValTool`. and run -``` -prospector esmvaltool/diag_scripts/your_diagnostic/your_script.py -``` + + prospector esmvaltool/diag_scripts/your_diagnostic/your_script.py + Run -``` -python setup.py lint -``` + + python setup.py lint + to see the warnings about the code style of the entire project. We use `pycodestyle` on CircleCI to automatically check that there are no formatting mistakes and Codacy for monitoring (Python) code quality. Running prospector locally will give you quicker and sometimes more accurate results. ### NCL + Because there is no standard best practices document for NCL, we use [PEP8](https://www.python.org/dev/peps/pep-0008/) for NCL code as well, with some minor adjustments to accomodate for differences in the languages. The most important difference is that for NCL code the indentation should be 2 spaces instead of 4. ### R + A document on best practices for R is [Hadley Wickham's R Style Guide](http://r-pkgs.had.co.nz/style.html). We partially check adherence to this style guide by using [lintr](https://cran.r-project.org/web/packages/lintr/index.html) on CircleCI. In the future we would also like to make use of [goodpractice](https://cran.r-project.org/web/packages/goodpractice/index.html) to assess the quality of R code. ### YAML + Please use `yamllint` to check that your YAML files do not contain mistakes. ## Documentation ### What should be documented -Any code documentation that is visible on [readthedocs](https://esmvaltool.readthedocs.io) should be well written and adhere to the standards for documentation for the respective language. Recipes should have a page in the *Recipes* section on readthedocs. This is also the place to document recipe options for the diagnostic scripts used in those recipes. Note that there is no need to write extensive documentation for functions that are not visible on readthedocs. However, adding a one line docstring describing what a function does is always a good idea. +Any code documentation that is visible on [readthedocs](https://esmvaltool.readthedocs.io) should be well written and adhere to the standards for documentation for the respective language. Recipes should have a page in the _Recipes_ section on readthedocs. This is also the place to document recipe options for the diagnostic scripts used in those recipes. Note that there is no need to write extensive documentation for functions that are not visible on readthedocs. However, adding a one line docstring describing what a function does is always a good idea. ### How to build the documentation locally + Go to the directory where the repository is cloned and run -``` -python setup.py build_sphinx -Ea -``` + + python setup.py build_sphinx -Ea + Make sure that your newly added documentation builds without warnings or errors. ## Pull requests and code review -New development should preferably be done in a new git branch in the main ESMValTool github repository. However, for scientists requiring confidentiality, private repositories are available. It is recommended that you open a pull request early, as this will cause CircleCI to run the unit tests and Codacy to analyse your code. It's also easier to get help from other developers if your code is visible in a pull request. + +New development should preferably be done in a new git branch in the main ESMValTool github repository. However, for scientists requiring confidentiality, private repositories are available. It is recommended that you open a pull request early (in draft mode), as this will cause CircleCI to run the unit tests and Codacy to analyse your code. It's also easier to get help from other developers if your code is visible in a pull request. You can view the results of the automatic checks below your pull request. If one of the tests shows a red cross instead of a green approval sign, please click the link and try to solve the issue. Note that this kind of automated checks make it easier to review code, but they are not flawless, so occasionally Codacy will report false positives. ### Diagnostic script contributions -A pull request with diagnostic code should preferably not introduce new Codacy issues. However, we understand that there is a limit to how much time can be spend on polishing code, so up to 10 new (non-trivial) issues is still an acceptable amount. -Never make changes to the esmvaltool core, e.g. a new preprocessor function, in diagnostic script pull requests. If you need to make this kind of change, create a separate pull request for it in the public repository. - -### Contributing to the core of ESMValTool -Contributions to the core of ESMValTool should - - Go into the public repository. - - Preferably be covered by unit tests. Unit tests are mandatory for new preprocessor functions or modifications to existing functions. If you do not know how to start with writing unit tests, let us know in a comment on the pull request and a core development team member will try to help you get started. - - Be accompanied by appropriate documentation. - - Introduce no new issues on Codacy (but note that style issues reported in unit test code are not worth the effort of fixing). +A pull request with diagnostic code should preferably not introduce new Codacy issues. However, we understand that there is a limit to how much time can be spend on polishing code, so up to 10 new (non-trivial) issues is still an acceptable amount. diff --git a/README.md b/README.md index c37fd0e6ad..439c0b6dc3 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,26 @@ # ESMValTool + [![Documentation Status](https://readthedocs.org/projects/esmvaltool/badge/?version=version2_development)](https://esmvaltool.readthedocs.io/en/version2_development/?badge=version2_development) [![DOIBadge](https://img.shields.io/badge/DOI-10.17874%2Fac8548f0315-blue.svg)](https://doi.org/10.17874/ac8548f0315) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ESMValGroup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![CircleCI](https://circleci.com/gh/ESMValGroup/ESMValTool.svg?style=svg)](https://circleci.com/gh/ESMValGroup/ESMValTool) -[![Codacy Coverage Badge](https://api.codacy.com/project/badge/Coverage/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/app/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Coverage) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/app/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Grade) +[![Codacy Coverage Badge](https://api.codacy.com/project/badge/Coverage/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/app/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Coverage) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/79bf6932c2e844eea15d0fb1ed7e415c)](https://www.codacy.com/app/ESMValGroup/ESMValTool?utm_source=github.com&utm_medium=referral&utm_content=ESMValGroup/ESMValTool&utm_campaign=Badge_Grade) [![Docker Build Status](https://img.shields.io/docker/build/esmvalgroup/esmvaltool.svg)](https://hub.docker.com/r/esmvalgroup/esmvaltool/) [![Anaconda-Server Badge](https://anaconda.org/esmvalgroup/esmvaltool/badges/installer/conda.svg)](https://conda.anaconda.org/esmvalgroup) - ESMValTool: A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP # Getting started + This is the development branch for version 2 of ESMValTool. ESMValTool version 2 is under rapid development, an installation from source is recommended at the moment. ## Installing from source [recommended] + Please see [CONTRIBUTING.md](https://github.com/ESMValGroup/ESMValTool/blob/version2_development/CONTRIBUTING.md) for instructions on installing ESMValTool from source. ## Installing from Anaconda + The Anaconda package can be found on [ESMValGroup Anaconda Channel.](https://anaconda.org/ESMValGroup) First install gcc, g++ and gfortran if these are not available on your system. On Debian based systems, this can be done by @@ -25,28 +28,29 @@ running `apt install build-essential gfortran`. In order to run Julia diagnostics, you will also need to [install Julia](https://julialang.org/downloads/) version 1 or greater. If you already installed Anaconda, you can install ESMValTool by running: -``` -conda install -c esmvalgroup esmvaltool -c conda-forge -c birdhouse -``` + + conda install -c esmvalgroup -c conda-forge esmvaltool ## Using Docker + ESMValTool Docker images are automatically generated by Docker Hub. Run the command below to pull the most recent ESMValTool image. -``` -docker pull esmvalgroup/esmvaltool -``` + + docker pull esmvalgroup/esmvaltool + Example use: -``` -[sudo] docker run -ti esmvalgroup/esmvaltool -``` + + [sudo] docker run -ti esmvalgroup/esmvaltool ## Running ESMValTool -- Review `config-user.yml`. To customize for your system, create a copy, edit and use the command line option `-c` to instruct `esmvaltool` to use your custom configuration. -- Available recipes are located in the directory `esmvaltool/recipes`. -- Run e.g. `esmvaltool -c ~/config-user.yml examples/recipe_python.yml + +- Review `config-user.yml`. To customize for your system, create a copy, edit and use the command line option `-c` to instruct `esmvaltool` to use your custom configuration. +- Available recipes are located in the directory `esmvaltool/recipes`. +- Run e.g. \`esmvaltool -c ~/config-user.yml examples/recipe_python.yml ## Getting help + The easiest way to get help if you cannot find the answer in the documentation on [readthedocs](https://esmvaltool.readthedocs.io), is to open an [issue on GitHub](https://github.com/ESMValGroup/ESMValTool/issues). ## Contributing -If you would like to contribute a new diagnostic or feature, please have a look at [CONTRIBUTING.md](https://github.com/ESMValGroup/ESMValTool/blob/version2_development/CONTRIBUTING.md). +If you would like to contribute a new diagnostic or feature, please have a look at [CONTRIBUTING.md](https://github.com/ESMValGroup/ESMValTool/blob/version2_development/CONTRIBUTING.md). diff --git a/doc/sphinx/source/codedoc2/esmvalcore.cmor.rst b/doc/sphinx/source/codedoc2/esmvalcore.cmor.rst new file mode 100644 index 0000000000..7cf43791cf --- /dev/null +++ b/doc/sphinx/source/codedoc2/esmvalcore.cmor.rst @@ -0,0 +1,19 @@ +CMOR functions +============== + +.. automodule:: esmvalcore.cmor + +Checking compliance +------------------- + +.. automodule:: esmvalcore.cmor.check + +Fixing issues +------------- + +.. automodule:: esmvalcore.cmor.fix + +Using CMOR tables +----------------- + +.. automodule:: esmvalcore.cmor.table diff --git a/doc/sphinx/source/codedoc2/esmvaltool.preprocessor.rst b/doc/sphinx/source/codedoc2/esmvalcore.preprocessor.rst similarity index 54% rename from doc/sphinx/source/codedoc2/esmvaltool.preprocessor.rst rename to doc/sphinx/source/codedoc2/esmvalcore.preprocessor.rst index aec8fda022..692d10faec 100644 --- a/doc/sphinx/source/codedoc2/esmvaltool.preprocessor.rst +++ b/doc/sphinx/source/codedoc2/esmvalcore.preprocessor.rst @@ -1,4 +1,4 @@ Preprocessor functions ====================== -.. automodule:: esmvaltool.preprocessor +.. automodule:: esmvalcore.preprocessor diff --git a/doc/sphinx/source/codedoc2/esmvaltool.cmor.rst b/doc/sphinx/source/codedoc2/esmvaltool.cmor.rst deleted file mode 100644 index 6b23b5e1d9..0000000000 --- a/doc/sphinx/source/codedoc2/esmvaltool.cmor.rst +++ /dev/null @@ -1,19 +0,0 @@ -CMOR functions -============== - -.. automodule:: esmvaltool.cmor - -Checking compliance -------------------- - -.. automodule:: esmvaltool.cmor.check - -Fixing issues -------------- - -.. automodule:: esmvaltool.cmor.fix - -Using CMOR tables ------------------ - -.. automodule:: esmvaltool.cmor.table diff --git a/doc/sphinx/source/codedoc2/esmvaltool.rst b/doc/sphinx/source/codedoc2/esmvaltool.rst index a2c392d4be..feb68adf18 100644 --- a/doc/sphinx/source/codedoc2/esmvaltool.rst +++ b/doc/sphinx/source/codedoc2/esmvaltool.rst @@ -6,8 +6,8 @@ library. This section documents the public API of ESMValTool. .. toctree:: - esmvaltool.preprocessor - esmvaltool.cmor + esmvalcore.preprocessor + esmvalcore.cmor esmvaltool.diag_scripts.shared esmvaltool.diag_scripts esmvaltool.diag_scripts.ocean diff --git a/doc/sphinx/source/conf.py b/doc/sphinx/source/conf.py index 5a0b88a014..96bddfcf75 100644 --- a/doc/sphinx/source/conf.py +++ b/doc/sphinx/source/conf.py @@ -21,7 +21,12 @@ os.chdir(os.path.abspath(os.path.dirname(__file__))) sys.path.insert(0, os.path.abspath('./../../..')) -from esmvaltool._version import __version__ +from esmvaltool import __version__ + +# Generate gallery +sys.path.append(os.path.dirname(__file__)) +import generate_gallery +generate_gallery.main() # -- General configuration ------------------------------------------------ @@ -52,15 +57,17 @@ #autodoc_mock_imports = ['cf_units', 'iris', 'matplotlib', 'numpy', 'cartopy', 'cftime', 'netCDF4', 'yaml', 'PIL', 'prov', 'scipy', 'psutil', 'shapely', 'stratify', 'ESMF'] autodoc_mock_imports = [ - 'iris', + 'cartopy', 'cftime', + 'cf_units', + 'ESMF', + 'esmvalcore', + 'iris', 'PIL', 'prov', + 'psutil', 'scipy', 'stratify', - 'ESMF', - 'cartopy', - 'cf_units', ] # Add any paths that contain templates here, relative to this directory. diff --git a/doc/sphinx/source/developer_guide2/index.rst b/doc/sphinx/source/developer_guide2/index.rst deleted file mode 100644 index ea65b5dae0..0000000000 --- a/doc/sphinx/source/developer_guide2/index.rst +++ /dev/null @@ -1,9 +0,0 @@ -################# -Developer's Guide -################# - -.. include:: new_diagnostic.inc -.. include:: porting.inc -.. include:: git_repository.inc -.. include:: core_team.inc -.. include:: config_developer.inc diff --git a/doc/sphinx/source/developer_guide2/config_developer.inc b/doc/sphinx/source/esmvalcore/config.inc similarity index 74% rename from doc/sphinx/source/developer_guide2/config_developer.inc rename to doc/sphinx/source/esmvalcore/config.inc index e6a6dfd1d4..9695430621 100644 --- a/doc/sphinx/source/developer_guide2/config_developer.inc +++ b/doc/sphinx/source/esmvalcore/config.inc @@ -1,4 +1,4 @@ -.. _config_developer: +.. _config: ******************* Configuration files @@ -9,18 +9,16 @@ There are several configuration files in ESMValTool: - config-user.yml - config-developer.yml - config-references.yml - - environment.yml + - config-logging.yml +User configuration file +======================= -User config file -================ +See Section -The ``config-user.yml`` file is the only user-facing configuration file and is -described in the user guide section of this document. - -Developer config file -===================== +Developer configuration file +============================ This configuration file describes the file system structure for several key projects (CMIP5, CMIP6) on several key machines (BADC, CP4CDS, DKRZ, ETHZ, @@ -56,8 +54,8 @@ values. The resulting real path would look something like this: MOHC/HadGEM2-CC/rcp85/mon/ocean/Omon/r1i1p1/latest/tos -References config file -================================ +References configuration file +============================= The ``config-references.yml`` file is the full list of ESMValTool authors, references and projects. Each author, project and reference in the documentation @@ -85,16 +83,8 @@ documentation section: All four items here are named people, references and projects listed in the ``config-references.yml`` file. +Logging configuration file +========================== - -Environment config file -================================ - -This is the conda envronment which informs conda as to which packages -and which versions are needed in order to install ESMValTool. -It is called in the update and install commands: - -.. code-block:: bash - - conda env install --name esmvaltool --file ESMValTool/environment.yml - conda env update --name esmvaltool --file ESMValTool/environment.yml +.. warning:: + Section to be added diff --git a/doc/sphinx/source/esmvalcore/datafinder.inc b/doc/sphinx/source/esmvalcore/datafinder.inc new file mode 100644 index 0000000000..6759018c27 --- /dev/null +++ b/doc/sphinx/source/esmvalcore/datafinder.inc @@ -0,0 +1,7 @@ +.. _datafinder: + +*********** +Data finder +*********** + +Documentation of the _data_finder.py module (incl. _download.py?) diff --git a/doc/sphinx/source/esmvalcore/index.rst b/doc/sphinx/source/esmvalcore/index.rst new file mode 100644 index 0000000000..f7c63389d0 --- /dev/null +++ b/doc/sphinx/source/esmvalcore/index.rst @@ -0,0 +1,8 @@ +############### +ESMValTool Core +############### + +.. include:: config.inc +.. include:: datafinder.inc +.. include:: recipe.inc +.. include:: preprocessor.inc diff --git a/doc/sphinx/source/esmvalcore/preprocessor.inc b/doc/sphinx/source/esmvalcore/preprocessor.inc new file mode 100644 index 0000000000..7f769430bb --- /dev/null +++ b/doc/sphinx/source/esmvalcore/preprocessor.inc @@ -0,0 +1,475 @@ +.. _preprocessor: + +************ +Preprocessor +************ +The ESMValTool preprocessor can be used to perform a broad range of operations +on the input data before diagnostics or metrics are applied. The +preprocessor performs these operations in a centralized, documented and +efficient way, thus reducing the data processing load on the diagnostics side. + +Each of the preprocessor operations is written in a dedicated python module and +all of them receive and return an Iris cube, working sequentially on the data +with no interactions between them. The order +in which the preprocessor operations is applied is set by default in order to +minimize the loss of information due to, for example, temporal and spatial +subsetting or multi-model averaging. Nevertheless, the user is free to change +such order to address specific scientific requirements, but keeping in mind +that some operations must be necessarily performed in a specific order. This is +the case, for instance, for multi-model statistics, which required the model to +be on a common grid and therefore has to be called after the regridding module. + +In this section, each of the preprocessor modules is described in detail +following the default order in which they are applied: + +* `Variable derivation`_. +* `CMOR check and dataset-specific fixes`_. +* `Vertical interpolation`_. +* `Land/Sea/Ice masking`_. +* `Horizontal regridding`_. +* `Masking of missing values`_. +* `Multi-model statistics`_. +* `Time operations`_. +* `Area operations`_. +* `Volume operations`_. +* `Unit conversion`_. + + +Variable derivation +=================== + +The variable derivation module allows to derive variables which are not in the +CMIP standard data request using standard variables as input. The typical use +case of this operation is the evaluation of a variable which is only available +in an observational dataset but not in the models. In this case a derivation +function is provided by the ESMValTool in order to calculate the variable and +perform the comparison. For example, several observational datasets deliver +total column ozone as observed variable (`toz`), but CMIP models only provide +the ozone 3D field. In this case, a derivation function is provided to +vertically integrate the ozone and obtain total column ozone for direct +comparison with the observations. + +To contribute a new derived variable, it is also necessary to define a name for +it and to provide the corresponding CMOR table. This is to guarantee the proper +metadata definition is attached to the derived data. Such custom CMOR tables +are collected as part of the `ESMValTool core package +`_. By default, the variable +derivation will be applied only if not already available in the input data, but +the derivation can be forced by setting the appropriate flag. + +.. code-block:: yaml + + variables: + toz: + derive: true + force_derivation: false + +The required arguments for this module are two boolean switches: +* derive: activate variable derivation +* force_derivation: force variable derivation even if the variable is +directly available in the input data. + +See also :func:`esmvalcore.preprocessor.derive`. + + +CMOR check and dataset-specific fixes +====================================== +.. warning:: + Documentation of _reformat.py, check.py and fix.py to be added + + +Vertical interpolation +====================== +.. warning:: + Documentation of _regrid.py (part 1) to be added + + +Land/Sea/Ice masking +==================== + +Certain metrics and diagnostics need to be computed and performed on specific +domains on the globe. The ESMValTool preprocessor supports filtering +the input data on continents, oceans/seas and ice. This is achived by masking +the model data and keeping only the values associated with grid points that +correspond to, e.g., land, ocean or ice surfaces, as specified by the +user. Where possible, the masking is realized using the standard mask files +provided together with the model data as part of the CMIP data request (the +so-called fx variable). In the absence of these files, the Natural Earth masks +are used: although these are not model-specific, they represent a good +approximation since they have a much higher resolution than most of the models +and they are regularly updated with changing geographical features. + +In ESMValTool, land-sea-ice masking can be done in two places: in the +preprocessor, to apply a mask on the data before any subsequent preprocessing +step and before running the diagnostic, or in the diagnostic scripts +themselves. We present both these implementations below. + +To mask out a certain domain (e.g., sea) in the preprocessor, +`mask_landsea` can be used: + +.. code-block:: yaml + + preprocessors: + preproc_mask: + mask_landsea: + mask_out: sea + +and requires only one argument: +* mask_out: either land or sea. + +The preprocessor automatically retrieves the corresponding mask (`fx: stfof` in +this case) and applies it so that sea-covered grid cells are set to +missing. Conversely, it retrieves the `fx: sftlf` mask when land need to be +masked out, respectively. If the corresponding fx file is not found (which is +the case for some models and almost all observational datasets), the +preprocessor attempts to mask the data using Natural Earth mask files (that are +vectorized rasters). As mentioned above, the spatial resolution of the the +Natural Earth masks are much higher than any typical global model (10m for +land and 50m for ocean masks). + +Note that for masking out ice sheets, the preprocessor uses a different +function, to ensure that both land and sea or ice can be masked out without +losing generality. To mask ice out, `mask_landseaice` can be used: + +.. code-block:: yaml + + preprocessors: + preproc_mask: + mask_landseaice: + mask_out: ice + +and requires only one argument: +* mask_out: either landsea or ice. + +As in the case of `mask_landsea`, the preprocessor automatically retrieves the +`fx: sftgif` mask. + +Another option is to just read the fx masks as any other CMOR variable and use +it within a diagnostic script. This can be done in the variable dictionary by +specifiying the desired fx variables (masks): + +.. warning:: + Code snippet, text and link to function to be added (after #1037 and #1075 + are closed). + + +Horizontal regridding +===================== +.. warning:: + Documentation of _regrid.py (part 2) to be added + + +Masking of missing values +========================= +.. warning:: + Documentation of _mask.py (part 2) to be added + + +Multi-model statistics +====================== + +.. warning:: + Documentation of _multimodel.py to be added. + +Information on maximum memory required: In the most general case, we can set +upper limits on the maximum memory the analysis will require: + +Ms = (R + N) x F_eff - F_eff - when no multimodel analysis is performed; +Mm = (2R + N) x F_eff - 2F_eff - when multimodel analysis is performed; + +where + +Ms: maximum memory for non-multimodel module +Mm: maximum memory for multimodel module +R: computational efficiency of module (typically 2-3) +N: number of datasets +F_eff: average size of data per dataset where F_eff = e x f x F +where e is the factor that describes how lazy the data is (e = 1 for fully +realized data) and f describes how much the data was shrunk by the immediately +previous module e.g. time extraction, area selection or level extraction; note +that for fix_data f relates only to the time extraction, if data is exact in +time (no time selection) f = 1 for fix_data. + +So for cases when we deal with a lot of datasets (R + N = N), data is fully +realized, assuming an average size of 1.5GB for 10 years of 3D netCDF data, N +datasets will require: + +Ms = 1.5 x (N - 1) GB +Mm = 1.5 x (N - 2) GB + + +Time operations +=============== + +The time operations module contains a broad set of functions to subset data and apply +statistical operators along the temporal coordinate of the input data: + +| `1. extract_time`_: extract a specified time range from a cube. +| `2. extract_season`_: extract only the times that occur within a specific + season. +| `3. extract_month`_: extract only the times that occur within a specific + month. +| `4. time_average`_: take the weighted average over the entire time dimension. +| `5. seasonal_mean`_: produce a mean for each season (DJF, MAM, JJA, SON) +| `6. annual_mean`_: produce an annual or decadal mean. +| `7. regrid_time`_: align the time axis of each dataset to have common time + points and calendars. + +1. extract_time +--------------- + +This function subsets a dataset between two points in times. It removes all +times in the dataset before the first time and after the last time point. +The required arguments are relatively self explanatory: + +* start_year +* start_month +* start_day +* end_year +* end_month +* end_day + +These start and end points are set using the datasets native calendar. All six +arguments should be given as integers, named month strings (e.g., March) will +not be accepted. Note that start_year and end_year can be omitted, as they are +filled in automatically from the dataset definition if not specified +here (end_year will be the value in the dataset definition + 1). + +See also :func:`esmvalcore.preprocessor.extract_time`. + +2. extract_season +----------------- + +Extract only the times that occur within a specific season. + +This function only has one argument: + +* season: DJF, MAM, JJA, or SON + +Note that this function does not change the time resolution. If your original +data is in monthly time resolution, then this function will return three +monthly datapoints per year. + +To calculate a seasonal average, this function needs to be combined with the +seasonal_mean function, below. + +See also :func:`esmvalcore.preprocessor.extract_season`. + +3. extract_month +---------------- + +The function extracts the times that occur within a specific month. +This function only has one argument: + +* month: [1-12] + +Note that named month strings will not be accepted. + +See also :func:`esmvalcore.preprocessor.extract_month`. + +4. time_average +--------------- + +This function takes the weighted average over the time dimension. This +function requires no arguments and removes the time dimension of the cube. + +See also :func:`esmvalcore.preprocessor.time_average`. + +5. seasonal_mean +---------------- + +This function produces a seasonal mean for each season (DJF, MAM, JJA, SON). +Note that this function will not check for missing time points. For instance, +if the DJF field is selected, but the input datasets starts on January 1st, +the first DJF field will only contain data from January and February. + +We recommend using the extract_time to start the dataset from the following +December and remove such biased initial datapoints. + +See also :func:`esmvalcore.preprocessor.seasonal_mean`. + +6. annual_mean +-------------- + +This function produces an annual or a decadal mean. It takes a single boolean +switch as argument: +* decadal: set this to true to calculate decadal averages instead of annual +averages. + +See also :func:`esmvalcore.preprocessor.annual_mean`. + +7. regrid_time +-------------- + +This function aligns the time points of each component dataset to allow the +subtraction of two Iris cubes from different datasets. The operation makes the +datasets time points common and sets common calendars; it also resets the time +bounds and auxiliary coordinates to reflect the artifically shifted time +points. The current implementation works only for monthly and daily data. + +See also :func:`esmvalcore.preprocessor.regrid_time`. + + +Area operations +=============== + +.. warning:: + Need to be adapted after renaming action in #1123 + +The area manipulation module contains the following preprocessor functions: + +| `1. extract_region`_: extract a region from a cube based on lat/lon corners. +| `2. zonal_means`_: calculate the zonal or meridional means. +| `3. area_statistics`_: calculate the average value over a region. +| `4. extract_named_regions`_: extract a region from a cube given its name. + +1. extract_region +----------------- + +This function masks data outside a rectagular region requested. The boundairies +of the region are provided as latitude and longitude coordinates in the +arguments: + +* start_longitude +* end_longitude +* start_latitude +* end_latitude + +Note that this function can only be used to extract a rectangular region. + +See also :func:`esmvalcore.preprocessor.extract_region`. + +2. zonal_means +-------------- + +The function calculates the zonal or meridional means. While this function is +named `zonal_mean`, it can be used to apply several different operations in +an zonal or meridional direction. +This function takes two arguments: + +* coordinate: Which direction to apply the operation: latitude or longitude. +* mean_type: Which operation to apply: mean, std_dev, variance, median, min or +* max. + +See also :func:`esmvalcore.preprocessor.zonal_means`. + +3. area_statistics +------------------ + +This function calculates the average value over a region - weighted by the +cell areas of the region. + +This function takes one argument: +* operator: the name of the operation to apply. + +This function can be used to apply several different operations in the +horizonal plane: mean, standard deviation, median variance, minimum and +maximum. + +Note that this function is applied over the entire dataset. If only a specific +region, depth layer or time period is required, then those regions need to be +removed using other preprocessor operations in advance. + +See also :func:`esmvalcore.preprocessor.area_statistics`. + +4. extract_named_regions +------------------------ + +This function extract a specific named region from the data. +This function takes onw argument: + +* regions: either a string or a list of strings of named regions. + +Note that the dataset must have a `region` cooordinate which includes a list of +strings as values. This function then matches the named regions against the +requested string. + +See also :func:`esmvalcore.preprocessor.extract_named_regions`. + + +Volume operations +================= + +The volume operations module contains the following preprocessor functions: + +| `1. extract_volume`_: extract a specific depth range from a cube. +| `2. volume_statistics`_: calculate the volume-weighted average. +| `3. depth_integration`_: integrate over the depth dimension. +| `4. extract_transect`_: extract data along a line of constant latitude or + longitude. +| `5. extract_trajectory`_: extract data along a specified trajectory. + +1. extract_volume +----------------- + +This function extracts a specific range in the z-direction from a cube. +This function takes two arguments: + +* z_min: minimum in the z direction +* z_max: maximum in the z direction + +Note that this requires the requested z-coordinate range to be the same sign as +the Iris cube, i.e. if the cube has z-coordinate as negative, then z_min and +z_max need to be negative numbers. + +See also :func:`esmvalcore.preprocessor.extract_volume`. + +2. volume_statistics +-------------------- + +This function calculates the volume-weighted average across three dimensions, +but maintains the time dimension. + +This function takes one argument: +* operator: operation to apply over the volume (at the moment only mean is implemented) + +No depth coordinate is required as this is determined by Iris. This +function works best when the fx files provide the cell volume. + +See also :func:`esmvalcore.preprocessor.volume_statistics`. + + +3. depth_integration +-------------------- + +This function integrates over the depth dimension. It performs a weighted sum +along the z-coordinate, and removes the z direction of the output cube. It takes no arguments. + +See also :func:`esmvalcore.preprocessor.depth_integration`. + +4. extract_transect +------------------- + +This function extracts data along a line of constant latitude or longitude. +This function takes two arguments, although only one is strictly required: +* latitude +* longitude + +One of these arguments needs to be set to a float, and the other can then be +either ignored or set to a minimum or maximum value. For example, if latitude +is set to 0 and longitude is left blank, the function would produce a cube +along the equator. If latitude is set to to 0 and longitude to `[40., 100.]` it +will produce a transect of the equator in the Indian Ocean. + +See also :func:`esmvalcore.preprocessor.extract_transect`. + +5. extract_trajectory +--------------------- + +This function extracts data along a specified trajectory. It requires three +arguments: +* latitude_points: list of latitude coordinates +* longitude_points: list of longiute coordinates +* number_points: if two points are provided, the `number_points` argument is +used to set the number of places to extract between the two end points. + +If more than two points are provided, then extract_trajectory will produce a +cube which has extrapolated the data of the cube to those points, and +`number_points` is not needed. Note that this function uses the expensive +interpolate method, but it may be necessary for irregular grids. + +See also :func:`esmvalcore.preprocessor.extract_trajectory`. + + +Unit conversion +=============== diff --git a/doc/sphinx/source/esmvalcore/recipe.inc b/doc/sphinx/source/esmvalcore/recipe.inc new file mode 100644 index 0000000000..77ee1cdacf --- /dev/null +++ b/doc/sphinx/source/esmvalcore/recipe.inc @@ -0,0 +1,185 @@ +.. _recipe: + +***************** +ESMValTool recipe +***************** + +Recipes are the instructions telling ESMValTool about the user who wrote the +recipe, the datasets which need to be run, the preprocessors that need to be +applied, and the diagnostics which need to be run over the preprocessed data. +This information is provided to ESMValTool in the recipe sections: +`Documentation`_, `Datasets`_, `Preprocessors`_ and `Diagnostics`_, +respectively. + + +Documentation +============= + +The documentation section includes: + +- The recipe's author's user name +- A description of the recipe +- The user name of the maintainer +- A list of scientific references +- the project or projects associated with the recipe. + +For example, please see the documentation section from the recipe: +recipe_ocean_amoc.yml. + +.. code-block:: yaml + + documentation: + description: | + Recipe to produce time series figures of the derived variable, the + Atlantic meriodinal overturning circulation (AMOC). + This recipe also produces transect figures of the stream functions for + the years 2001-2004. + + authors: + - demo_le + + maintainer: + - demo_le + + references: + - demora2018gmd + + projects: + - ukesm + +Note that the authors, projects, and references will need to be included in the +``config-references.yml`` file. The author name uses the format: +`surname_name`. For instance, Mickey Mouse would be: `mouse_mickey`. +Also note that this username is unlikely to be the same as the github +user name. + + + +Datasets +======== + +The datasets section includes: + +- dataset name +- Project (CMIP5 or 6, observations...) +- experiment (historical/ RCP8.5 etc...) +- Ensemble member +- The time range +- The model grid, gn or gr, (CMIP6 only). + +For example, a datasets section could be: + +.. code-block:: yaml + + datasets: + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: UKESM1-0-LL, project: CMIP6, exp: historical, ensemble: r1i1p1f2, start_year: 2001, end_year: 2004, grid: gn} + + +Note that this section is not required, as datasets can also be provided in the +`Diagnostics`_ section. + + +Preprocessors +============= + +The preprocessor section of the recipe includes one or more preprocesors, each +of which may call one or several preprocessor functions. + +Each preprocessor section includes: + +- A preprocessor name. +- A list of preprocesor functions to apply +- Any Arguments given to the preprocessor functions. +- The order that the preprocesor functions are applied can also be specified using the ``custom_order`` preprocesor function. + +The following preprocessor is an example of a preprocessor that contains +multiple preprocessor functions: + +.. code-block:: yaml + + preprocessors: + prep_map: + regrid: + target_grid: 1x1 + scheme: linear + time_average: + multi_model_statistics: + span: overlap + statistics: [mean ] + +If only the default preprocessor is needed, then this section can be omitted. + + +Diagnostics +=========== + +The diagnostics section includes one or more diagnostics. Each diagnostics will +have: + +- A list of which variables to load +- A description of the variables (optional) +- Which preprocessor to apply to each variable +- The script to run +- The diagnostics can also include an optional ``additional_datasets`` section. + +The ``additional_datasets`` can add datasets beyond those listed in the the +`Datasets`_ section. This is useful if specific datasets need to be linked with +a specific diagnostics. The addition datasets can be used to add variable +specific datasets. This is also a good way to add observational datasets can be +added to the diagnostic. + +The following example, taken from recipe_ocean_example.yml, shows a diagnostic +named `diag_map`, which loads the temperature at the ocean surface between +the years 2001 and 2003 and then passes it to the prep_map preprocessor. +The result of this process is then passed to the ocean diagnostic map scipt, +``ocean/diagnostic_maps.py``. + +.. code-block:: yaml + + diagnostics: + + diag_map: + description: Global Ocean Surface regridded temperature map + variables: + tos: # Temperature at the ocean surface + preprocessor: prep_map + start_year: 2001 + end_year: 2003 + scripts: + Global_Ocean_Surface_regrid_map: + script: ocean/diagnostic_maps.py + +To define a variable/dataset combination, the keys in the diagnostic section +are combined with the keys from datasets section. If two versions of the same +key are provided, then the key in the datasets section will take precedence +over the keys in variables section. For many recipes it makes more sense to +define the ``start_year`` and ``end_year`` items in the variable section, because the +diagnostic script assumes that all the data has the same time range. + +Note that the path to the script provided in the `script` option should be +either: + +1. the absolute path to the script. +2. the path relative to the ``esmvaltool/diag_scripts`` directory. + + +As mentioned above, the datasets are provided in the `Diagnostics`_ section +in this section. However, they could also be included in the `Datasets`_ +section. + + +Brief introduction to YAML +========================== + +While .yaml is a relatively common format, maybe users may not have +encountered this language before. The key information about this format is: + +- Yaml is a human friendly markup language. +- Yaml is commonly used for configuration files. +- the syntax is relatively straightforward +- Indentation matters a lot (like python)! +- yaml is case sensitive +- A yml tutorial is available here: https://learnxinyminutes.com/docs/yaml/ +- A yml quick reference card is available here: https://yaml.org/refcard.html +- ESMValTool uses the yamllint linter tool: http://www.yamllint.com diff --git a/doc/sphinx/source/esmvaldiag/config_developer.inc b/doc/sphinx/source/esmvaldiag/config_developer.inc new file mode 100644 index 0000000000..12fe0ecf6c --- /dev/null +++ b/doc/sphinx/source/esmvaldiag/config_developer.inc @@ -0,0 +1,5 @@ +.. _config-developer: + +**************************** +Developer configuration file +**************************** diff --git a/doc/sphinx/source/developer_guide2/git_repository.inc b/doc/sphinx/source/esmvaldiag/git_repository.inc similarity index 84% rename from doc/sphinx/source/developer_guide2/git_repository.inc rename to doc/sphinx/source/esmvaldiag/git_repository.inc index 6e5c832c0b..402f999320 100644 --- a/doc/sphinx/source/developer_guide2/git_repository.inc +++ b/doc/sphinx/source/esmvaldiag/git_repository.inc @@ -1,8 +1,8 @@ -.. _git_repository: +.. _git-repository: -************** -Git repository -************** +*************** +GitHub Workflow +*************** Basics ====== @@ -15,7 +15,7 @@ There are *two* ESMValTool GitHub repositories available: #. The **PRIVATE** GitHub repository is restricted to the ESMValTool Development Team. This repository is only accessible to ESMValTool developers that have accepted the terms of use for the ESMValTool development environment. The use of the ESMValTool software and access to the private ESMValTool GitHub repository constitutes acceptance of these terms. *When you fork or copy this repository, you must ensure that you do not copy the PRIVATE repository into an open domain!* The PRIVATE ESMValTool repository for the ESMValTool development team is located at https://github.com/ESMValGroup/ESMValTool-private -All developments can be made in either of the two repositories. The creation of *FEATURE BRANCHES* (see below), however, is restricted to registered ESMValTool developers in both repositories. We encourage all developers to join the ESMValTool development team. Please contact the ESMValTool Core Development Team (Section :ref:`core_dev_team`) if you want to join the ESMValTool development team. +All developments can be made in either of the two repositories. The creation of *FEATURE BRANCHES* (see below), however, is restricted to registered ESMValTool developers in both repositories. We encourage all developers to join the ESMValTool development team. Please contact the :ref:`ESMValTool Core Development Team ` if you want to join the ESMValTool development team. The PRIVATE GitHub repository offers a central protected environment for ESMValTool developers who would like to keep their contributions undisclosed (e.g., unpublished scientific work, work in progress by PhD students) while at the same time benefiting from the possibilities of collaborating with other ESMValTool developers and having a backup of their work. *FEATURE BRANCHES* created in the PRIVATE repository are only visible to the ESMValTool development team but not to the public. The concept of a PRIVATE repository has proven to be very useful to efficiently share code during the development across institutions and projects in a common repository without having the contributions immediately accessible to the public. Both, the PUBLIC and the PRIVATE repository, contain the following kinds of branches: @@ -27,15 +27,16 @@ Both, the PUBLIC and the PRIVATE repository, contain the following kinds of bran Access rights ============= -* Write access to the *MASTER* and *DEVELOPMENT BRANCH* in both, the PUBLIC and the PRIVATE GitHub repositories, is restricted to the ESMValTool core development team. +* Write access to the *MASTER* and *DEVELOPMENT BRANCH* in both, the PUBLIC and the PRIVATE GitHub repositories, is restricted to the :ref:`ESMValTool Core Development Team `. * *FEATURE BRANCHES* in both the PUBLIC and the PRIVATE repository can be created by all members of the ESMValTool development team (i.e. members in the GitHub organization "ESMValGroup"). If needed, branches can be individually write-protected within each repository so that other developers cannot accidently push changes to these branches. -The *MASTER BRANCH* of the PRIVATE repository will be regularly synchronized with the *MASTER BRANCH* of the PUBLIC repository (currently by hand). This ensures that they are identical at all times (see schematic in :ref:`fig_git`). The recommended workflow for members of the ESMValTool development team is to create additional *FEATURE BRANCHES* in either the PUBLIC or the PRIVATE repository, see further instructions below. +The *MASTER BRANCH* of the PRIVATE repository will be regularly synchronized with the *MASTER BRANCH* of the PUBLIC repository (currently by hand). This ensures that they are identical at all times (see schematic in Figure :numref:`fig-git`). The recommended workflow for members of the ESMValTool development team is to create additional *FEATURE BRANCHES* in either the PUBLIC or the PRIVATE repository, see further instructions below. -.. _fig_git: -.. figure:: /figures/git_diagram.png - :align: center - :width: 10cm +.. _fig-git: + +.. figure:: /figures/git_diagram.png + :width: 10cm + :align: center Schematic diagram of the ESMValTool GitHub repositories. @@ -143,9 +144,9 @@ To share your work and to have an online backup, push your local development to Pull requests ------------- -Once your development is completely finished, go to the GitHub website of the ESMValTool repository and switch to your *FEATURE BRANCH*. You can then initiate a pull request by clicking on the button "New pull request". Select the *DEVELOPMENT BRANCH* as "base branch" and click on "Create pull request". Your pull request will then be tested, discussed and implemented into the *DEVELPOMENT BRANCH* by the ESMValTool Core Development Team. +Once your development is completely finished, go to the GitHub website of the ESMValTool repository and switch to your *FEATURE BRANCH*. You can then initiate a pull request by clicking on the button "New pull request". Select the *DEVELOPMENT BRANCH* as "base branch" and click on "Create pull request". Your pull request will then be tested, discussed and implemented into the *DEVELPOMENT BRANCH* by the :ref:`ESMValTool Core Development Team `. -.. attention:: Before creating a pull request, please make sure all requirements listed in Sections :ref:`writing` and :ref:`documentation` are fully met (see also checklist in :ref:`tab_checklist`). +.. attention:: When creating a pull request, please carefully review the requirements and recommendations in CONTRIBUTING.md and try to implement those (see also checklist in the pull request template). It is recommended that you create a draft pull request early in the development process, when it is still possible to implement feedback. Do not wait until shortly before the deadline of the project you are working on. If you are unsure how to implement any of the requirements, please do not hesitate to ask for help in the pull request. GitHub issues ------------- @@ -163,15 +164,15 @@ Do-s * Use short but self-explanatory variable names (e.g., model_input and reference_input instead of xm and xr). * Consider a modular/functional programming style. This often makes code easier to read and deletes intermediate variables immediately. If possible, separate diagnostic calculations from plotting routines. * Consider reusing or extending existing code. General-purpose code can be found in esmvaltool/diag_scripts/shared/. -* Comment all switches and parameters including a list of all possible settings/options in the header section of your code (see also Section :ref:`std_diag`). -* Use templates for recipes (Section :ref:`std_recipe`) and diagnostics (Section :ref:`std_diag`) to help with proper documentation. +* Comment all switches and parameters including a list of all possible settings/options in the header section of your code (see also ...). +* Use templates for recipes (see ...) and diagnostics (see ...) to help with proper documentation. * Keep your *FEATURE BRANCH* regularly synchronized with the *DEVELOPMENT BRANCH* (git merge). * Keep developments / modifications of the ESMValTool framework / backend / basic structure separate from developments of diagnostics by creating different *FEATURE BRANCHES* for these two kinds of developments. Create *FEATURE BRANCHES* for changes / modifications of the ESMValTool framework only in the *PUBLIC* repository. Don't-s ------- -* Do not use other programming languages than the ones currently supported (NCL, Python, R). Contact the Core Development Team (Section :ref:`core_dev_team`) if you wish to use another language, but remember that only open-source languages are supported by the ESMValTool. +* Do not use other programming languages than the ones currently supported (Python, R, NCL, Julia). If you are unsure what language to use, Python is probably the best choice, because it has very good libraries available and is supported by a large community. Contact the :ref:`ESMValTool Core Development Team ` if you wish to use another language, but remember that only open-source languages are supported by the ESMValTool. * Do not develop without proper version control (see do-s above). * Avoid large (memory, disk space) intermediate results. Delete intermediate files/variables or see modular/functional programming style. * Do not use hard-coded pathnames or filenames. diff --git a/doc/sphinx/source/esmvaldiag/index.rst b/doc/sphinx/source/esmvaldiag/index.rst new file mode 100644 index 0000000000..3713f60eca --- /dev/null +++ b/doc/sphinx/source/esmvaldiag/index.rst @@ -0,0 +1,9 @@ +#################################### +Guidelines for diagnostic developers +#################################### + +.. include:: new_diagnostic.inc +.. include:: porting.inc +.. include:: config_developer.inc +.. include:: observations.inc +.. include:: git_repository.inc diff --git a/doc/sphinx/source/developer_guide2/new_diagnostic.inc b/doc/sphinx/source/esmvaldiag/new_diagnostic.inc similarity index 52% rename from doc/sphinx/source/developer_guide2/new_diagnostic.inc rename to doc/sphinx/source/esmvaldiag/new_diagnostic.inc index bf98741688..149f26e0ce 100644 --- a/doc/sphinx/source/developer_guide2/new_diagnostic.inc +++ b/doc/sphinx/source/esmvaldiag/new_diagnostic.inc @@ -1,4 +1,4 @@ -.. _new_diagnostic: +.. _new-diagnostic: *************************************** Contributing a new diagnostic or recipe @@ -66,9 +66,9 @@ Using the interfaces from NCL Always call the ``log_provenance`` procedure after plotting from your NCL diag_script. You could find available shortcuts for statistics, domain, plottype, authors and references in the ``config-references.yml`` file. -.. code-block:: bash +.. code-block:: console - log_provenance(nc-file,plot_file,caption,statistics,domain,plottype,authors,references,input-files) + log_provenance(nc-file,plot_file,caption,statistics,domain,plottype,authors,references,input-files) Have a look at the example NCL diagnostic in ``esmvaltool/diag_scripts/examples/diagnostic.ncl`` for a complete example. @@ -80,14 +80,14 @@ argument to the diagnostic script. The most interesting settings provided in this file are -.. code:: yaml +.. code-block:: yaml - run_dir: /path/to/recipe_output/run/diagnostic_name/script_name - work_dir: /path/to/recipe_output/work/diagnostic_name/script_name - plot_dir: /path/to/recipe_output/work/diagnostic_name/script_name - input_files: - - /path/to/recipe_output/preproc/diagnostic_name/ta/metadata.yml - - /path/to/recipe_output/preproc/diagnostic_name/pr/metadata.yml + run_dir: /path/to/recipe_output/run/diagnostic_name/script_name + work_dir: /path/to/recipe_output/work/diagnostic_name/script_name + plot_dir: /path/to/recipe_output/plots/diagnostic_name/script_name + input_files: + - /path/to/recipe_output/preproc/diagnostic_name/ta/metadata.yml + - /path/to/recipe_output/preproc/diagnostic_name/pr/metadata.yml Custom settings in the script section of the recipe will also be made available in this file. @@ -99,54 +99,55 @@ There are three directories defined: Finally :code:`input_files` is a list of YAML files, containing a description of the preprocessed data. Each entry in these YAML files is a path to a preprocessed file in NetCDF format, with a list of various attributes. -An example preprocessor metadata.yml file could look like this - -.. code:: yaml - - ? /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - : cmor_table: CMIP5 - dataset: GFDL-ESM2G - diagnostic: diagnostic_name - end_year: 2002 - ensemble: r1i1p1 - exp: historical - filename: /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - frequency: mon - institute: [NOAA-GFDL] - long_name: Precipitation - mip: Amon - modeling_realm: [atmos] - preprocessor: preprocessor_name - project: CMIP5 - recipe_dataset_index: 1 - reference_dataset: MPI-ESM-LR - short_name: pr - standard_name: precipitation_flux - start_year: 2000 - units: kg m-2 s-1 - variable_group: pr - ? /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - : cmor_table: CMIP5 - dataset: MPI-ESM-LR - diagnostic: diagnostic_name - end_year: 2002 - ensemble: r1i1p1 - exp: historical - filename: /path/to/recipe_output/preproc/diagnostic1/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - frequency: mon - institute: [MPI-M] - long_name: Precipitation - mip: Amon - modeling_realm: [atmos] - preprocessor: preprocessor_name - project: CMIP5 - recipe_dataset_index: 2 - reference_dataset: MPI-ESM-LR - short_name: pr - standard_name: precipitation_flux - start_year: 2000 - units: kg m-2 s-1 - variable_group: pr +An example preprocessor metadata.yml file could look like this: + +.. code-block:: yaml + + ? /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc + : cmor_table: CMIP5 + dataset: GFDL-ESM2G + diagnostic: diagnostic_name + end_year: 2002 + ensemble: r1i1p1 + exp: historical + filename: /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc + frequency: mon + institute: [NOAA-GFDL] + long_name: Precipitation + mip: Amon + modeling_realm: [atmos] + preprocessor: preprocessor_name + project: CMIP5 + recipe_dataset_index: 1 + reference_dataset: MPI-ESM-LR + short_name: pr + standard_name: precipitation_flux + start_year: 2000 + units: kg m-2 s-1 + variable_group: pr + ? /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc + : cmor_table: CMIP5 + dataset: MPI-ESM-LR + diagnostic: diagnostic_name + end_year: 2002 + ensemble: r1i1p1 + exp: historical + filename: /path/to/recipe_output/preproc/diagnostic1/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc + frequency: mon + institute: [MPI-M] + long_name: Precipitation + mip: Amon + modeling_realm: [atmos] + preprocessor: preprocessor_name + project: CMIP5 + recipe_dataset_index: 2 + reference_dataset: MPI-ESM-LR + short_name: pr + standard_name: precipitation_flux + start_year: 2000 + units: kg m-2 s-1 + variable_group: pr + Generic interface between diagnostic and backend ------------------------------------------------ @@ -169,28 +170,27 @@ It is possible to add custom provenance information by adding custom items to en An example :code:`diagnostic_provenance.yml` file could look like this -.. code:: yaml - - ? /path/to/recipe_output/work/diagnostic_name/script_name/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.nc - : ancestors: - - /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - authors: [ande_bo, righ_ma] - caption: Average Precipitation between 2000 and 2002 according to GFDL-ESM2G. - domains: [global] - plot_file: /path/to/recipe_output/plots/diagnostic_name/script_name/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.png - plot_type: zonal - references: [acknow_project] - statistics: [mean] - ? /path/to/recipe_output/work/diagnostic_name/script_name/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.nc - : ancestors: - - /path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc - authors: [ande_bo, righ_ma] - caption: Average Precipitation between 2000 and 2002 according to MPI-ESM-LR. - domains: [global] - plot_file: /path/to/recipe_output/plots/diagnostic_name/script_name/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.png - plot_type: zonal - references: [acknow_project] - statistics: [mean] +.. code-block:: yaml + + ? /path/to/recipe_output/work/diagnostic_name/script_name/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.nc + : ancestors:[/path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_GFDL-ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc] + authors: [ande_bo, righ_ma] + caption: Average Precipitation between 2000 and 2002 according to GFDL-ESM2G. + domains: [global] + plot_file: /path/to/recipe_output/plots/diagnostic_name/script_name/CMIP5_GFDL ESM2G_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.png + plot_type: zonal + references: [acknow_project] + statistics: [mean] + + ? /path/to/recipe_output/work/diagnostic_name/script_name/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.nc + : ancestors: [/path/to/recipe_output/preproc/diagnostic_name/pr/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002.nc] + authors: [ande_bo, righ_ma] + caption: Average Precipitation between 2000 and 2002 according to MPI-ESM-LR. + domains: [global] + plot_file: /path/to/recipe_output/plots/diagnostic_name/script_name/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T2Ms_pr_2000-2002_mean.png + plot_type: zonal + references: [acknow_project] + statistics: [mean] You can check whether your diagnostic script successfully provided the provenance information to the backend by verifying that @@ -199,4 +199,67 @@ verifying that - any NetCDF files created by your diagnostic script contain a 'provenance' global attribute - any PNG plots created by your diagnostic script contain the provenance information in the 'Image History' attribute -Note that this is done automatically by the ESMValTool backend. +Note that this is done automatically by the ESMValTool Core. + +******************************************** +How to prepare and run your first diagnostic +******************************************** + +Instructions for personal diagnostic +==================================== + +Anyone can run a personal diagnostic, no matter where the location of it; +there is no need to install esmvaltool in developer mode nor is it to +git push or for that matter, do any git operations; the example recipe + +.. code-block:: console + + esmvaltool/recipes/recipe_my_personal_diagnostic.yml + +shows the use of running a personal diagnostic; the example + +.. code-block:: console + + esmvaltool/diag_scripts/examples/my_little_diagnostic.py + +and any of its alterations may be used as training wheels for the future ESMValTool +diagnostic developer. The purpose of this example is to familiarize the user with +the framework of ESMValTool without the constraints of installing and running the +tool as developer. + +Functionality +============= + +`my_little_diagnostic` (or whatever the user will call their diagnostic) makes full use +of ESMValTool's preprocessor output (both phyisical files and run variables); this output +comes in form of a nested dictionary, or config dictionary, see an example below; +it also makes full use of the ability to call any of the preprocessor's functions, +note that relative imports of modules from the esmvaltool package are allowed and +work without altering the $PYTHONPATH. + +The user may parse this dictionary so that they execute a number of operations on the +preprocessed data; for example the `my_little_diagnostic.plot_time_series` grabs the +preprocessed data output, computes global area averages for each model, then plots +a time-series for each model. Different manipulation functionalities for grouping, +sorting etc of the data in the config dictionary are available, +please consult ESMValTool User Manual. + + +Writing a basic recipe +====================== +The user will need to write a basic recipe to be able to run their own personal diagnostic. +An example of such a recipe is found in `esmvaltool/recipes/recipe_my_personal_diagnostic.yml`. +For general guidelines with regards to ESMValTool recipes please consult the User Guide; +the specific parameters needed by a recipe that runs a personal diagnostic are: + +.. code-block:: yaml + + scripts: + my_diagnostic: + script: /path/to/your/my_little_diagnostic.py + +i.e. the full path to the personal diagnostic that the user needs to run. + +Example of config dictionary +============================ +To be added (use python-style code-block). diff --git a/doc/sphinx/source/esmvaldiag/observations.inc b/doc/sphinx/source/esmvaldiag/observations.inc new file mode 100644 index 0000000000..48a6dff134 --- /dev/null +++ b/doc/sphinx/source/esmvaldiag/observations.inc @@ -0,0 +1,7 @@ +.. _observations: + +************************************************************ +Contributing a CMORizing script for an observational dataset +************************************************************ + + diff --git a/doc/sphinx/source/developer_guide2/porting.inc b/doc/sphinx/source/esmvaldiag/porting.inc similarity index 99% rename from doc/sphinx/source/developer_guide2/porting.inc rename to doc/sphinx/source/esmvaldiag/porting.inc index e707c060f3..5216abcce8 100644 --- a/doc/sphinx/source/developer_guide2/porting.inc +++ b/doc/sphinx/source/esmvaldiag/porting.inc @@ -1,8 +1,8 @@ .. _porting: -************************************************************** -Porting namelists (recipes) and diagnostics to ESMValTool v2.0 -************************************************************** +************************************************************ +Porting a namelist (recipe) or diagnostic to ESMValTool v2.0 +************************************************************ This guide summarizes the main steps to be taken in order to port an ESMValTool namelist (now called **recipe**) and the corresponding diagnostic(s) from v1.0 to v2.0, hereafter also referred as the *"old"* and the *"new version"*, respectively. The new ESMValTool version is being developed in the public git branch ``version2_development``. An identical version of this branch is maintained in the private repository as well and kept synchronized on an hourly basis. diff --git a/doc/sphinx/source/figures/schematic.png b/doc/sphinx/source/figures/schematic.png index fce8f16c69..281eb3bd75 100644 Binary files a/doc/sphinx/source/figures/schematic.png and b/doc/sphinx/source/figures/schematic.png differ diff --git a/doc/sphinx/source/generate_gallery.py b/doc/sphinx/source/generate_gallery.py new file mode 100644 index 0000000000..d63d95cf9c --- /dev/null +++ b/doc/sphinx/source/generate_gallery.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Create gallery with all available recipes.""" + +import os + +RECIPE_DIR = 'recipes' +OUT_PATH = os.path.abspath('gallery.rst') +HEADER = ('#######\nGallery\n#######\n\n' + 'This section shows example plots produced by ESMValTool. For more ' + 'information, click on the footnote below the image.\n\n') +WIDTH = ':width: 90%' +FIGURE_STR = '.. figure::' +IMAGE_STR = ' image:: ' +TABLE_SEP = ('+---------------------------------------------------' + '+---------------------------------------------------+\n') +EMPTY_TABLE = ('| ' + '| |\n') +CELL_WIDTH = 50 + + +def _get_figure_index(file_content): + """Get index of figure in text.""" + if FIGURE_STR in file_content: + return file_content.index(FIGURE_STR) + len(FIGURE_STR) + if IMAGE_STR in file_content: + return file_content.index(IMAGE_STR) + len(IMAGE_STR) + raise ValueError("File does not contain image") + + +def _get_next_row(filenames, file_contents): + """Get next row.""" + figure_idx = [_get_figure_index(content) for content in file_contents] + figure_paths = [ + file_contents[idx][fig_idx:].split('\n')[0].strip() + for (idx, fig_idx) in enumerate(figure_idx) + ] + subst = [ + '|{}|'.format(os.path.splitext(filename)[0]) for filename in filenames + ] + link = [file_contents[0].split()[1][1:-1]] + if figure_paths[1] == '': + subst[1] = '' + link.append('') + else: + link.append(file_contents[1].split()[1][1:-1]) + + # Build table + row = '' + refs = '' + row += TABLE_SEP + row += '| {}| {}|\n'.format(subst[0].ljust(CELL_WIDTH), + subst[1].ljust(CELL_WIDTH)) + row += EMPTY_TABLE + left_col = '[#]_'.ljust(CELL_WIDTH) + if figure_paths[1] == '': + right_col = ''.ljust(CELL_WIDTH) + else: + right_col = '[#]_'.ljust(CELL_WIDTH) + row += '| {}| {}|\n'.format(left_col, right_col) + + # Build refs + for (idx, path) in enumerate(figure_paths): + if path == '': + continue + refs += f'.. {subst[idx]} image:: {path}\n' + refs += f' {WIDTH}\n' + refs += '\n' + refs += f'.. [#] :ref:`{link[idx]}`\n' + refs += '\n' + + return (row, refs) + + +def main(): + """Generate gallery for recipe plots.""" + print(f"Generating gallery at {OUT_PATH}") + left_col = True + table = '' + refs = '' + filenames = [] + file_contents = [] + for filename in sorted(os.listdir(RECIPE_DIR)): + if not filename.startswith('recipe_'): + continue + if not filename.endswith('.rst'): + continue + with open(os.path.join(RECIPE_DIR, filename), 'r') as in_file: + recipe_file = in_file.read() + if (FIGURE_STR not in recipe_file and IMAGE_STR not in recipe_file): + print(f"INFO: {filename} does not contain an image, skipping") + continue + if not recipe_file.startswith('..'): + print(f"INFO: {filename} does not contain reference at top, " + "skipping") + continue + + # Get next row + if left_col: + left_col = False + filenames = [filename] + file_contents = [recipe_file] + continue + else: + left_col = True + filenames.append(filename) + file_contents.append(recipe_file) + new_row = _get_next_row(filenames, file_contents) + table += new_row[0] + refs += new_row[1] + + # Last row + if len(filenames) == 1: + filenames.append('') + file_contents.append(f'{FIGURE_STR}\n') + new_row = _get_next_row(filenames, file_contents) + table += new_row[0] + refs += new_row[1] + table += TABLE_SEP + table += '\n' + + # Write file + whole_file = HEADER + table + refs + with open(OUT_PATH, 'w') as out_file: + print(whole_file, file=out_file) + print(f"Wrote {OUT_PATH}") + + +if __name__ == '__main__': + main() diff --git a/doc/sphinx/source/getting_started/config_user.inc b/doc/sphinx/source/getting_started/config_user.inc new file mode 100644 index 0000000000..8d3e518d8f --- /dev/null +++ b/doc/sphinx/source/getting_started/config_user.inc @@ -0,0 +1,142 @@ +.. _config-user: + +*********************** +User configuration file +*********************** + +ESMValTool includes several yaml files which are used to +store information and settings. The most important +yaml files are `config-user.yml`_ and +`config-developer.yml`_. + +config-user.yml +=============== + +The ``config-user.yml`` configuration file contains all the global level +information needed by ESMValTool. The following shows the default settings from +the ``config-user.yml`` file. + +.. code-block:: yaml + + # Diagnostics create plots? [true]/false + write_plots: true + # Diagnositcs write NetCDF files? [true]/false + write_netcdf: true + # Set the console log level debug, [info], warning, error + log_level: info + # verbosity is deprecated and will be removed in the future + # verbosity: 1 + # Exit on warning? true/[false] + exit_on_warning: false + # Plot file format? [ps]/pdf/png/eps/epsi + output_file_type: pdf + # Destination directory + output_dir: ./esmvaltool_output + # Auxiliary data directory (used for some additional datasets) + auxiliary_data_dir: ./auxiliary_data + # Use netCDF compression true/[false] + compress_netcdf: false + # Save intermediary cubes in the preprocessor true/[false] + save_intermediary_cubes: false + # Remove the preproc dir if all fine + remove_preproc_dir: true + # Run at most this many tasks in parallel null/[1]/2/3/4/.. + # Set to null to use the number of available CPUs. + # Make sure your system has enough memory for the specified number of tasks. + max_parallel_tasks: 1 + # Path to custom config-developer file, to customise project configurations. + # See config-developer.yml for an example. Set to None to use the default + config_developer_file: null + # Get profiling information for diagnostics + # Only available for Python diagnostics + profile_diagnostic: false + + # Rootpaths to the data from different projects (lists are also possible) + rootpath: + CMIP5: [~/cmip5_inputpath1, ~/cmip5_inputpath2] + OBS: ~/obs_inputpath + default: ~/default_inputpath + + # Directory structure for input data: [default]/BADC/DKRZ/ETHZ/etc + # See config-developer.yml for definitions. + drs: + CMIP5: default + +Most of these settings are fairly self-explanatory, ie: + +.. code-block:: yaml + + # Diagnostics create plots? [true]/false + write_plots: true + # Diagnositcs write NetCDF files? [true]/false + write_netcdf: true + +The ``write_plots`` setting is used to inform ESMValTool about your preference +for saving figures. Similarly, the ``write_netcdf`` setting is a boolean which +turns on or off the writing of netCDF files. + +.. code-block:: yaml + + # Auxiliary data directory (used for some additional datasets) + auxiliary_data_dir: ~/auxiliary_data + +The ``auxiliary_data_dir`` setting is the path to place any required +additional auxiliary data files. This method was necessary because certain +Python toolkits such as cartopy will attempt to download data files at run +time, typically geographic data files such as coastlines or land surface maps. +This can fail if the machine does not have access to the wider internet. This +location allows us to tell cartopy (and other similar tools) where to find the +files if they can not be downloaded at runtime. To reiterate, this setting is +not for model or observational datasets, rather it is for data files used in +plotting such as coastline descriptions and so on. + + +Tip: You choose your config.yml file at run time, so you could have several +available with different purposes. One for formalised run, one for debugging, +etc... + +config-developer.yml +==================== + +The config-developer.yml holds the project and machine specific varying part of the path +to datasets. + +This is necessary, because the CMIP data is widely distributed and not all +machines use the same paths or directory structure. + +If you are using one of the machines listed in the file, then you inform +ESMValTool about this in the config-user.yml file (described above). + +If you are using a machine which is not listed, you can either +use a flat data directory (ie put all the files in one directory - this is risky and can +slow down your system). Alternatively, you could make your data +structure resemble one of the listed sites, or you can create your own +data structure in this file. + +An example of the data structure would be: + +.. code-block:: yaml + + CMIP6: + input_dir: + default: '/' + BADC: '[institute]/[dataset]/[exp]/[ensemble]/[mip]/[short_name]/[grid]/[latestversion]' + + +The following table shows some examples of these values in the data structure. + +============= =========== +Value Example +============= =========== +institute MOHC +dataset UKESM +exp Historical +ensemble r1i1p1 +mip Omon +short_name thetao +grid gn +latestversion latest +============= =========== + + + diff --git a/doc/sphinx/source/getting_started/index.rst b/doc/sphinx/source/getting_started/index.rst new file mode 100644 index 0000000000..ab3d845979 --- /dev/null +++ b/doc/sphinx/source/getting_started/index.rst @@ -0,0 +1,9 @@ +####################### +Getting started +####################### + +.. include:: install.inc +.. include:: config_user.inc +.. include:: inputdata.inc +.. include:: running.inc +.. include:: outputdata.inc diff --git a/doc/sphinx/source/user_guide2/observations.inc b/doc/sphinx/source/getting_started/inputdata.inc similarity index 98% rename from doc/sphinx/source/user_guide2/observations.inc rename to doc/sphinx/source/getting_started/inputdata.inc index c7285a0df6..917bc3e72a 100644 --- a/doc/sphinx/source/user_guide2/observations.inc +++ b/doc/sphinx/source/getting_started/inputdata.inc @@ -1,8 +1,14 @@ -:: _observations: +.. _inputdata: -********************************************** -Obtaining and cmorizing observational datasets -********************************************** +********** +Input data +********** + +Models +====== + +Observations +============ Observational and reanalysis products in the standard CF/CMOR format used in CMIP and required by the ESMValTool are available via the obs4mips (https://esgf-node.llnl.gov/projects/obs4mips/) and ana4mips (https://esgf.nccs.nasa.gov/projects/ana4mips/) proejcts, respectively. Their use is strongly recommended, when possible. diff --git a/doc/sphinx/source/user_guide2/install.inc b/doc/sphinx/source/getting_started/install.inc similarity index 99% rename from doc/sphinx/source/user_guide2/install.inc rename to doc/sphinx/source/getting_started/install.inc index d4b883fad9..3cb6d89fb8 100644 --- a/doc/sphinx/source/user_guide2/install.inc +++ b/doc/sphinx/source/getting_started/install.inc @@ -1,4 +1,4 @@ -.. _installation_guide: +.. _install: ********************* Installing ESMValTool diff --git a/doc/sphinx/source/getting_started/outputdata.inc b/doc/sphinx/source/getting_started/outputdata.inc new file mode 100644 index 0000000000..62a016b83e --- /dev/null +++ b/doc/sphinx/source/getting_started/outputdata.inc @@ -0,0 +1,152 @@ +.. _outputdata: + +****** +Output +****** + +ESMValTool automatically generates a new output directory with every run. The +location is determined by the output_dir option in the config-user.yml file, +the recipe name, and the date and time, using the the format: YYYYMMDD_HHMMSS. + +For instance, a typical output location would be: +output_directory/recipe_ocean_amoc_20190118_1027/ + +This is effectively produced by the combination: +output_dir/recipe_name_YYYYMMDD_HHMMSS/ + + +This directory will contain 4 further subdirectories: + +1. `Preprocessed datasets`_ (preproc): This directory contains all the preprocessed netcdfs data and the `metadata.yml`_ interface files. + +2. `Run`_: This directory includes all log files, a copy of the recipe, a summary of the resource usage, and the `settings.yml`_ interface files and temporary files created by the diagnostic scripts. + +3. `Diagnostic output`_ (work): A place for any diagnostic script results that are not plots, e.g. files in NetCDF format (depends on the diagnostics). + +4. `Plots`_: The location for all the plots, split by individual diagnostics and fields. + + +Preprocessed datasets +===================== + +The preprocessed datasets will be stored to the preproc/ directory. +Each variable in each diagnostic will have its own the `metadata.yml`_ +interface files saved in the preproc directory. + +If the option ``save_intermediary_cubes`` is set to ``true`` in the +config-user.yml file, then the intermediary cubes will also be saved here. +This option is set to false in the default ``config-user.yml`` file. + +If the option ``remove_preproc_dir`` is set to ``true`` in the config-user.yml +file, then the preproc directory will be deleted after the run completes. This +option is set to true in the default ``config-user.yml`` file. + + +Run +=== + +The log files in the run directory are automatically generated by ESMValTool +and create a record of the output messages produced by ESMValTool and they are +saved in the run directory. They can be helpful for debugging or monitoring the +job, but also allow a record of the job output to screen after the job has been +completed. + +The run directory will also contain a copy of the recipe and the +`settings.yml`_ file, described below. +The run directory is also where the diagnostics are executed, and may also +contain several temporary files while diagnostics are running. + +Diagnostic output +================= + +The work/ directory will contain all files that are output at the diagnostic +stage. Ie, the model data is preprocessed by ESMValTool and stored in the +preproc/ directory. These files are opened by the diagnostic script, then some +processing is applied. Once the diagnostic level processing has been applied, +the results should be saved to the work directory. + + +Plots +===== + +The plots directory is where diagnostics save their output figures. These +plots are saved in the format requested by the option `output_file_type` in the +config-user.yml file. + + +Settings.yml +============ + +The settings.yml file is automatically generated by ESMValTool. Each diagnostic +will produce a unique settings.yml file. + +The settings.yml file passes several global level keys to diagnostic scripts. +This includes several flags from the config-user.yml file (such as +'write_netcdf', 'write_plots', etc...), several paths which are specific to the +diagnostic being run (such as 'plot_dir' and 'run_dir') and the location on +disk of the metadata.yml file (described below). + +.. code-block:: yaml + + input_files:[[...]recipe_ocean_bgc_20190118_134855/preproc/diag_timeseries_scalars/mfo/metadata.yml] + log_level: debug + max_data_filesize: 100 + output_file_type: png + plot_dir: [...]recipe_ocean_bgc_20190118_134855/plots/diag_timeseries_scalars/Scalar_timeseries + profile_diagnostic: false + recipe: recipe_ocean_bgc.yml + run_dir: [...]recipe_ocean_bgc_20190118_134855/run/diag_timeseries_scalars/Scalar_timeseries + script: Scalar_timeseries + version: 2.0a1 + work_dir: [...]recipe_ocean_bgc_20190118_134855/work/diag_timeseries_scalars/Scalar_timeseries + write_netcdf: true + write_plots: true + +The first item in the settings file will be a list of `Metadata.yml`_ files. +There is a metadata.yml file generated for each field in each diagnostic. + + +Metadata.yml +============ + +The metadata.yml files is automatically generated by ESMValTool. Along with the +settings.yml file, it passes all the paths, boolean flags, and additional +arguments that your diagnostic needs to know in order to run. + +The metadata is loaded from cfg as a dictionairy object in python diagnostics. + +Here is an example metadata.yml file: + +.. code-block:: yaml + + ? + [...]/recipe_ocean_bgc_20190118_134855/preproc/diag_timeseries_scalars/mfo/CMIP5_HadGEM2-ES_Omon_historical_r1i1p1_TO0M_mfo_2002-2004.nc + : cmor_table: CMIP5 + dataset: HadGEM2-ES + diagnostic: diag_timeseries_scalars + end_year: 2004 + ensemble: r1i1p1 + exp: historical + field: TO0M + filename: [...]recipe_ocean_bgc_20190118_134855/preproc/diag_timeseries_scalars/mfo/CMIP5_HadGEM2-ES_Omon_historical_r1i1p1_TO0M_mfo_2002-2004.nc + frequency: mon + institute: [INPE, MOHC] + long_name: Sea Water Transport + mip: Omon + modeling_realm: [ocean] + preprocessor: prep_timeseries_scalar + project: CMIP5 + recipe_dataset_index: 0 + short_name: mfo + standard_name: sea_water_transport_across_line + start_year: 2002 + units: kg s-1 + variable_group: mfo + + +As you can see, this is effectively a dictionary with several items including +data paths, metadata and other information. + +There are several tools available in python which are built to read and parse +these files. The tools are avaialbe in the shared directory in the diagnostics +directory. diff --git a/doc/sphinx/source/getting_started/running.inc b/doc/sphinx/source/getting_started/running.inc new file mode 100644 index 0000000000..b2d72ed830 --- /dev/null +++ b/doc/sphinx/source/getting_started/running.inc @@ -0,0 +1,31 @@ +.. _running: + +****************** +Running ESMValTool +****************** + +To run ESMValTool, use the command + +.. code:: bash + + esmvaltool -c /path/to/config-user.yml examples/recipe_python.yml + +This will run the example recipe_python.yml. The path to the recipe can either +be the path to a recipe file, or a path relative to the esmvaltool/recipes +directory of your installed ESMValTool. See the chapter :ref:`User +configuration file ` for an explanation of how +to create your own config-user.yml file. + +To get help on additional commands, please use + +.. code:: bash + + esmvaltool --help + + + +Available diagnostics and metrics +================================= + +See Section :doc:`Recipes <../recipes/index>` for a description of all +available recipes. diff --git a/doc/sphinx/source/index.rst b/doc/sphinx/source/index.rst index 61052b9eea..4a843c59d4 100644 --- a/doc/sphinx/source/index.rst +++ b/doc/sphinx/source/index.rst @@ -9,16 +9,15 @@ Welcome to ESMValTool's documentation! .. toctree:: :maxdepth: 2 - preface - known_issues - + preface/index + gallery + getting_started/index + esmvalcore/index + esmvaldiag/index recipes/index - - user_guide2/index - developer_guide2/index - codedoc2/esmvaltool + Indices and tables ================== diff --git a/doc/sphinx/source/known_issues.rst b/doc/sphinx/source/known_issues.rst deleted file mode 100644 index e479a57a07..0000000000 --- a/doc/sphinx/source/known_issues.rst +++ /dev/null @@ -1,5 +0,0 @@ -Known issues ------------- - - -Please see our bug and feature request tracker on `github `_. diff --git a/doc/sphinx/source/preface.rst b/doc/sphinx/source/preface.rst deleted file mode 100644 index 43ac641ec7..0000000000 --- a/doc/sphinx/source/preface.rst +++ /dev/null @@ -1,11 +0,0 @@ -Preface -------- - -This user's and developer's guide consists of parts targeting two overlapping categories of scientists working with the Earth System Model Evaluation Tool (ESMValTool): - -1. Part I: User's Guide: this part gives an introduction to the ESMValTool including installation, running the ESMValTool, and available user settings of existing diagnostics and performance metrics. The target group would typically consist of scientists mostly interested in running the ESMValTool as provided either on CMIP model simulations or on simulations performed with other Earth system models, and on observations. An overview on the available diagnostics and metrics packages including a description of the user settings and example plots can be found in Annex C (to be added for v2). -2. Part II: Developer's Guide: this part gives additional technical details on the ESMValTool not necessarily needed to apply the ESMValTool as well as an introduction to implementing new variables and new diagnostics. This part is mostly intended for scientists interested in technical details as well as in contributing to the development of the ESMValTool by adding new nameslists and code for additional diagnostics or performance metrics. - -For the developer's guide (Part II), it is assumed that the user/developer is already familiar with the ESMValTool framework introduced in part I. - -**Please report problems and bugs to the ESMValTool Core Development Team (**:ref:`core_dev_team` **and http://www.esmvaltool.org/). Thank you!** diff --git a/doc/sphinx/source/preface/architecture.inc b/doc/sphinx/source/preface/architecture.inc new file mode 100644 index 0000000000..6afd941f8e --- /dev/null +++ b/doc/sphinx/source/preface/architecture.inc @@ -0,0 +1,12 @@ +.. _architecture: + +************ +Architecture +************ + +To be written. + +.. figure:: ../figures/schematic.png + :align: center + + Schematic of the system architecture. diff --git a/doc/sphinx/source/developer_guide2/core_team.inc b/doc/sphinx/source/preface/core_team.inc similarity index 98% rename from doc/sphinx/source/developer_guide2/core_team.inc rename to doc/sphinx/source/preface/core_team.inc index 7a3e0ba9a4..4ac1d1e5d5 100644 --- a/doc/sphinx/source/developer_guide2/core_team.inc +++ b/doc/sphinx/source/preface/core_team.inc @@ -1,11 +1,9 @@ -.. _core_team: +.. _core-team: ************************************ The ESMValTool core development team ************************************ -.. _core_dev_team: - Main contacts ============= diff --git a/doc/sphinx/source/preface/index.rst b/doc/sphinx/source/preface/index.rst new file mode 100644 index 0000000000..8ee438dfa7 --- /dev/null +++ b/doc/sphinx/source/preface/index.rst @@ -0,0 +1,9 @@ +####################### +Preface +####################### + +.. include:: intro.inc +.. include:: objectives.inc +.. include:: license.inc +.. include:: architecture.inc +.. include:: core_team.inc diff --git a/doc/sphinx/source/user_guide2/intro.inc b/doc/sphinx/source/preface/intro.inc similarity index 58% rename from doc/sphinx/source/user_guide2/intro.inc rename to doc/sphinx/source/preface/intro.inc index f099dd3214..df61017fd1 100644 --- a/doc/sphinx/source/user_guide2/intro.inc +++ b/doc/sphinx/source/preface/intro.inc @@ -1,3 +1,5 @@ +.. _intro: + ************ Introduction ************ @@ -7,39 +9,3 @@ The Earth System Model Evaluation Tool (ESMValTool) is a community-development t The goal is to develop a benchmarking and evaluation tool that produces well-established analyses as soon as model output from CMIP simulations becomes available, e.g., at one of the central repositories of the ESGF. This is realized through standard recipes that reproduce a certain set of diagnostics and performance metrics that have demonstrated its importance in benchmarking Earth System Models (ESMs) in a paper or assessment report, such as Chapter 9 of the Intergovernmental Panel on Climate Change (IPCC) Fifth Assessment Report (AR5) (Flato et al., 2013). The expectation is that in this way a routine and systematic evaluation of model results can be made more efficient, thereby enabling scientists to focus on developing more innovative methods of analysis rather than constantly having to "reinvent the wheel". In parallel to standardization of model output, the ESGF also hosts observations for Model Intercomparison Projects (obs4MIPs) and reanalyses data (ana4MIPs). obs4MIPs provides open access data sets of satellite data that are comparable in terms of variables, temporal and spatial frequency, and periods to CMIP model output (Taylor et al., 2012). The ESMValTool utilizes these observations and reanalyses from ana4MIPs plus additionally available observations in order to evaluate the models performance. In many diagnostics and metrics, more than one observational data set or meteorological reanalysis is used to assess uncertainties in observations. - -Objectives and approach -======================= - -The main idea of the ESMValTool is to provide a broad suite of diagnostics which can be performed easily when new model simulations are run. The suite of diagnostics needs to be broad enough to reflect the diversity and complexity of Earth System Models, but must also be robust enough to be run routinely or semi-operationally. -In order the address these challenging objectives the ESMValTool is conceived as a framework which allows community contributions to be bound into a coherent framework. - -License -======= - -The ESMValTool is released under the Apache License, version 2.0 and citation -of the ESMValTool paper ("Software Documentation Paper") is kindly requested -upon use alongside with the software doi (to be added for v2) -and version number: - -* Righi et al. to be added - -Besides the above citation, users are kindly asked to register any journal -articles (or other scientific documents) that use the software at the -ESMValTool webpage (http://www.esmvaltool.org/). Citing the Software -Documentation Paper and registering your paper(s) will serve to document the -scientific impact of the Software, which is of vital importance for securing -future funding. You should consider this an obligation if you have taken -advantage of the ESMValTool, which represents the end product of considerable -effort by the development team. - -Architecture -============ - -:ref:`fig_schematic` shows a schematic of the ESMValTool architecture: to be written. - -.. _fig_schematic: -.. figure:: ../figures/schematic.png - :align: center - - Schematic of the system architecture. diff --git a/doc/sphinx/source/preface/license.inc b/doc/sphinx/source/preface/license.inc new file mode 100644 index 0000000000..c1ff582d1d --- /dev/null +++ b/doc/sphinx/source/preface/license.inc @@ -0,0 +1,21 @@ +.. _license: + +******* +License +******* + +The ESMValTool is released under the Apache License, version 2.0 and citation +of the ESMValTool paper ("Software Documentation Paper") is kindly requested +upon use alongside with the software doi (to be added for v2) +and version number: + +* Righi et al. to be added + +Besides the above citation, users are kindly asked to register any journal +articles (or other scientific documents) that use the software at the +ESMValTool webpage (http://www.esmvaltool.org/). Citing the Software +Documentation Paper and registering your paper(s) will serve to document the +scientific impact of the Software, which is of vital importance for securing +future funding. You should consider this an obligation if you have taken +advantage of the ESMValTool, which represents the end product of considerable +effort by the development team. diff --git a/doc/sphinx/source/preface/objectives.inc b/doc/sphinx/source/preface/objectives.inc new file mode 100644 index 0000000000..0ea079eb3a --- /dev/null +++ b/doc/sphinx/source/preface/objectives.inc @@ -0,0 +1,8 @@ +.. _objectives: + +*********************** +Objectives and approach +*********************** + +The main idea of the ESMValTool is to provide a broad suite of diagnostics which can be performed easily when new model simulations are run. The suite of diagnostics needs to be broad enough to reflect the diversity and complexity of Earth System Models, but must also be robust enough to be run routinely or semi-operationally. +In order the address these challenging objectives the ESMValTool is conceived as a framework which allows community contributions to be bound into a coherent framework. diff --git a/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-LR_1980-2005.png b/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-LR_1980-2005.png deleted file mode 100644 index f65013283b..0000000000 Binary files a/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-LR_1980-2005.png and /dev/null differ diff --git a/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-MR_2021-2050.png b/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-MR_2021-2050.png new file mode 100644 index 0000000000..4cab8e974a Binary files /dev/null and b/doc/sphinx/source/recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-MR_2021-2050.png differ diff --git a/doc/sphinx/source/recipes/figures/cox18nature/emergent_relationship_HadCRUT4.png b/doc/sphinx/source/recipes/figures/cox18nature/emergent_relationship_HadCRUT4.png new file mode 100644 index 0000000000..c0e7da1db2 Binary files /dev/null and b/doc/sphinx/source/recipes/figures/cox18nature/emergent_relationship_HadCRUT4.png differ diff --git a/doc/sphinx/source/recipes/figures/cox18nature/pdf_HadCRUT4.png b/doc/sphinx/source/recipes/figures/cox18nature/pdf_HadCRUT4.png new file mode 100644 index 0000000000..ab5c2e222a Binary files /dev/null and b/doc/sphinx/source/recipes/figures/cox18nature/pdf_HadCRUT4.png differ diff --git a/doc/sphinx/source/recipes/figures/cox18nature/temperature_anomaly_HadCRUT4.png b/doc/sphinx/source/recipes/figures/cox18nature/temperature_anomaly_HadCRUT4.png new file mode 100644 index 0000000000..a3ece05eed Binary files /dev/null and b/doc/sphinx/source/recipes/figures/cox18nature/temperature_anomaly_HadCRUT4.png differ diff --git a/doc/sphinx/source/recipes/figures/ecs/CanESM2.png b/doc/sphinx/source/recipes/figures/ecs/CanESM2.png new file mode 100644 index 0000000000..9eba6050ed Binary files /dev/null and b/doc/sphinx/source/recipes/figures/ecs/CanESM2.png differ diff --git a/doc/sphinx/source/recipes/index.rst b/doc/sphinx/source/recipes/index.rst index e40732e61a..147f96ae96 100644 --- a/doc/sphinx/source/recipes/index.rst +++ b/doc/sphinx/source/recipes/index.rst @@ -11,9 +11,11 @@ Recipes recipe_combined_climate_extreme_index recipe_combined_indices recipe_consecdrydays + recipe_cox18nature recipe_crem recipe_cvdp recipe_diurnal_temperature_index + recipe_ecs recipe_ensclus recipe_extreme_events recipe_flato13ipcc diff --git a/doc/sphinx/source/recipes/recipe_capacity_factor.rst b/doc/sphinx/source/recipes/recipe_capacity_factor.rst index 9ad4b667a6..db8e9051fa 100644 --- a/doc/sphinx/source/recipes/recipe_capacity_factor.rst +++ b/doc/sphinx/source/recipes/recipe_capacity_factor.rst @@ -1,4 +1,4 @@ -.. _yml_capacity_factor: +.. _recipes_capacity_factor: Capacity factor of wind power: Ratio of average estimated power to theoretical maximum power ============================================================================================ @@ -6,14 +6,13 @@ Capacity factor of wind power: Ratio of average estimated power to theoretical m Overview -------- -The goal of this diagnostic is to compute the wind capacity factor, taking as input the daily instantaneous surface wind speed, which is then extrapolated to obtain the wind speed at a height of 100 m as described in Lledó (2017). +The goal of this diagnostic is to compute the wind capacity factor, taking as input the daily instantaneous surface wind speed, which is then extrapolated to obtain the wind speed at a height of 100 m as described in Lledó (2017). -The capacity factor is a normalized indicator of the suitability of wind speed conditions to produce electricity, irrespective of the size and number of installed turbines. This indicator is provided for three different classes of wind turbines (IEC, 2005) that are designed specifically for low, medium and high wind speed conditions. +The capacity factor is a normalized indicator of the suitability of wind speed conditions to produce electricity, irrespective of the size and number of installed turbines. This indicator is provided for three different classes of wind turbines (IEC, 2005) that are designed specifically for low, medium and high wind speed conditions. -The user can select the region, temporal range and season of interest. +The user can select the region, temporal range and season of interest. The output of the recipe is a netcdf file containing the capacity factor for each of the three turbine classes. -. Available recipes and diagnostics --------------------------------- @@ -48,7 +47,18 @@ Variables Observations and reformat scripts --------------------------------- -*None* +Main features of the selected turbines: + +================= ================== ================ ================== ================= =================== +Turbine name Rotor diameter (m) Rated power (MW) Cut-in speed (m/s) Rated speed (m/s) Cut-out speed (m/s) + +----------------- ------------------ ---------------- ------------------ ----------------- ------------------- +Enercon E70 2.3MW 70 2.3 2.0 16.0 25.0 +Gamesa G80 2.0MW 80 2.0 4.0 17.0 25.0 +Gamesa G87 2.0MW 87 2.0 4.0 16.0 25.0 +Vestas V100 2.0MW 100 2.0 3.0 15.0 20.0 +Vestas V110 2.0MW 110 2.0 3.0 11.5 20.0 +================= ================== ================ ================== ================= =================== References ---------- @@ -61,7 +71,7 @@ Example plots ------------- .. _fig_capfactor1: -.. figure:: /recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-LR_1980-2005.png +.. figure:: /recipes/figures/capacity_factor/capacity_factor_IPSL-CM5A-MR_2021-2050.png :align: center :width: 14cm diff --git a/doc/sphinx/source/recipes/recipe_clouds.rst b/doc/sphinx/source/recipes/recipe_clouds.rst index ee4e1bc182..bc9e4f1f38 100644 --- a/doc/sphinx/source/recipes/recipe_clouds.rst +++ b/doc/sphinx/source/recipes/recipe_clouds.rst @@ -1,3 +1,5 @@ +.. _recipes_clouds: + Clouds ====== diff --git a/doc/sphinx/source/recipes/recipe_consecdrydays.rst b/doc/sphinx/source/recipes/recipe_consecdrydays.rst index b5d04b0ab4..23b02176b5 100644 --- a/doc/sphinx/source/recipes/recipe_consecdrydays.rst +++ b/doc/sphinx/source/recipes/recipe_consecdrydays.rst @@ -1,3 +1,5 @@ +.. _recipes_consecdrydays: + Consecutive dry days ==================== diff --git a/doc/sphinx/source/recipes/recipe_cox18nature.rst b/doc/sphinx/source/recipes/recipe_cox18nature.rst new file mode 100644 index 0000000000..9cbe29e710 --- /dev/null +++ b/doc/sphinx/source/recipes/recipe_cox18nature.rst @@ -0,0 +1,127 @@ +.. _recipes_cox18nature: + +Emergent constraint on equilibrium climate sensitivity from global temperature variability +========================================================================================== + +Overview +-------- + +This recipe reproduces the emergent constraint proposed by `Cox et al. (2018)`_ +for the equilibrium climate sensitivity (ECS) using global temperature +variability. The latter is defined by a metric which can be calculated from the +global temperature variance (in time) :math:`\sigma_T` and the one-year-lag +autocorrelation of the global temperature :math:`\alpha_{1T}` by + +.. math:: + + \psi = \frac{\sigma_T}{\sqrt{-\ln(\alpha_{1T})}} + +Using the simple `Hasselmann model`_ they show that this quantity is linearly +correlated with the ECS. Since it only depends on the temporal evolution of the +global surface temperature, there is lots of observational data available which +allows the construction of an emergent relationship. This method predicts an +ECS range of 2.2K to 3.4K (66% confidence limit). + +.. _`Cox et al. (2018)`: https://www.nature.com/articles/nature25450 +.. _`Hasselmann model`: https://onlinelibrary.wiley.com/doi/10.1111/j.2153-3490.1976.tb00696.x + + +Available recipes and diagnostics +--------------------------------- + +Recipes are stored in recipes/ + + * recipe_cox18nature.yml + + +Diagnostics are stored in diag_scripts/ + + * emergent_constraints/cox18nature.py + * climate_metrics/ecs.py + * climate_metrics/psi.py + + +User settings in recipe +----------------------- + +#. Preprocessor + + * ``area_statistics`` (*operation: mean*): Calculate global mean. + +#. Script emergent_constraints/cox18nature.py + + * ``confidence_level``, *float*, optional (default: 0.66): Confidence level for + ECS error estimation. + +#. Script climate_metrics/ecs.py + + * ``read_external_file``, *str*, optional: Read ECS and net climate feedback + parameter from external file. All other input data is ignored. + +#. Script climate_metrics/psi.py + + * ``window_length``, *int*, optional (default: 55): Number of years used for + the moving window average. + + * ``lag``, *int*, optional (default: 1): Lag (in years) for the + autocorrelation function. + + +Variables +--------- + +* *tas* (atmos, monthly, longitude, latitude, time) +* *tasa* (atmos, monthly, longitude, latitude, time) + + +Observations and reformat scripts +--------------------------------- + +* HadCRUT4_ (*tasa*) + +.. _HadCRUT4: https://crudata.uea.ac.uk/cru/data/temperature/ + + +References +---------- + +* Cox, Peter M., Chris Huntingford, and Mark S. Williamson. "Emergent + constraint on equilibrium climate sensitivity from global temperature + variability." Nature 553.7688 (2018): 319. + + +Example plots +------------- + +.. _fig_cox18nature_1: +.. figure:: /recipes/figures/cox18nature/temperature_anomaly_HadCRUT4.png + :align: center + :width: 50% + + Simulated change in global temperature from CMIP5 models (coloured lines), + compared to the global temperature anomaly from the HadCRUT4 dataset (black + dots). The anomalies are relative to a baseline period of 1961–1990. The model + lines are colour-coded, with lower-sensitivity models (λ > 1 + Wm\ :sup:`-2`\ K\ :sup:`-1`\ ) shown by green lines and higher-sensitivity + models (λ < 1 Wm\ :sup:`-2`\ K\ :sup:`-1`\ ) shown by magenta lines. + +.. _fig_cox18nature_2: +.. figure:: /recipes/figures/cox18nature/emergent_relationship_HadCRUT4.png + :align: center + :width: 50% + + Emergent relationship between ECS and the ψ metric. The black dot-dashed + line shows the best-fit linear regression across the model ensemble, with + the prediction error for the fit given by the black dashed lines. The + vertical blue lines show the observational constraint from the HadCRUT4 + observations: the mean (dot-dashed line) and the mean plus and minus one + standard deviation (dashed lines). + +.. _fig_cox18nature_3: +.. figure:: /recipes/figures/cox18nature/pdf_HadCRUT4.png + :align: center + :width: 50% + + The PDF for ECS. The orange histograms (both panels) show the prior + distributions that arise from equal weighting of the CMIP5 models in 0.5 K + bins. diff --git a/doc/sphinx/source/recipes/recipe_crem.rst b/doc/sphinx/source/recipes/recipe_crem.rst index 28838502c0..7034ba3f5c 100644 --- a/doc/sphinx/source/recipes/recipe_crem.rst +++ b/doc/sphinx/source/recipes/recipe_crem.rst @@ -1,3 +1,5 @@ +.. _recipes_crem: + Cloud Regime Error Metric (CREM) ================================ diff --git a/doc/sphinx/source/recipes/recipe_cvdp.rst b/doc/sphinx/source/recipes/recipe_cvdp.rst index 7e84cd8212..02577722d2 100644 --- a/doc/sphinx/source/recipes/recipe_cvdp.rst +++ b/doc/sphinx/source/recipes/recipe_cvdp.rst @@ -1,3 +1,5 @@ +.. _recipes_cvdp: + The Climate Variability Diagnostics Package (CVDP) ================================================== diff --git a/doc/sphinx/source/recipes/recipe_ecs.rst b/doc/sphinx/source/recipes/recipe_ecs.rst new file mode 100644 index 0000000000..713b5bd550 --- /dev/null +++ b/doc/sphinx/source/recipes/recipe_ecs.rst @@ -0,0 +1,82 @@ +.. _recipes_ecs: + +Equilibrium climate sensitivity +=============================== + +Overview +-------- + + +Equilibrium climate sensitivity is defined as the change in global mean +temperature as a result of a doubling of the atmospheric CO\ :sub:`2` +concentration compared to pre-industrial times after the climate system has +reached a new equilibrium `Gregory et al. (2004)`_. This recipe uses a +regression method based on `Andrews et al. (2012)`_ to calculate it for +several CMIP model. + +.. _`Gregory et al. (2004)`: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2003GL018747 +.. _`Andrews et al. (2012)`: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2012GL051607 + + +Available recipes and diagnostics +--------------------------------- + +Recipes are stored in recipes/ + + * recipe_ecs.yml + + +Diagnostics are stored in diag_scripts/ + + * climate_metrics/ecs.py + + +User settings in recipe +----------------------- + +#. Preprocessor + + * ``area_statistics`` (*operation: mean*): Calculate global mean. + +#. Script climate_metrics/ecs.py + + * ``read_external_file``, *str*, optional: Read ECS and net climate feedback + parameter from external file. All other input data is ignored. + + +Variables +--------- + +* *rlut* (atmos, monthly, longitude, latitude, time) +* *rsdt* (atmos, monthly, longitude, latitude, time) +* *rsut* (atmos, monthly, longitude, latitude, time) +* *tas* (atmos, monthly, longitude, latitude, time) + + +Observations and reformat scripts +--------------------------------- + +*None* + + +References +---------- + +* Andrews, Timothy, et al. "Forcing, feedbacks and climate sensitivity in CMIP5 + coupled atmosphere‐ocean climate models." Geophysical Research Letters 39.9 + (2012). +* Gregory, Jonathan M., et al. "A new method for diagnosing radiative forcing + and climate sensitivity." Geophysical research letters 31.3 (2004). + + +Example plots +------------- + +.. _fig_ecs_1: +.. figure:: /recipes/figures/ecs/CanESM2.png + :align: center + :width: 50% + + Scatterplot between TOA radiance and global mean surface temperature anomaly + for 150 years of the abrupt 4x CO2 experiment including linear regression to + calculate ECS for CanESM2 (CMIP5). diff --git a/doc/sphinx/source/recipes/recipe_ensclus.rst b/doc/sphinx/source/recipes/recipe_ensclus.rst index 7b0f05ff1f..dcfefd55f8 100644 --- a/doc/sphinx/source/recipes/recipe_ensclus.rst +++ b/doc/sphinx/source/recipes/recipe_ensclus.rst @@ -1,3 +1,5 @@ +.. _recipes_ensclus: + EnsClus - Ensemble Clustering - a cluster analysis tool for climate model simulations ===================================================================================== diff --git a/doc/sphinx/source/recipes/recipe_extreme_events.rst b/doc/sphinx/source/recipes/recipe_extreme_events.rst index 5f80794af1..3227d6cc8a 100644 --- a/doc/sphinx/source/recipes/recipe_extreme_events.rst +++ b/doc/sphinx/source/recipes/recipe_extreme_events.rst @@ -1,3 +1,5 @@ +.. _recipes_extreme_events: + Extreme Events Indices - Computation of ETCCDI extreme indices and plotting ===================================================================================== diff --git a/doc/sphinx/source/recipes/recipe_flato13ipcc.rst b/doc/sphinx/source/recipes/recipe_flato13ipcc.rst index 80f1d19f11..78e19f8956 100644 --- a/doc/sphinx/source/recipes/recipe_flato13ipcc.rst +++ b/doc/sphinx/source/recipes/recipe_flato13ipcc.rst @@ -1,3 +1,5 @@ +.. _recipes_flato13ipcc: + IPCC AR5 Chapter 9 ================== diff --git a/doc/sphinx/source/recipes/recipe_hyint.rst b/doc/sphinx/source/recipes/recipe_hyint.rst index 70c90392c9..611c2ec205 100644 --- a/doc/sphinx/source/recipes/recipe_hyint.rst +++ b/doc/sphinx/source/recipes/recipe_hyint.rst @@ -1,3 +1,5 @@ +.. _recipes_hyint: + Hydroclimatic intensity and extremes (HyInt) ============================================== @@ -112,17 +114,17 @@ References Example plots ------------- -.. figure:: figures/hyint/hyint_maps.png +.. figure:: /recipes/figures/hyint/hyint_maps.png :width: 10cm Mean hydroclimatic intensity (figure type 1) for the EC-EARTH model historical + rcp8.5 projection over 1976-2099. -.. figure:: figures/hyint/hyint_timeseries.png +.. figure:: /recipes/figures/hyint/hyint_timeseries.png :width: 10cm Timeseries for multiple indices and regions (figure type 12) for the ACCESS1-0 model historical + RCP8.5 projection over 1976-2099. -.. figure:: figures/hyint/hyint_trends.png +.. figure:: /recipes/figures/hyint/hyint_trends.png :width: 10cm Multi-model trend coefficients over selected indices (figure type 14) for rcp85 2006-2099 future projection normalized to the 1976-2005 historical period. diff --git a/doc/sphinx/source/recipes/recipe_landcover.rst b/doc/sphinx/source/recipes/recipe_landcover.rst index 97528f1b46..1d3ec32bfb 100644 --- a/doc/sphinx/source/recipes/recipe_landcover.rst +++ b/doc/sphinx/source/recipes/recipe_landcover.rst @@ -1,3 +1,5 @@ +.. _recipes_landcover: + Landcover ========= diff --git a/doc/sphinx/source/recipes/recipe_miles.rst b/doc/sphinx/source/recipes/recipe_miles.rst index c8ddbefd10..9dfb4aa6b8 100644 --- a/doc/sphinx/source/recipes/recipe_miles.rst +++ b/doc/sphinx/source/recipes/recipe_miles.rst @@ -1,55 +1,57 @@ +.. _recipes_miles: + Blocking metrics and indices, teleconnections and weather regimes (MiLES) ========================================================================= - + Overview -------- -Atmospheric blocking is a recurrent mid-latitude weather pattern identified by a large-amplitude, quasi-stationary, long-lasting, high-pressure anomaly that ‘‘blocks’’ the westerly flow forcing the jet stream to split or meander +Atmospheric blocking is a recurrent mid-latitude weather pattern identified by a large-amplitude, quasi-stationary, long-lasting, high-pressure anomaly that ‘‘blocks’’ the westerly flow forcing the jet stream to split or meander `(Rex, 1950) `_. -It is typically initiated by the breaking of a Rossby wave in a diffluence region at the exit of the storm track, where it amplifies the underlying stationary ridge `(Tibaldi and Molteni, 1990) `_. -Blocking occurs more frequently in the Northern Hemisphere cold season, with larger frequencies observed over the Euro-Atlantic and North Pacific sectors. Its lifetime oscillates from a few days up to several weeks `(Davini et al., 2012) `_ sometimes leading to winter cold spells or summer heat waves. +It is typically initiated by the breaking of a Rossby wave in a diffluence region at the exit of the storm track, where it amplifies the underlying stationary ridge `(Tibaldi and Molteni, 1990) `_. +Blocking occurs more frequently in the Northern Hemisphere cold season, with larger frequencies observed over the Euro-Atlantic and North Pacific sectors. Its lifetime oscillates from a few days up to several weeks `(Davini et al., 2012) `_ sometimes leading to winter cold spells or summer heat waves. -To this end, the MId-Latitude Evaluation System (MiLES) was developed as stand-alone package (https://github.com/oloapinivad/MiLES) to support analysis of mid-latitude weather patterns in terms of atmospheric blocking, teleconnections and weather regimes. The package was then implemented as recipe for ESMValTool. +To this end, the MId-Latitude Evaluation System (MiLES) was developed as stand-alone package (https://github.com/oloapinivad/MiLES) to support analysis of mid-latitude weather patterns in terms of atmospheric blocking, teleconnections and weather regimes. The package was then implemented as recipe for ESMValTool. The tool works on daily 500hPa geopotential height data (with data interpolated on a common 2.5x2.5 grid) and calculates the following diagnostics: - + 1D Atmospheric Blocking *********************** -`Tibaldi and Molteni (1990) `_ index for Northern Hemisphere. Computed at fixed latitude of 60N, with delta of -5,-2.5,0,2.5,5 deg, fiN=80N and fiS=40N. Full timeseries and climatologies are provided in NetCDF4 Zip format. +`Tibaldi and Molteni (1990) `_ index for Northern Hemisphere. Computed at fixed latitude of 60N, with delta of -5,-2.5,0,2.5,5 deg, fiN=80N and fiS=40N. Full timeseries and climatologies are provided in NetCDF4 Zip format. 2D Atmospheric blocking *********************** -Following the index by `Davini et al. (2012) `_. It is a 2D version of `Tibaldi and Molteni (1990) `_ for Northern Hemisphere atmospheric blocking evaluating meridional gradient reversal at 500hPa. It computes both Instantaneous Blocking and Blocking Events frequency, where the latter allows the estimation of the each blocking duration. It includes also two blocking intensity indices, i.e. the Meridional Gradient Index and the Blocking Intensity index. In addition the orientation (i.e. cyclonic or anticyclonic) of the Rossby wave breaking is computed. A supplementary Instantaneous Blocking index with the GHGS2 condition (see `Davini et al., 2012 `_) is also evaluated. -Full timeseries and climatologies are provided in NetCDF4 Zip format. +Following the index by `Davini et al. (2012) `_. It is a 2D version of `Tibaldi and Molteni (1990) `_ for Northern Hemisphere atmospheric blocking evaluating meridional gradient reversal at 500hPa. It computes both Instantaneous Blocking and Blocking Events frequency, where the latter allows the estimation of the each blocking duration. It includes also two blocking intensity indices, i.e. the Meridional Gradient Index and the Blocking Intensity index. In addition the orientation (i.e. cyclonic or anticyclonic) of the Rossby wave breaking is computed. A supplementary Instantaneous Blocking index with the GHGS2 condition (see `Davini et al., 2012 `_) is also evaluated. +Full timeseries and climatologies are provided in NetCDF4 Zip format. Z500 Empirical Orthogonal Functions *********************************** -Based on SVD. The first 4 EOFs for North Atlantic (over the 90W-40E 20N-85N box) and Northern Hemisphere (20N-85N) or a custom region are computed. North Atlantic Oscillation, East Atlantic Pattern, and Arctic Oscillation can be evaluated. -Figures showing linear regression of PCs on monthly Z500 are provided. PCs and eigenvectors, as well as the variances explained are provided in NetCDF4 Zip format. +Based on SVD. The first 4 EOFs for North Atlantic (over the 90W-40E 20N-85N box) and Northern Hemisphere (20N-85N) or a custom region are computed. North Atlantic Oscillation, East Atlantic Pattern, and Arctic Oscillation can be evaluated. +Figures showing linear regression of PCs on monthly Z500 are provided. PCs and eigenvectors, as well as the variances explained are provided in NetCDF4 Zip format. -North Atlantic Weather Regimes +North Atlantic Weather Regimes ****************************** Following k-means clustering of 500hPa geopotential height. 4 weather regimes over North Atlantic (80W-40E 30N-87.5N) are evaluated using anomalies from daily seasonal cycle. This is done retaining the first North Atlantic EOFs which explains the 80% of the variance to reduce the phase-space dimensions and then applying k-means clustering using Hartigan-Wong algorithm with k=4. Figures report patterns and frequencies of occurrence. NetCDF4 Zip data are saved. Only 4 regimes and DJF supported so far. - + Available recipes and diagnostics --------------------------------- - + Recipes are stored in recipes/ - + * recipe_miles_block.yml * recipe_miles_eof.yml * recipe_miles_regimes.yml - + Diagnostics are stored in diag_scripts/miles/ - + * miles_block.R -* miles_eof.R -* miles_regimes.R +* miles_eof.R +* miles_regimes.R -and subroutines +and subroutines * basis_functions.R * block_figures.R @@ -66,7 +68,7 @@ and subroutines User settings ------------- -#. miles_block.R +#. miles_block.R *Required settings for variables* @@ -88,7 +90,7 @@ User settings * teles: Select EOFs ('NAO','AO','PNA') or specify custom area as "lon1_lon2_lat1_lat2" #. miles_regimes.R - + *Required settings for variables* * reference_dataset: reference dataset @@ -100,31 +102,31 @@ User settings Variables --------- - + * zg (atmos, daily mean, longitude latitude time) - - + + Observations and reformat scripts --------------------------------- * ERA-INTERIM - - + + References ---------- -* REX, D. F. (1950), Blocking Action in the Middle Troposphere and its Effect upon Regional Climate. Tellus, 2: 196-211. doi: http://doi.org/10.1111/j.2153-3490.1950.tb00331.x +* REX, D. F. (1950), Blocking Action in the Middle Troposphere and its Effect upon Regional Climate. Tellus, 2: 196-211. doi: http://doi.org/10.1111/j.2153-3490.1950.tb00331.x * Davini, P., C. Cagnazzo, S. Gualdi, and A. Navarra (2012): Bidimensional Diagnostics, Variability, and Trends of Northern Hemisphere Blocking. J. Climate, 25, 6496–6509, doi: http://doi.org/10.1175/JCLI-D-12-00032.1. * Tibaldi S, Molteni F.: On the operational predictability of blocking. Tellus A 42(3): 343–365, doi: 10.1034/j.1600- 0870.1990.t01- 2- 00003.x, 1990. https://doi.org/10.1034/j.1600-0870.1990.t01-2-00003.x * Paolo Davini. (2018, April 30). MiLES - Mid Latitude Evaluation System (Version v0.51). Zenodo. http://doi.org/10.5281/zenodo.1237838 - + Example plots ------------- .. figure:: /recipes/figures/miles/miles_block.png :width: 10cm - + Blocking events frequency for EC-Earth model 1980-1989, compared to ERA-Interim. - + .. figure:: /recipes/figures/miles/miles_eof1.png :width: 10cm diff --git a/doc/sphinx/source/recipes/recipe_oceans.rst b/doc/sphinx/source/recipes/recipe_oceans.rst index d09074c30e..9567cc5d6d 100644 --- a/doc/sphinx/source/recipes/recipe_oceans.rst +++ b/doc/sphinx/source/recipes/recipe_oceans.rst @@ -488,9 +488,8 @@ An appropriate preprocessor for a 3D+time field would be: lat2: 30. z_min: 0. z_max: 3000. - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean @@ -524,18 +523,15 @@ For a global area-weighted average 2D field: .. code-block:: yaml - average_area: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean For a global volume-weighted average 3D field: .. code-block:: yaml - average_volume: - coord1: longitude - coord2: latitude - coordz: depth + volume_statistics: + operator: mean For a global area-weighted surface of a 3D field: @@ -544,9 +540,8 @@ For a global area-weighted surface of a 3D field: extract_levels: levels: [0., ] scheme: linear_horizontal_extrapolate_vertical - average_area: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean An example of the multi-model time series plots can seen here: diff --git a/doc/sphinx/source/recipes/recipe_quantilebias.rst b/doc/sphinx/source/recipes/recipe_quantilebias.rst index 0d72457bba..f0cd2d1f9c 100644 --- a/doc/sphinx/source/recipes/recipe_quantilebias.rst +++ b/doc/sphinx/source/recipes/recipe_quantilebias.rst @@ -1,46 +1,48 @@ +.. _recipes_quantilebias: + Precipitation quantile bias =========================== - + Overview -------- - + Precipitation is a dominant component of the hydrological cycle, and as such a main driver of the climate system and human development. The reliability of climate projections and water resources strategies therefore depends on how well precipitation can be reproduced by the models used for simulations. While global circulation models from the CMIP5 project observations can reproduce the main patterns of mean precipitation, they often show shortages and biases in the ability to reproduce the strong precipitation tails of the distribution. Most models underestimate precipitation over arid regions and overestimate it over regions of complex topography, and these shortages are amplified at high quantile precipitation. The quantilebias recipe implements calculation of the quantile bias to allow evaluation of the precipitation bias based on a user defined quantile in models as compared to a reference dataset following Mehran et al. (2014). The quantile bias (QB) is defined as the ratio of monthly precipitation amounts in each simulation to that of the reference dataset (GPCP observations in the example) above a specified threshold t (e.g., the 75th percentile of all the local monthly values). A quantile bias equal to 1 indicates no bias in the simulations, whereas a value above (below) 1 corresponds to a climate model's overestimation (underestimation) of the precipitation amount above the specified threshold t, with respect to that of the reference dataset. - - + + Available recipes and diagnostics --------------------------------- - + Recipes are stored in recipes/ - + * recipe_quantilebias.yml - + Diagnostics are stored in diag_scripts/quantilebias/ - + * quantilebias.R - - + + User settings ------------- - + *Required settings for script* * perc_lev: quantile (in %), e.g. 50 - - + + Variables --------- - + * pr (atmos, monthly, longitude latitude time) - - + + Observations and reformat scripts --------------------------------- - + * GPCP-SG observations (accessible via the obs4mips project) - - + + References ---------- - + * Mehran, A. et al.: Journal of Geophysical Research: Atmospheres, Volume 119, Issue 4, pp. 1695-1707, 2014. diff --git a/doc/sphinx/source/recipes/recipe_rainfarm.rst b/doc/sphinx/source/recipes/recipe_rainfarm.rst index 8c12734409..695a4a4313 100644 --- a/doc/sphinx/source/recipes/recipe_rainfarm.rst +++ b/doc/sphinx/source/recipes/recipe_rainfarm.rst @@ -1,53 +1,55 @@ +.. _recipes_rainfarm: + RainFARM stochastic downscaling =============================== - + Overview -------- - + Precipitation extremes and small-scale variability are essential drivers in many climate change impact studies. However, the spatial resolution currently achieved by global and regional climate models is still insufficient to correctly identify the fine structure of precipitation intensity fields. In the absence of a proper physically based representation, this scale gap can be at least temporarily bridged by adopting a stochastic rainfall downscaling technique (Rebora et al, 2006). With this aim, the Rainfall Filtered Autoregressive Model (RainFARM)was developed to apply the stochastic precipitation downscaling method to climate models. The RainFARM Julia library and command-line tool version (https://github.com/jhardenberg/RainFARM.jl) was implemented as recipe. The stochastic method allows to predict climate variables at local scale from information simulated by climate models at regional scale: It first evaluates the statistical distribution of precipitation fields at regional scale and then applies the relationship to the boundary conditions of the climate model to produce synthetic fields at the requested higher resolution. RainFARM exploits the nonlinear transformation of a Gaussian random precipitation field, conserving the information present in the fields at larger scale (Rebora et al., 2006; D’Onofrio et al., 2014). - + Available recipes and diagnostics --------------------------------- - + Recipes are stored in recipes/ - + * recipe_rainfarm.yml - + Diagnostics are stored in diag_scripts/rainfarm/ - + * rainfarm.R - - + + User settings ------------- *Required settings for script* - + * slope: spatial spectral slope (set to 0 to compute automatically from large scales) * nens: number of ensemble members to be calculated * nf: number of subdivisions for downscaling (e.g. 8 will produce output fields with linear resolution increased by a factor 8) -* conserv_glob: logical, if to conserve precipitation over full domain +* conserv_glob: logical, if to conserve precipitation over full domain * conserv_smooth: logical, if to conserve precipitation using convolution (if neither conserv_glob or conserv_smooth is chosen, box conservation is used) * weights_climo: set to false if no orographic weights are to be used, else set it to the full path to a fine-scale precipitation climatology file. The file is expected to be in NetCDF format and should contain at least one precipitation field. If several fields at different times are provided, a climatology is derived by time averaging. Suitable climatology files could be for example a fine-scale precipitation climatology from a high-resolution regional climate model (see e.g. Terzago et al. 2018), a local high-resolution gridded climatology from observations, or a reconstruction such as those which can be downloaded from the WORLDCLIM (http://www.worldclim.org) or CHELSA (http://chelsa-climate.org) websites. The latter data will need to be converted to NetCDF format before being used (see for example the GDAL tools (https://www.gdal.org). - + Variables --------- - + * pr (atmos, daily mean, longitude latitude time) - - + + Observations and reformat scripts --------------------------------- - + None. - - + + References ---------- - + * Terzago et al. 2018, Nat. Hazards Earth Syst. Sci., 18, 2825-2840 * D'Onofrio et al. 2014, J of Hydrometeorology 15, 830-843 * Rebora et. al 2006, JHM 7, 724 diff --git a/doc/sphinx/source/recipes/recipe_runoff_et.rst b/doc/sphinx/source/recipes/recipe_runoff_et.rst index 3ce3fdc5bb..dee043ef0f 100644 --- a/doc/sphinx/source/recipes/recipe_runoff_et.rst +++ b/doc/sphinx/source/recipes/recipe_runoff_et.rst @@ -1,3 +1,5 @@ +.. _recipes_runoff_et: + Runoff_ET ========= diff --git a/doc/sphinx/source/recipes/recipe_shapeselect.rst b/doc/sphinx/source/recipes/recipe_shapeselect.rst index 91be26c549..bbb9c0a124 100644 --- a/doc/sphinx/source/recipes/recipe_shapeselect.rst +++ b/doc/sphinx/source/recipes/recipe_shapeselect.rst @@ -1,3 +1,5 @@ +.. _recipes_shapeselect: + Shapeselect =========== diff --git a/doc/sphinx/source/recipes/recipe_smpi.rst b/doc/sphinx/source/recipes/recipe_smpi.rst index c0f8cb0f31..7bfc555217 100644 --- a/doc/sphinx/source/recipes/recipe_smpi.rst +++ b/doc/sphinx/source/recipes/recipe_smpi.rst @@ -1,12 +1,14 @@ +.. _recipes_smpi: + Single Model Perfomance Index (SMPI) ==================================== Overview -------- -This diagnostic calculates the Single Model Performance Index (SMPI) following Reichler and Kim (2008). The SMPI (called "I\ :sup:`2`") is based on the comparison of several different climate variables (atmospheric, surface and oceanic) between climate model simulations and observations or reanalyses, and it focuses on the validation of the time-mean state of climate. For I\ :sup:`2` to be determined, the differences between the climatological mean of each model variable and observations at each of the available data grid points are calculated, and scaled to the interannual variance from the validating observations. This interannual variability is determined by performing a bootstrapping method (random selection with replacement) for the creation of a large synthetic ensemble of observational climatologies. The results are then scaled to the average error from a reference ensemble of models, and in a final step the mean over all climate variables and one model is calculated. The plot shows the I\ :sup:`2` values for each model (orange circles) and the multi-model mean (black circle), with the diameter of each circle representing the range of I\ :sup:`2` values encompassed by the 5th and 95th percentiles of the bootstrap ensemble. The I\ :sup:`2` values vary around one, with values greater than one for underperforming models, and values less than one for more accurate models. +This diagnostic calculates the Single Model Performance Index (SMPI) following Reichler and Kim (2008). The SMPI (called "I\ :sup:`2`") is based on the comparison of several different climate variables (atmospheric, surface and oceanic) between climate model simulations and observations or reanalyses, and it focuses on the validation of the time-mean state of climate. For I\ :sup:`2` to be determined, the differences between the climatological mean of each model variable and observations at each of the available data grid points are calculated, and scaled to the interannual variance from the validating observations. This interannual variability is determined by performing a bootstrapping method (random selection with replacement) for the creation of a large synthetic ensemble of observational climatologies. The results are then scaled to the average error from a reference ensemble of models, and in a final step the mean over all climate variables and one model is calculated. The plot shows the I\ :sup:`2` values for each model (orange circles) and the multi-model mean (black circle), with the diameter of each circle representing the range of I\ :sup:`2` values encompassed by the 5th and 95th percentiles of the bootstrap ensemble. The I\ :sup:`2` values vary around one, with values greater than one for underperforming models, and values less than one for more accurate models. -Note: The SMPI diagnostic needs all indicated variables from all added models for exactly the same time period to be calculated correctly. If one model does not provide a specific variable, either that model cannot be added to the SMPI calculations, or the missing variable has to be removed from the diagnostics all together. +Note: The SMPI diagnostic needs all indicated variables from all added models for exactly the same time period to be calculated correctly. If one model does not provide a specific variable, either that model cannot be added to the SMPI calculations, or the missing variable has to be removed from the diagnostics all together. Available recipes and diagnostics ----------------------------------- @@ -36,9 +38,9 @@ User settings * calc_grading: calculates grading metrics (has to be set to "true" in the recipe) * metric: chosen grading metric(s) (if calc_grading is True; has to be set to "SMPI") * smpi_n_bootstrap: number of bootstrapping members used to determine uncertainties on model-reference differences (typical number of bootstrapping members: 100) - + *Required settings for variables* - + * reference_dataset: reference dataset to compare with (usually the observations). These settings are passed to the other scripts by main.ncl, depending on the selected plot_type. @@ -48,7 +50,7 @@ These settings are passed to the other scripts by main.ncl, depending on the sel *Required settings for script* * metric: selected metric (has to be "SMPI") - + Variables --------- @@ -57,7 +59,7 @@ Variables * hus (atmos, monthly mean, longitude latitude lev time) * pr (atmos, monthly mean, longitude latitude time) * psl (atmos, monthly mean, longitude latitude time) -* sic (ocean-ice, monthly mean, longitude latitude time) +* sic (ocean-ice, monthly mean, longitude latitude time) * ta (atmos, monthly mean, longitude latitude lev time) * tas (atmos, monthly mean, longitude latitude time) * tauu (atmos, monthly mean, longitude latitude time) @@ -86,5 +88,5 @@ Example plots .. figure:: /recipes/figures/smpi/reichlerkim08bams_smpi.png :width: 70 % - + Performance index I\ :sup:`2` for individual models (circles). Circle sizes indicate the length of the 95% confidence intervals. The black circle indicates the I\ :sup:`2` of the multi-model mean (similar to Reichler and Kim (2008), Figure 1). diff --git a/doc/sphinx/source/recipes/recipe_spei.rst b/doc/sphinx/source/recipes/recipe_spei.rst index ff71c4a594..1ecab1f05d 100644 --- a/doc/sphinx/source/recipes/recipe_spei.rst +++ b/doc/sphinx/source/recipes/recipe_spei.rst @@ -1,9 +1,11 @@ +.. _recipes_spei: + SPEI ==== Overview -------- -Droughts can be separated into three main types: meteorological, hydrological, and agricultural drought. +Droughts can be separated into three main types: meteorological, hydrological, and agricultural drought. Common for all types is that a drought needs to be put in context of local and seasonal characteristics, i.e. a drought should not be defined with an absolute threshold, but as an anomalous condition. diff --git a/doc/sphinx/source/recipes/recipe_template.rst.template b/doc/sphinx/source/recipes/recipe_template.rst.template index 99bef29df5..c570f16944 100644 --- a/doc/sphinx/source/recipes/recipe_template.rst.template +++ b/doc/sphinx/source/recipes/recipe_template.rst.template @@ -1,3 +1,5 @@ +.. _recipes_: + Title ===== diff --git a/doc/sphinx/source/recipes/recipe_thermodyn_diagtool.rst b/doc/sphinx/source/recipes/recipe_thermodyn_diagtool.rst index da8352b37b..27e66b56ef 100644 --- a/doc/sphinx/source/recipes/recipe_thermodyn_diagtool.rst +++ b/doc/sphinx/source/recipes/recipe_thermodyn_diagtool.rst @@ -1,30 +1,32 @@ +.. _recipes_thermodyn_diagtool: + TheDiaTo v1.0 - A Diagnostic Tool for the Thermodynamics of the Climate System ============================================================================== Overview -------- -The tool allows to compute TOA, atmospheric and surface energy budgets, latent energy and water mass budgets, -meridional heat transports, the Lorenz Energy Cycle (LEC), the material entropy production with the direct +The tool allows to compute TOA, atmospheric and surface energy budgets, latent energy and water mass budgets, +meridional heat transports, the Lorenz Energy Cycle (LEC), the material entropy production with the direct and indirect method. -The energy budgets are computed from monthly mean radiative and heat fluxes at the TOA and at the surface -(cfr. Wild et al., 2013). The meridional heat transports are obtained from the latitudinal integration -of the zonal mean energy budgets. When a land-sea mask is provided, results are also available for +The energy budgets are computed from monthly mean radiative and heat fluxes at the TOA and at the surface +(cfr. Wild et al., 2013). The meridional heat transports are obtained from the latitudinal integration +of the zonal mean energy budgets. When a land-sea mask is provided, results are also available for land and oceans, separately. -The water mass budget is obtained from monthly mean latent heat fluxes (for evaporation), total and snowfall -precipitation (cfr. Liepert et al., 2012). The latent energy budget is obtained multiplying each component of -the water mass budget by the respective latent heat constant. When a land-sea mask is provided, results are +The water mass budget is obtained from monthly mean latent heat fluxes (for evaporation), total and snowfall +precipitation (cfr. Liepert et al., 2012). The latent energy budget is obtained multiplying each component of +the water mass budget by the respective latent heat constant. When a land-sea mask is provided, results are also available for land and oceans, separately. -The LEC is computed from 3D fields of daily mean velocity and temperature fields in the troposphere over -pressure levels. The analysis is carried on in spectral fields, converting lonlat grids in Fourier coefficients. +The LEC is computed from 3D fields of daily mean velocity and temperature fields in the troposphere over +pressure levels. The analysis is carried on in spectral fields, converting lonlat grids in Fourier coefficients. The components of the LEC are computed as in Ulbrich and Speth, 1991. In order to account for possible gaps in pressure levels, the daily fields of 2D near-surface temperature and horizontal velocities. The material entropy production is computed by using the indirect or the direct method (or both). The former -method relies on the convergence of radiative heat in the atmosphere (cfr. Lucarini et al., 2011; Pascale et al., 2011), +method relies on the convergence of radiative heat in the atmosphere (cfr. Lucarini et al., 2011; Pascale et al., 2011), the latter on all viscous and non-viscous dissipative processes occurring in the atmosphere (namely the sensible heat fluxes, the hydrological cycle with its components and the kinetic energy dissipation). @@ -42,11 +44,11 @@ Recipes are stored in recipes/ Diagnostics are stored in diag_scripts/thermodyn_diagtool/ * thermodyn_diagnostics.py: the main script, handling input files, calling computation and plotting scricpts; - + * computations.py: a module containing all the main computations that are carried out by the program; * fluxogram.py: a module for the retrieval of the block diagrams displaying the reservoirs and conversion terms of the LEC - + * fourier_coefficients.py: a module for the computation of the Fourier coefficients from the lonlat input grid * lorenz_cycle.py: a module for the computation of the LEC components in Fourier coefficients @@ -113,11 +115,11 @@ Example plots ------------- .. _fig_1: -.. figure:: /recipes/figures/thermodyn_diagtool/meridional_transp.png +.. figure:: /recipes/figures/thermodyn_diagtool/meridional_transp.png :align: left :width: 14cm .. _fig_2: -.. figure:: /recipes/figures/thermodyn_diagtool/CanESM2_wmb_transp.png +.. figure:: /recipes/figures/thermodyn_diagtool/CanESM2_wmb_transp.png :align: right :width: 14cm diff --git a/doc/sphinx/source/recipes/recipe_zmnam.rst b/doc/sphinx/source/recipes/recipe_zmnam.rst index b3303d195c..d8411c3912 100644 --- a/doc/sphinx/source/recipes/recipe_zmnam.rst +++ b/doc/sphinx/source/recipes/recipe_zmnam.rst @@ -1,76 +1,78 @@ +.. _recipes_zmnam: + Stratosphere-troposphere coupling and annular modes indices (ZMNAM) =================================================================== - + Overview -------- - -The current generation of climate models include the representation of stratospheric processes, as the vertical coupling with the troposphere is important for the weather and climate at the surface (e.g., `Baldwin and Dunkerton, 2001 `_). -The recipe recipe_zmnam.yml can be used to evaluate the representation of the Northern Annular Mode (NAM, e.g., `Wallace, 2000 `_) in climate simulations, using reanalysis datasets as reference. +The current generation of climate models include the representation of stratospheric processes, as the vertical coupling with the troposphere is important for the weather and climate at the surface (e.g., `Baldwin and Dunkerton, 2001 `_). + +The recipe recipe_zmnam.yml can be used to evaluate the representation of the Northern Annular Mode (NAM, e.g., `Wallace, 2000 `_) in climate simulations, using reanalysis datasets as reference. -The calculation is based on the “zonal mean algorithm” of `Baldwin and Thompson (2009) `_, and is alternative to pressure based or height-dependent methods. +The calculation is based on the “zonal mean algorithm” of `Baldwin and Thompson (2009) `_, and is alternative to pressure based or height-dependent methods. This approach provides a robust description of the stratosphere-troposphere coupling on daily timescales, requiring less subjective choices and a reduced amount of input data. Starting from daily mean geopotential height on pressure levels, the leading empirical orthogonal function/principal component are computed from zonal mean daily anomalies, with the leading principal component representing the zonal mean NAM index. The regression of the monthly mean geopotential height onto this monthly averaged index represents the NAM pattern for each selected pressure level. The outputs of the procedure are the monthly time series and the histogram of the daily zonal-mean NAM index, and the monthly regression maps for selected pressure levels. The users can select the specific datasets (climate model simulation and/or reanalysis) to be evaluated, and a subset of pressure levels of interest. - + Available recipes and diagnostics --------------------------------- - + Recipes are stored in recipes/ - + * recipe_zmnam.yml - + Diagnostics are stored in diag_scripts/zmnam/ - + * zmnam.py and subroutines - + * zmnam_calc.py * zmnam_plot.py * zmnam_preproc.py - + User settings ------------- - + None. - - + + Variables --------- - + * zg (atmos, daily mean, longitude latitude time) - - + + Observations and reformat scripts --------------------------------- - + None. - + References ---------- - + * Baldwin, M. P. and Thompson, D. W. (2009), A critical comparison of stratosphere–troposphere coupling indices. Q.J.R. Meteorol. Soc., 135: 1661-1672. `doi:10.1002/qj.479 `_. * Baldwin, M. P and Dunkerton, T. J. (2001), Stratospheric Harbingers of Anomalous Weather Regimes. Science 294 (5542): 581-584. `doi:10.1126/science.1063315 `_. * Wallace, J. M. (2000), North Atlantic Oscillation/annular mode: Two paradigms-one phenomenon. Q.J.R. Meteorol. Soc., 126 (564): 791-805. `doi:10.1002/qj.49712656402 `_. - + Example plots ------------- - + .. figure:: /recipes/figures/zmnam/zmnam_reg.png :width: 10cm - + Example output: time series of the zonal-mean NAM index. .. figure:: /recipes/figures/zmnam/zmnam_ts.png :width: 10cm - + Example output: regression map for a selected pressure level. diff --git a/doc/sphinx/source/requirements.txt b/doc/sphinx/source/requirements.txt index 23ebc0ead2..996574da35 100644 --- a/doc/sphinx/source/requirements.txt +++ b/doc/sphinx/source/requirements.txt @@ -1,5 +1,6 @@ cdo cython +dask[array] matplotlib<3 nc-time-axis netCDF4 @@ -7,7 +8,6 @@ numba numpy pillow prov[dot] -psutil pyyaml shapely six diff --git a/doc/sphinx/source/user_guide2/config.inc b/doc/sphinx/source/user_guide2/config.inc deleted file mode 100644 index dc9a537801..0000000000 --- a/doc/sphinx/source/user_guide2/config.inc +++ /dev/null @@ -1,102 +0,0 @@ -.. _config: - -******************* -Configuration files -******************* - -There are several configuration files in ESMValTool: - - - config-user.yml - - config-developer.yml - - config-references.yml - - environment.yml - -The ``config-user.yml`` file is described here, however, the -other three files are beyond the scope of the user guide. They are described -in the developer guide. - -User config file -================ - -The ``config-user.yml`` configuration file contains all the global level -information needed by ESMValTool. The following shows the default settings from -the ``config-user.yml`` file. - -.. code-block:: yaml - - # Diagnostics create plots? [true]/false - write_plots: true - # Diagnositcs write NetCDF files? [true]/false - write_netcdf: true - # Set the console log level debug, [info], warning, error - log_level: info - # verbosity is deprecated and will be removed in the future - # verbosity: 1 - # Exit on warning? true/[false] - exit_on_warning: false - # Plot file format? [ps]/pdf/png/eps/epsi - output_file_type: pdf - # Destination directory - output_dir: ./esmvaltool_output - # Auxiliary data directory (used for some additional datasets) - auxiliary_data_dir: ./auxiliary_data - # Use netCDF compression true/[false] - compress_netcdf: false - # Save intermediary cubes in the preprocessor true/[false] - save_intermediary_cubes: false - # Remove the preproc dir if all fine - remove_preproc_dir: true - # Run at most this many tasks in parallel null/[1]/2/3/4/.. - # Set to null to use the number of available CPUs. - # Make sure your system has enough memory for the specified number of tasks. - max_parallel_tasks: 1 - # Path to custom config-developer file, to customise project configurations. - # See config-developer.yml for an example. Set to None to use the default - config_developer_file: null - # Get profiling information for diagnostics - # Only available for Python diagnostics - profile_diagnostic: false - - # Rootpaths to the data from different projects (lists are also possible) - rootpath: - CMIP5: [~/cmip5_inputpath1, ~/cmip5_inputpath2] - OBS: ~/obs_inputpath - default: ~/default_inputpath - - # Directory structure for input data: [default]/BADC/DKRZ/ETHZ/etc - # See config-developer.yml for definitions. - drs: - CMIP5: default - -Most of these settings are fairly self-explanatory, ie: - -.. code-block:: yaml - - # Diagnostics create plots? [true]/false - write_plots: true - # Diagnositcs write NetCDF files? [true]/false - write_netcdf: true - -The ``write_plots`` setting is used to inform ESMValTool about your preference -for saving figures. Similarly, the ``write_netcdf`` setting is a boolean which -turns on or off the writing of netCDF files. - -.. code-block:: yaml - - # Auxiliary data directory (used for some additional datasets) - auxiliary_data_dir: ./auxiliary_data - -The ``auxiliary_data_dir`` setting is the path to place any required -additional auxiliary data files. This method was necessary because certain -Python toolkits such as cartopy will attempt to download data files at run -time, typically geographic data files such as coastlines or land surface maps. -This can fail if the machine does not have access to the wider internet. This -location allows us to tell cartopy (and other similar tools) where to find the -files if they can not be downloaded at runtime. To reiterate, this setting is -not for model or observational datasets, rather it is for data files used in -plotting such as coastline descriptions and so on. - - -Tip: You choose your config.yml file at run time, so you could have several -available with different purposes. One for formalised run, one for debugging, -etc... diff --git a/doc/sphinx/source/user_guide2/dirstruct.inc b/doc/sphinx/source/user_guide2/dirstruct.inc deleted file mode 100644 index 767788c6d6..0000000000 --- a/doc/sphinx/source/user_guide2/dirstruct.inc +++ /dev/null @@ -1,5 +0,0 @@ -:: _dirstruct: - -************************************* -Directory structure of the ESMValTool -************************************* diff --git a/doc/sphinx/source/user_guide2/first_diagnostic.inc b/doc/sphinx/source/user_guide2/first_diagnostic.inc deleted file mode 100644 index aeccebdaa0..0000000000 --- a/doc/sphinx/source/user_guide2/first_diagnostic.inc +++ /dev/null @@ -1,96 +0,0 @@ -******************************************** -How to prepare and run your first diagnostic -********************************************* - -Instructiona for personal diagnostic -==================================== - -Anyone can run a personal diagnostic, no matter where the location of it; -there is no need to install esmvaltool in developer mode nor is it to -git push or for that matter, do any git operations; the example recipe - -.. code-block:: bash - esmvaltool/recipes/recipe_my_personal_diagnostic.yml - -shows the use of running a personal diagnostic; the example - -.. code-block:: bash - esmvaltool/diag_scripts/examples/my_little_diagnostic.py - -and any of its alterations may be used as training wheels for the future ESMValTool -diagnostic developer. The purpose of this example is to familiarize the user with -the framework of ESMValTool without the constraints of installing and running the -tool as developer. - -Functionality -============= - -`my_little_diagnostic` (or whatever the user will call their diagnostic) makes full use -of ESMValTool's preprocessor output (both phyisical files and run variables); this output -comes in form of a nested dictionary, or config dictionary, see an example below; -it also makes full use of the ability to call any of the preprocessor's functions, -note that relative imports of modules from the esmvaltool package are allowed and -work without altering the $PYTHONPATH. - -The user may parse this dictionary so that they execute a number of operations on the -preprocessed data; for example the `my_little_diagnostic.plot_time_series` grabs the -preprocessed data output, computes global area averages for each model, then plots -a time-series for each model. Different manipulation functionalities for grouping, -sorting etc of the data in the config dictionary are available, -please consult ESMValTool User Manual. - - -Writing a basic recipe -====================== -The user will need to write a basic recipe to be able to run their own personal diagnostic. -An example of such a recipe is found in `esmvaltool/recipes/recipe_my_personal_diagnostic.yml`. -For general guidelines with regards to ESMValTool recipes please consult the User Guide; -the specific parameters needed by a recipe that runs a personal diagnostic are: - -.. code-block:: bash - scripts: - my_diagnostic: - script: /path/to/your/my_little_diagnostic.py - -i.e. the full path to the personal diagnostic that the user needs to run. - -Example of config dictionary -============================ -``` -{'input_files': -['/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/preproc/simple_pp_ta/metadata.yml'], -'log_level': 'info', -'max_data_filesize': 100, -'myDiag': 'my_personal_diagnostic_example', -'myDiagPlace': '/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu', -'output_file_type': 'pdf', -'plot_dir': '/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/plots/simple/my_diagnostic', 'recipe': 'recipe_my_personal_diagnostic.yml', -'run_dir': '/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/run/simple/my_diagnostic', -'script': 'my_diagnostic', -'title': 'My First Diagnostic', -'version': '2.0a1', -'work_dir': '/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/work/simple/my_diagnostic', -'write_netcdf': True, -'write_plots': True, -'input_data': {'/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/preproc/simple_pp_ta/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T3M_ta_2000-2002.nc': - {'cmor_table': 'CMIP5', - 'dataset': 'MPI-ESM-LR', - 'diagnostic': 'simple', - 'end_year': 2002, - 'ensemble': 'r1i1p1', - 'exp': 'historical', - 'field': 'T3M', - 'filename': '/group_workspaces/jasmin2/cmip6_prep/esmvaltool_users/valeriu/MyDIAG/recipe_my_personal_diagnostic_20181001_112918/preproc/simple_pp_ta/CMIP5_MPI-ESM-LR_Amon_historical_r1i1p1_T3M_ta_2000-2002.nc', - 'fx_files': {'areacello': '/badc/cmip5/data/cmip5/output1/MPI-M/MPI-ESM-LR/historical/fx/ocean/fx/r0i0p0/latest/areacello/areacello_fx_MPI-ESM-LR_historical_r0i0p0.nc', 'sftlf': '/badc/cmip5/data/cmip5/output1/MPI-M/MPI-ESM-LR/historical/fx/atmos/fx/r0i0p0/latest/sftlf/sftlf_fx_MPI-ESM-LR_historical_r0i0p0.nc', 'sftof': '/badc/cmip5/data/cmip5/output1/MPI-M/MPI-ESM-LR/historical/fx/ocean/fx/r0i0p0/latest/sftof/sftof_fx_MPI-ESM-LR_historical_r0i0p0.nc'}, - 'long_name': 'Air Temperature', - 'mip': 'Amon', - 'preprocessor': 'pp', - 'project': 'CMIP5', - 'short_name': 'ta', - 'standard_name': 'air_temperature', - 'start_year': 2000, - 'units': 'K' - } -- end of input_data member value (key: preprocessed file) - } -- end of input_data dictionary -} -- end of config dictionary -``` diff --git a/doc/sphinx/source/user_guide2/index.rst b/doc/sphinx/source/user_guide2/index.rst deleted file mode 100644 index 5728044b44..0000000000 --- a/doc/sphinx/source/user_guide2/index.rst +++ /dev/null @@ -1,14 +0,0 @@ -####################### -User's guide -####################### - -.. include:: intro.inc -.. include:: install.inc -.. include:: config.inc -.. include:: inputdata.inc -.. include:: outputdata.inc -.. include:: observations.inc -.. include:: recipe.inc -.. include:: preprocessor.inc -.. include:: dirstruct.inc -.. include:: running.inc diff --git a/doc/sphinx/source/user_guide2/inputdata.inc b/doc/sphinx/source/user_guide2/inputdata.inc deleted file mode 100644 index b12d1e54ea..0000000000 --- a/doc/sphinx/source/user_guide2/inputdata.inc +++ /dev/null @@ -1,7 +0,0 @@ -:: _inputdata: - -********************** -ESMValTool data finder -********************** - -Documentation of the _data_finder.py module (incl. _download.py?) \ No newline at end of file diff --git a/doc/sphinx/source/user_guide2/outputdata.inc b/doc/sphinx/source/user_guide2/outputdata.inc deleted file mode 100644 index 4acd1eb531..0000000000 --- a/doc/sphinx/source/user_guide2/outputdata.inc +++ /dev/null @@ -1,22 +0,0 @@ -:: _outputdata: - -***************** -ESMValTool output -***************** - -Preprocessed datasets -===================== -preproc/ - -Diagnostic output -================= -work/ - -Plots -===== -plots/ - -Log files -========= -run/ - diff --git a/doc/sphinx/source/user_guide2/preprocessor.inc b/doc/sphinx/source/user_guide2/preprocessor.inc deleted file mode 100644 index 12965d47df..0000000000 --- a/doc/sphinx/source/user_guide2/preprocessor.inc +++ /dev/null @@ -1,400 +0,0 @@ -:: _preprocessor: - -*********************** -ESMValTool Preprocessor -*********************** -The ESMValTool preprocessor can be used to perform all types of climate data pre-processing needed before indices or diagnostics can be calculated. It is a base component for many other diagnostics and metrics shown on this portal. It can be applied to tailor the climate model data to the need of the user for its own calculations. - -Features of the ESMValTool Climate data pre-processor are: - -* Regridding -* Geographical area selection -* Aggregation of data -* Provenance tracking of the calculations -* Model statistics -* Multi-model mean -* and many more - -Variable derivation -=================== -Documentation of _derive.py - - -Time manipulation -================= -The _time.py module contains the following preprocessor functions: - -* extract_time: Extract a time range from a cube. -* extract_season: Extract only the times that occur within a specific season. -* extract_month: Extract only the times that occur within a specific month. -* time_average: Take the weighted average over the time dimension. -* seasonal_mean: Produces a mean for each season (DJF, MAM, JJA, SON) -* annual_mean: Produces an annual or decadal mean. -* regrid_time: Aligns the time axis of each dataset to have common time points and calendars. - -1. extract_time ---------------- - -This function subsets a dataset between two points in times. It removes all -times in the dataset before the first time and after the last time point. -The required arguments are relatively self explanatory: - -* start_year -* start_month -* start_day -* end_year -* end_month -* end_day - -These start and end points are set using the datasets native calendar. -All six arguments should be given as integers - the named month string -will not be accepted. - -See also :func:`esmvaltool.preprocessor.extract_time`. - - -2. extract_season ------------------ - -Extract only the times that occur within a specific season. - -This function only has one argument: `season`. This is the named season to -extract. ie: DJF, MAM, JJA, SON. - -Note that this function does not change the time resolution. If your original -data is in monthly time resolution, then this function will return three -monthly datapoints per year. - -If you want the seasonal average, then this function needs to be combined with -the seasonal_mean function, below. - -See also :func:`esmvaltool.preprocessor.extract_season`. - - -3. extract_month ----------------- - -The function extracts the times that occur within a specific month. -This function only has one argument: `month`. This value should be an integer -between 1 and 12 as the named month string will not be accepted. - -See also :func:`esmvaltool.preprocessor.extract_month`. - - -4. time_average ---------------- - -This functions takes the weighted average over the time dimension. This -function requires no arguments and removes the time dimension of the cube. - -See also :func:`esmvaltool.preprocessor.time_average`. - - -5. seasonal_mean ----------------- - -This function produces a seasonal mean for each season (DJF, MAM, JJA, SON). -Note that this function will not check for missing time points. For instance, -if you are looking at the DJF field, but your datasets starts on January 1st, -the first DJF field will only contain data from January and February. - -We recommend using the extract_time to start the dataset from the following -December and remove such biased initial datapoints. - -See also :func:`esmvaltool.preprocessor.seasonal_mean`. - - -6. annual_mean --------------- - -This function produces an annual or a decadal mean. The only argument is the -decadal boolean switch. When this switch is set to true, this function -will output the decadal averages. - -See also :func:`esmvaltool.preprocessor.annual_mean`. - - -7. regrid_time --------------- - -This function aligns the time points of each component dataset so that the dataset -iris cubes can be subtracted. The operation makes the datasets time points common and -sets common calendars; it also resets the time bounds and auxiliary coordinates to -reflect the artifically shifted time points. Current implementation for monthly -and daily data; the frequency is set automatically from the variable CMOR table -unless a custom frequency is set manually by the user in recipe. - - -Area manipulation -================= -The _area.py module contains the following preprocessor functions: - -* extract_region: Extract a region from a cube based on lat/lon corners. -* zonal_means: Calculates the zonal or meridional means. -* average_region: Calculates the average value over a region. -* extract_named_regions: Extract a specific region from in the region cooordinate. - - -1. extract_region ------------------ - -This function masks data outside a rectagular region requested. The boundairies -of the region are provided as latitude and longitude coordinates in the -arguments: - -* start_longitude -* end_longitude -* start_latitude -* end_latitude - -Note that this function can only be used to extract a rectangular region. - -See also :func:`esmvaltool.preprocessor.extract_region`. - - -2. zonal_means --------------- - -The function calculates the zonal or meridional means. While this function is -named `zonal_mean`, it can be used to apply several different operations in -an zonal or meridional direction. -This function takes two arguments: - -* coordinate: Which direction to apply the operation: latitude or longitude -* mean_type: Which operation to apply: mean, std_dev, variance, median, min or max - -See also :func:`esmvaltool.preprocessor.zonal_means`. - - -3. average_region ------------------ - -This function calculates the average value over a region - weighted by the -cell areas of the region. - -This function takes three arguments: -coord1: the name of the coordinate in the first direction. -coord2: the name of the coordinate in the second dimension. -operator: the name of the operation to apply (default: mean). - -While this function is named `average_region`, it can be used to apply several -different operations in the horizonal plane: mean, standard deviation, median -variance, minimum and maximum. - -Note that this function is applied over the entire dataset. If only a specific -region, depth layer or time period is required, then those regions need to be -removed using other preprocessor operations in advance. - -See also :func:`esmvaltool.preprocessor.average_region`. - - -4. extract_named_regions ------------------------- - -This function extract a specific named region from the data. This function -takes the following argument: `regions` which is either a string or a list -of strings of named regions. Note that the dataset must have a `region` -cooordinate which includes a list of strings as values. This function then -matches the named regions against the requested string. - -See also :func:`esmvaltool.preprocessor.extract_named_regions`. - - -Volume manipulation -=================== -The _volume.py module contains the following preprocessor functions: - -* extract_volume: Extract a specific depth range from a cube. -* average_volume: Calculate the volume-weighted average. -* depth_integration: Integrate over the depth dimension. -* extract_transect: Extract data along a line of constant latitude or longitude. -* extract_trajectory: Extract data along a specified trajectory. - - -1. extract_volume ------------------ - -Extract a specific range in the z-direction from a cube. This function -takes two arguments, a minimum and a maximum (`z_min` and `z_max`, -respectively) in the z direction. - -Note that this requires the requested z-coordinate range to be the -same sign as the iris cube. ie, if the cube has z-coordinate as -negative, then z_min and z_max need to be negative numbers. - -See also :func:`esmvaltool.preprocessor.extract_volume`. - - -2. average_volume ------------------ - -This function calculates the volume-weighted average across three dimensions, -but maintains the time dimension. The following arguments are required: - -coord1: the name of the coordinate in the first direction. -coord2: the name of the coordinate in the second dimension. - -No depth coordinate is required as this is determined by iris. This -function works best when the fx_files provide the cell volume. - -See also :func:`esmvaltool.preprocessor.average_volume`. - - -3. depth_integration --------------------- - -This function integrate over the depth dimension. This function does a -weighted sum along the z-coordinate, and removes the z direction of the output -cube. This preprocessor takes no arguments. - -See also :func:`esmvaltool.preprocessor.depth_integration`. - - -4. extract_transect -------------------- - -This function extract data along a line of constant latitude or longitude. -This function takes two arguments, although only one is strictly required. -The two arguments are `latitude` and `longitude`. One of these arguments -needs to be set to a float, and the other can then be either ignored or set to -a minimum or maximum value. -Ie: If we set latitude to 0 N and leave longitude blank, it would produce a -cube along the equator. On the other hand, if we set latitude to 0 and then -set longitude to `[40., 100.]` this will produce a transect of the equator -in the indian ocean. - -See also :func:`esmvaltool.preprocessor.extract_transect`. - - -5. extract_trajectory ---------------------- - -This function extract data along a specified trajectory. -The three areguments are: latitudes and longitudes are the coordinates of the -trajectory. - -If two points are provided, the `number_points` argument is used to set a -the number of places to extract between the two end points. - -If more than two points are provided, then -extract_trajectory will produce a cube which has extrapolated the data -of the cube to those points, and `number_points` is not needed. - -Note that this function uses the expensive interpolate method, but it may be -necceasiry for irregular grids. - -See also :func:`esmvaltool.preprocessor.extract_trajectory`. - - -CMORization and dataset-specific fixes -====================================== -Documentation of _reformat.py, check.py and fix.py - -Vertical interpolation -====================== -Documentation of _regrid.py (part 1) - -Land/Sea/Ice Masking -==================== -Documentation of _mask.py (part 1) - -Certain metrics and diagnostics need to be computed and performed on restricted regions of the Globe; ESMValTool supports subsetting the input data on land mass, oceans and seas, ice. This is achived by masking the model data and keeping only the values associated with grid points that correspond to e.g. land mass -or oceans and seas; masking is done either by using standard mask files that have the same grid resolution as the model data (these files are usually produced -at the same time with the model data and are called fx files) or, in the absence of these files, by using Natural Earth masks. Natural Earth masks, even if they are not model-specific, represent a good approximation since their grid resolution is almost always much higher than the model data, and they are constantly updated with changing -geographical features. - -In ESMValTool v2 land-seas-ice masking can be done in two places: in the preprocessor, to apply a mask on the data before any subsequent preprocessing step, and before -running the diagnostic, or in the disgnostic phase. We present both these implementations below. - -To mask out seas in the preprocessor step, simply add `mask_landsea:` as a preprocessor step in the `preprocessor` of your choice section of the recipe, example: - -.. code-block:: bash - - preprocessors: - my_masking_preprocessor: - mask_landsea: - mask_out: sea - -The tool will retrieve the corresponding `fx: stfof` type of mask for each of the used variables and apply the mask so that only the land mass points are -kept in the data after applying the mask; conversely, it will retrieve the `fx: sftlf` files when land needs to be masked out. -`mask_out` accepts: land or sea as values. If the corresponding fx file is not found (some models are missing these -type of files; observational data is missing them altogether), then the tool attempts to mask using Natural Earth mask files (that are vectorized rasters). -Note that the resolutions for the Natural Earth masks are much higher than any usual CMIP model: 10m for land and 50m for ocean masks. - -Note that for masking out ice the preprocessor is using a different function, this so that both land and sea or ice can be masked out without -losing generality. To mask ice out one needs to add the preprocessing step much as above: - -.. code-block:: bash - - preprocessors: - my_masking_preprocessor: - mask_landseaice: - mask_out: ice - -To keep only the ice, one needs to mask out landsea, so use that as value for mask_out. As in the case of mask_landsea, the tool will automatically -retrieve the `fx: sftgif` file corresponding the the used variable and extract the ice mask from it. - -At the core of the land/sea/ice masking in the preprocessor are the mask files (whether it be fx type or Natural Earth type of files); these files (bar Natural Earth) -can be retrived and used in the diagnostic phase as well or solely. By specifying the `fx_files:` key in the variable in diagnostic in the recipe, and populating it -with a list of desired files e.g.: - -.. code-block:: bash - - variables: - ta: - preprocessor: my_masking_preprocessor - fx_files: [sftlf, sftof, sftgif, areacello, areacella] - -Such a recipe will automatically retrieve all the `[sftlf, sftof, sftgif, areacello, areacella]`-type fx files for each of the variables that are needed for -and then, in the diagnostic phase, these mask files will be available for the developer to use them as they need to. They `fx_files` attribute of the big `variable` -nested dictionary that gets passed to the diagnostic is, in turn, a dictionary on its own, and members of it can be accessed in the diagnostic through a simple loop over -the 'config' diagnostic variable items e.g.: - -.. code-block:: bash - - for filename, attributes in config['input_data'].items(): - sftlf_file = attributes['fx_files']['sftlf'] - areacello_file = attributes['fx_files']['areacello'] - - -Horizontal regridding -===================== -Documentation of _regrid.py (part 2) - -Masking of missing values -========================= -Documentation of _mask.py (part 2) - -Multi-model statistics -====================== -Documentation of_multimodel.py - -Time-area statistics -==================== -Documentation of _area_pp.py and _volume_pp.py - -Information on maximum memory required -====================================== -In the most general case, we can set upper limits on the maximum memory the anlysis will require: - - -Ms = (R + N) x F_eff - F_eff - when no multimodel analysis is performed; -Mm = (2R + N) x F_eff - 2F_eff - when multimodel analysis is performed; - -where - -Ms: maximum memory for non-multimodel module -Mm: maximum memory for multimodel module -R: computational efficiency of module; R is typically 2-3 -N: number of datasets -F_eff: average size of data per dataset where F_eff = e x f x F -where e is the factor that describes how lazy the data is (e = 1 for fully realized data) -and f describes how much the data was shrunk by the immediately previous module eg -time extraction, area selection or level extraction; note that for fix_data f relates only to the time extraction, if data is exact in time (no time selection) f = 1 for fix_data - -so for cases when we deal with a lot of datasets (R + N = N), data is fully realized, assuming an average size of 1.5GB for 10 years of 3D netCDF data, N datasets will require - - -Ms = 1.5 x (N - 1) GB -Mm = 1.5 x (N - 2) GB -======= diff --git a/doc/sphinx/source/user_guide2/recipe.inc b/doc/sphinx/source/user_guide2/recipe.inc deleted file mode 100644 index 23311999e2..0000000000 --- a/doc/sphinx/source/user_guide2/recipe.inc +++ /dev/null @@ -1,5 +0,0 @@ -.. _recipe: - -***************** -ESMValTool recipe -***************** diff --git a/doc/sphinx/source/user_guide2/running.inc b/doc/sphinx/source/user_guide2/running.inc deleted file mode 100644 index 3f63f0dd8f..0000000000 --- a/doc/sphinx/source/user_guide2/running.inc +++ /dev/null @@ -1,30 +0,0 @@ -:: _running: - -********************** -Running the ESMValTool -********************** - -To run ESMValTool, use the command - -.. code:: bash - - esmvaltool -c /path/to/config-user.yml examples/recipe_python.yml - -This will run the example recipe_python.yml. The path to the recipe -can either be the path to a recipe file, or a path relative to the -esmvaltool/recipes directory of your installed ESMValTool. See the chapter -`User config file`_ for an explanation of how to create your own -config-user.yml file. - -To get help on additional commands, please use - -.. code:: bash - - esmvaltool --help - - - -Available diagnostics and metrics -================================= - -See :ref:`recipes` for a description of all available recipes. diff --git a/environment.yml b/environment.yml index cfb41cda75..8f4956a919 100644 --- a/environment.yml +++ b/environment.yml @@ -2,10 +2,12 @@ name: esmvaltool channels: - conda-forge + - esmvalgroup dependencies: # Python packages that cannot be installed from PyPI: - esmpy + - esmvalcore>=2.0.0b0,<2.1 - iris>=2.2 - matplotlib<3 # Can be installed from PyPI, but is a dependency of iris and should be pinned. - python-stratify diff --git a/esmvaltool/__init__.py b/esmvaltool/__init__.py index db052f292e..bfd9930e1b 100644 --- a/esmvaltool/__init__.py +++ b/esmvaltool/__init__.py @@ -1,12 +1,2 @@ -import logging -import os - -from ._version import __version__ - -logger = logging.getLogger(__name__) -logger.addHandler(logging.NullHandler()) - - -def get_script_root(): - """Return the location of the ESMValTool installation.""" - return os.path.abspath(os.path.dirname(__file__)) +"""ESMValTool diagnostics package.""" +__version__ = '2.0.0b0' diff --git a/esmvaltool/_config.py b/esmvaltool/_config.py deleted file mode 100644 index 221c06d026..0000000000 --- a/esmvaltool/_config.py +++ /dev/null @@ -1,218 +0,0 @@ -"""ESMValTool configuration.""" -import datetime -import logging -import logging.config -import os -import time -from distutils.version import LooseVersion - -import iris -import six -import yaml - -from .cmor.table import read_cmor_tables - -logger = logging.getLogger(__name__) - -CFG = {} -CFG_USER = {} - - -def use_legacy_iris(): - """Return True if legacy iris is used.""" - return LooseVersion(iris.__version__) < LooseVersion("2.0.0") - - -def read_config_user_file(config_file, recipe_name): - """Read config user file and store settings in a dictionary.""" - with open(config_file, 'r') as file: - cfg = yaml.safe_load(file) - - # set defaults - defaults = { - 'write_plots': True, - 'write_netcdf': True, - 'compress_netcdf': False, - 'exit_on_warning': False, - 'max_data_filesize': 100, - 'output_file_type': 'ps', - 'output_dir': './output_dir', - 'auxiliary_data_dir': './auxiliary_data', - 'save_intermediary_cubes': False, - 'remove_preproc_dir': False, - 'max_parallel_tasks': 1, - 'run_diagnostic': True, - 'profile_diagnostic': False, - 'config_developer_file': None, - 'drs': {}, - } - - for key in defaults: - if key not in cfg: - logger.info( - "No %s specification in config file, " - "defaulting to %s", key, defaults[key]) - cfg[key] = defaults[key] - - cfg['output_dir'] = _normalize_path(cfg['output_dir']) - cfg['auxiliary_data_dir'] = _normalize_path(cfg['auxiliary_data_dir']) - - cfg['config_developer_file'] = _normalize_path( - cfg['config_developer_file']) - - for key in cfg['rootpath']: - root = cfg['rootpath'][key] - if isinstance(root, six.string_types): - cfg['rootpath'][key] = [_normalize_path(root)] - else: - cfg['rootpath'][key] = [_normalize_path(path) for path in root] - - # insert a directory date_time_recipe_usertag in the output paths - now = datetime.datetime.utcnow().strftime("%Y%m%d_%H%M%S") - new_subdir = '_'.join((recipe_name, now)) - cfg['output_dir'] = os.path.join(cfg['output_dir'], new_subdir) - - # create subdirectories - cfg['preproc_dir'] = os.path.join(cfg['output_dir'], 'preproc') - cfg['work_dir'] = os.path.join(cfg['output_dir'], 'work') - cfg['plot_dir'] = os.path.join(cfg['output_dir'], 'plots') - cfg['run_dir'] = os.path.join(cfg['output_dir'], 'run') - - # Save user configuration in global variable - for key, value in six.iteritems(cfg): - CFG_USER[key] = value - - # Read developer configuration file - cfg_developer = read_config_developer_file(cfg['config_developer_file']) - for key, value in six.iteritems(cfg_developer): - CFG[key] = value - read_cmor_tables(CFG) - - return cfg - - -def get_config_user_file(): - """Return user configuration dictionary.""" - return CFG_USER - - -def _normalize_path(path): - """Normalize paths. - - Expand ~ character and environment variables and convert path to absolute. - - Parameters - ---------- - path: str - Original path - - Returns - ------- - str: - Normalized path - - """ - if path is None: - return None - return os.path.abspath(os.path.expanduser(os.path.expandvars(path))) - - -def read_config_developer_file(cfg_file=None): - """Read the developer's configuration file.""" - if cfg_file is None: - cfg_file = os.path.join( - os.path.dirname(__file__), - 'config-developer.yml', - ) - - with open(cfg_file, 'r') as file: - cfg = yaml.safe_load(file) - - return cfg - - -def configure_logging(cfg_file=None, output=None, console_log_level=None): - """Set up logging.""" - if cfg_file is None: - cfg_file = os.path.join( - os.path.dirname(__file__), 'config-logging.yml') - - if output is None: - output = os.getcwd() - - cfg_file = os.path.abspath(cfg_file) - with open(cfg_file) as file_handler: - cfg = yaml.safe_load(file_handler) - - log_files = [] - for handler in cfg['handlers'].values(): - if 'filename' in handler: - if not os.path.isabs(handler['filename']): - handler['filename'] = os.path.join(output, handler['filename']) - log_files.append(handler['filename']) - if console_log_level is not None and 'stream' in handler: - if handler['stream'] in ('ext://sys.stdout', 'ext://sys.stderr'): - handler['level'] = console_log_level.upper() - - logging.config.dictConfig(cfg) - logging.Formatter.converter = time.gmtime - logging.captureWarnings(True) - - return log_files - - -def get_project_config(project): - """Get developer-configuration for project.""" - logger.debug("Retrieving %s configuration", project) - return CFG[project] - - -def get_institutes(variable): - """Return the institutes given the dataset name in CMIP5.""" - dataset = variable['dataset'] - project = variable['project'] - logger.debug("Retrieving institutes for dataset %s", dataset) - return CFG.get(project, {}).get('institutes', {}).get(dataset, []) - - -def replace_mip_fx(fx_file): - """Replace MIP so to retrieve correct fx files.""" - default_mip = 'Amon' - if fx_file not in CFG['CMIP5']['fx_mip_change']: - logger.warning( - 'mip for fx variable %s is not specified in ' - 'config_developer.yml, using default (%s)', fx_file, default_mip) - new_mip = CFG['CMIP5']['fx_mip_change'].get(fx_file, default_mip) - logger.debug("Switching mip for fx file finding to %s", new_mip) - return new_mip - - -TAGS_CONFIG_FILE = os.path.join( - os.path.dirname(__file__), 'config-references.yml') - - -def _load_tags(filename=TAGS_CONFIG_FILE): - """Load the refence tags used for provenance recording.""" - logger.debug("Loading tags from %s", filename) - with open(filename) as file: - return yaml.safe_load(file) - - -TAGS = _load_tags() - - -def get_tag_value(section, tag): - """Retrieve the value of a tag.""" - if section not in TAGS: - raise ValueError("Section '{}' does not exist in {}".format( - section, TAGS_CONFIG_FILE)) - if tag not in TAGS[section]: - raise ValueError( - "Tag '{}' does not exist in section '{}' of {}".format( - tag, section, TAGS_CONFIG_FILE)) - return TAGS[section][tag] - - -def replace_tags(section, tags): - """Replace a list of tags with their values.""" - return tuple(get_tag_value(section, tag) for tag in tags) diff --git a/esmvaltool/_data_finder.py b/esmvaltool/_data_finder.py deleted file mode 100644 index ba6e21d532..0000000000 --- a/esmvaltool/_data_finder.py +++ /dev/null @@ -1,297 +0,0 @@ -"""Data finder module for the ESMValTool.""" -# Authors: -# Bouwe Andela (eScience, NL - b.andela@esciencecenter.nl) -# Valeriu Predoi (URead, UK - valeriu.predoi@ncas.ac.uk) -# Mattia Righi (DLR, Germany - mattia.righi@dlr.de) - -import fnmatch -import logging -import os -import re - -import six - -from ._config import get_project_config, replace_mip_fx -from .cmor.table import CMOR_TABLES - -logger = logging.getLogger(__name__) - - -def find_files(dirnames, filenames): - """Find files matching filenames in dirnames.""" - logger.debug("Looking for files matching %s in %s", filenames, dirnames) - - result = [] - for dirname in dirnames: - for path, _, files in os.walk(dirname, followlinks=True): - for filename in filenames: - matches = fnmatch.filter(files, filename) - result.extend(os.path.join(path, f) for f in matches) - - return result - - -def get_start_end_year(filename): - """Get the start and end year from a file name. - - This works for filenames matching - - *[-,_]YYYY*[-,_]YYYY*.* - or - *[-,_]YYYY*.* - or - YYYY*[-,_]*.* - or - YYYY*[-,_]YYYY*[-,_]*.* - or - YYYY*[-,_]*[-,_]YYYY*.* (Does this make sense? Is this worth catching?) - """ - name = os.path.splitext(filename)[0] - - filename = name.split(os.sep)[-1] - filename_list = [elem.split('-') for elem in filename.split('_')] - filename_list = [elem for sublist in filename_list for elem in sublist] - - pos_ydates = [elem.isdigit() and len(elem) >= 4 for elem in filename_list] - pos_ydates_l = list(pos_ydates) - pos_ydates_r = list(pos_ydates) - - for ind, _ in enumerate(pos_ydates_l): - if ind != 0: - pos_ydates_l[ind] = (pos_ydates_l[ind - 1] and pos_ydates_l[ind]) - - for ind, _ in enumerate(pos_ydates_r): - if ind != 0: - pos_ydates_r[-ind - 1] = (pos_ydates_r[-ind] - and pos_ydates_r[-ind - 1]) - - dates = [ - filename_list[ind] for ind, _ in enumerate(pos_ydates) - if pos_ydates_r[ind] or pos_ydates_l[ind] - ] - - if len(dates) == 1: - start_year = int(dates[0][:4]) - end_year = start_year - elif len(dates) == 2: - start_year, end_year = int(dates[0][:4]), int(dates[1][:4]) - else: - raise ValueError('Name {0} dates do not match a recognized ' - 'pattern'.format(name)) - - return start_year, end_year - - -def select_files(filenames, start_year, end_year): - """Select files containing data between start_year and end_year. - - This works for filenames matching *_YYYY*-YYYY*.* or *_YYYY*.* - """ - selection = [] - for filename in filenames: - start, end = get_start_end_year(filename) - if start <= end_year and end >= start_year: - selection.append(filename) - return selection - - -def _replace_tags(path, variable, fx_var=None): - """Replace tags in the config-developer's file with actual values.""" - path = path.strip('/') - - tlist = re.findall(r'\[([^]]*)\]', path) - - paths = [path] - for tag in tlist: - original_tag = tag - tag, _, _ = _get_caps_options(tag) - - if tag == 'fx_var': - replacewith = fx_var - elif tag == 'latestversion': # handled separately later - continue - elif tag in variable: - replacewith = variable[tag] - else: - raise KeyError("Dataset key {} must be specified for {}, check " - "your recipe entry".format(tag, variable)) - - paths = _replace_tag(paths, original_tag, replacewith) - - return paths - - -def _replace_tag(paths, tag, replacewith): - """Replace tag by replacewith in paths.""" - _, lower, upper = _get_caps_options(tag) - result = [] - if isinstance(replacewith, (list, tuple)): - for item in replacewith: - result.extend(_replace_tag(paths, tag, item)) - else: - text = _apply_caps(str(replacewith), lower, upper) - result.extend(p.replace('[' + tag + ']', text) for p in paths) - return result - - -def _get_caps_options(tag): - lower = False - upper = False - if tag.endswith('.lower'): - lower = True - tag = tag[0:-6] - elif tag.endswith('.upper'): - upper = True - tag = tag[0:-6] - return tag, lower, upper - - -def _apply_caps(original, lower, upper): - if lower: - return original.lower() - if upper: - return original.upper() - return original - - -def _resolve_latestversion(dirname_template): - """Resolve the 'latestversion' tag.""" - if '[latestversion]' not in dirname_template: - return dirname_template - - # Find latest version - part1, part2 = dirname_template.split('[latestversion]') - part2 = part2.lstrip(os.sep) - if os.path.exists(part1): - versions = os.listdir(part1) - versions.sort(reverse=True) - for version in ['latest'] + versions: - dirname = os.path.join(part1, version, part2) - if os.path.isdir(dirname): - return dirname - - return dirname_template - - -def _select_drs(input_type, drs, project): - """Select the directory structure of input path.""" - cfg = get_project_config(project) - input_path = cfg[input_type] - if isinstance(input_path, six.string_types): - return input_path - - structure = drs.get(project, 'default') - if structure in input_path: - return input_path[structure] - - raise KeyError( - 'drs {} for {} project not specified in config-developer file'.format( - structure, project)) - - -def get_rootpath(rootpath, project): - """Select the rootpath.""" - if project in rootpath: - return rootpath[project] - if 'default' in rootpath: - return rootpath['default'] - raise KeyError('default rootpath must be specified in config-user file') - - -def _find_input_dirs(variable, rootpath, drs, fx_var=None): - """Return a the full paths to input directories.""" - project = variable['project'] - - root = get_rootpath(rootpath, project) - input_type = 'input_{}dir'.format('fx_' if fx_var else '') - path_template = _select_drs(input_type, drs, project) - - dirnames = [] - for dirname_template in _replace_tags(path_template, variable, fx_var): - for base_path in root: - dirname = os.path.join(base_path, dirname_template) - dirname = _resolve_latestversion(dirname) - if os.path.exists(dirname): - logger.debug("Found %s", dirname) - dirnames.append(dirname) - else: - logger.debug("Skipping non-existent %s", dirname) - - return dirnames - - -def _get_filenames_glob(variable, drs, fx_var=None): - """Return patterns that can be used to look for input files.""" - input_type = 'input_{}file'.format('fx_' if fx_var else '') - path_template = _select_drs(input_type, drs, variable['project']) - filenames_glob = _replace_tags(path_template, variable, fx_var) - return filenames_glob - - -def _find_input_files(variable, rootpath, drs, fx_var=None): - logger.debug("Looking for input %sfiles for variable %s of dataset %s", - fx_var + ' fx ' if fx_var else '', variable['short_name'], - variable['dataset']) - - input_dirs = _find_input_dirs(variable, rootpath, drs, fx_var) - filenames_glob = _get_filenames_glob(variable, drs, fx_var) - files = find_files(input_dirs, filenames_glob) - - return files - - -def get_input_filelist(variable, rootpath, drs): - """Return the full path to input files.""" - files = _find_input_files(variable, rootpath, drs) - files = select_files(files, variable['start_year'], variable['end_year']) - return files - - -def get_input_fx_filelist(variable, rootpath, drs): - """Return a dict with the full path to fx input files.""" - fx_files = {} - for fx_var in variable['fx_files']: - var = dict(variable) - var['mip'] = replace_mip_fx(fx_var) - table = CMOR_TABLES[var['cmor_table']].get_table(var['mip']) - var['frequency'] = table.frequency - realm = getattr(table.get(var['short_name']), 'modeling_realm', None) - var['modeling_realm'] = realm if realm else table.realm - - files = _find_input_files(var, rootpath, drs, fx_var) - fx_files[fx_var] = files[0] if files else None - - return fx_files - - -def get_output_file(variable, preproc_dir): - """Return the full path to the output (preprocessed) file.""" - cfg = get_project_config(variable['project']) - - # Join different experiment names - if isinstance(variable.get('exp'), (list, tuple)): - variable = dict(variable) - variable['exp'] = '-'.join(variable['exp']) - - outfile = os.path.join( - preproc_dir, - variable['diagnostic'], - variable['variable_group'], - _replace_tags(cfg['output_file'], variable)[0] + '.nc', - ) - - return outfile - - -def get_statistic_output_file(variable, preproc_dir): - """Get multi model statistic filename depending on settings.""" - template = os.path.join( - preproc_dir, - '{diagnostic}', - '{variable_group}', - '{dataset}_{mip}_{short_name}_{start_year}-{end_year}.nc', - ) - - outfile = template.format(**variable) - - return outfile diff --git a/esmvaltool/_main.py b/esmvaltool/_main.py deleted file mode 100755 index c8a2dab022..0000000000 --- a/esmvaltool/_main.py +++ /dev/null @@ -1,249 +0,0 @@ -"""ESMValTool - Earth System Model Evaluation Tool. - -http://www.esmvaltool.org - -CORE DEVELOPMENT TEAM AND CONTACTS: - Veronika Eyring (PI; DLR, Germany - veronika.eyring@dlr.de) - Bouwe Andela (NLESC, Netherlands - b.andela@esciencecenter.nl) - Bjoern Broetz (DLR, Germany - bjoern.broetz@dlr.de) - Lee de Mora (PML, UK - ledm@pml.ac.uk) - Niels Drost (NLESC, Netherlands - n.drost@esciencecenter.nl) - Nikolay Koldunov (AWI, Germany - nikolay.koldunov@awi.de) - Axel Lauer (DLR, Germany - axel.lauer@dlr.de) - Benjamin Mueller (LMU, Germany - b.mueller@iggf.geo.uni-muenchen.de) - Valeriu Predoi (URead, UK - valeriu.predoi@ncas.ac.uk) - Mattia Righi (DLR, Germany - mattia.righi@dlr.de) - Manuel Schlund (DLR, Germany - manuel.schlund@dlr.de) - Javier Vegas-Regidor (BSC, Spain - javier.vegas@bsc.es) - -For further help, please read the documentation at -http://esmvaltool.readthedocs.io. Have fun! -""" - -# ESMValTool main script -# -# Authors: -# Bouwe Andela (NLESC, Netherlands - b.andela@esciencecenter.nl) -# Valeriu Predoi (URead, UK - valeriu.predoi@ncas.ac.uk) -# Mattia Righi (DLR, Germany - mattia.righi@dlr.de) - -import argparse -import datetime -import errno -import glob -import logging -import os -import shutil -import sys -from multiprocessing import cpu_count - -from . import __version__ -from ._config import configure_logging, read_config_user_file -from ._recipe import TASKSEP, read_recipe_file -from ._task import resource_usage_logger - -# set up logging -logger = logging.getLogger(__name__) - -HEADER = r""" -______________________________________________________________________ - _____ ____ __ ____ __ _ _____ _ - | ____/ ___|| \/ \ \ / /_ _| |_ _|__ ___ | | - | _| \___ \| |\/| |\ \ / / _` | | | |/ _ \ / _ \| | - | |___ ___) | | | | \ V / (_| | | | | (_) | (_) | | - |_____|____/|_| |_| \_/ \__,_|_| |_|\___/ \___/|_| -______________________________________________________________________ - -""" + __doc__ - - -def get_args(): - """Define the `esmvaltool` command line.""" - # parse command line args - parser = argparse.ArgumentParser( - description=HEADER, - formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('recipe', help='Path or name of the yaml recipe file') - parser.add_argument( - '-v', - '--version', - action='version', - version=__version__, - help="return ESMValTool's version number and exit") - parser.add_argument( - '-c', - '--config-file', - default=os.path.join(os.path.dirname(__file__), 'config-user.yml'), - help='Config file') - parser.add_argument( - '-s', - '--synda-download', - action='store_true', - help='Download input data using synda. This requires a working ' - 'synda installation.') - parser.add_argument( - '--max-datasets', - type=int, - help='Try to limit the number of datasets used to MAX_DATASETS.') - parser.add_argument( - '--max-years', - type=int, - help='Limit the number of years to MAX_YEARS.') - parser.add_argument( - '--skip-nonexistent', - action='store_true', - help="Skip datasets that cannot be found.") - parser.add_argument( - '--diagnostics', - nargs='*', - help="Only run the named diagnostics from the recipe.") - args = parser.parse_args() - return args - - -def main(args): - """Define the `esmvaltool` program.""" - recipe = args.recipe - if not os.path.exists(recipe): - installed_recipe = os.path.join( - os.path.dirname(__file__), 'recipes', recipe) - if os.path.exists(installed_recipe): - recipe = installed_recipe - recipe = os.path.abspath(os.path.expandvars(os.path.expanduser(recipe))) - - config_file = os.path.abspath( - os.path.expandvars(os.path.expanduser(args.config_file))) - - # Read user config file - if not os.path.exists(config_file): - print("ERROR: config file {} does not exist".format(config_file)) - - recipe_name = os.path.splitext(os.path.basename(recipe))[0] - cfg = read_config_user_file(config_file, recipe_name) - - # Create run dir - if os.path.exists(cfg['run_dir']): - print("ERROR: run_dir {} already exists, aborting to " - "prevent data loss".format(cfg['output_dir'])) - os.makedirs(cfg['run_dir']) - - # configure logging - log_files = configure_logging( - output=cfg['run_dir'], console_log_level=cfg['log_level']) - - # log header - logger.info(HEADER) - - logger.info("Using config file %s", config_file) - logger.info("Writing program log files to:\n%s", "\n".join(log_files)) - - cfg['skip-nonexistent'] = args.skip_nonexistent - cfg['diagnostics'] = { - pattern if TASKSEP in pattern else pattern + TASKSEP + '*' - for pattern in args.diagnostics or () - } - cfg['synda_download'] = args.synda_download - for limit in ('max_datasets', 'max_years'): - value = getattr(args, limit) - if value is not None: - if value < 1: - raise ValueError("--{} should be larger than 0.".format( - limit.replace('_', '-'))) - cfg[limit] = value - - resource_log = os.path.join(cfg['run_dir'], 'resource_usage.txt') - with resource_usage_logger(pid=os.getpid(), filename=resource_log): - process_recipe(recipe_file=recipe, config_user=cfg) - return cfg - - -def process_recipe(recipe_file, config_user): - """Process recipe.""" - if not os.path.isfile(recipe_file): - raise OSError(errno.ENOENT, "Specified recipe file does not exist", - recipe_file) - - timestamp1 = datetime.datetime.utcnow() - timestamp_format = "%Y-%m-%d %H:%M:%S" - - logger.info( - "Starting the Earth System Model Evaluation Tool v%s at time: %s UTC", - __version__, timestamp1.strftime(timestamp_format)) - - logger.info(70 * "-") - logger.info("RECIPE = %s", recipe_file) - logger.info("RUNDIR = %s", config_user['run_dir']) - logger.info("WORKDIR = %s", config_user["work_dir"]) - logger.info("PREPROCDIR = %s", config_user["preproc_dir"]) - logger.info("PLOTDIR = %s", config_user["plot_dir"]) - logger.info(70 * "-") - - logger.info("Running tasks using at most %s processes", - config_user['max_parallel_tasks'] or cpu_count()) - - logger.info( - "If your system hangs during execution, it may not have enough " - "memory for keeping this number of tasks in memory. In that case, " - "try reducing 'max_parallel_tasks' in your user configuration file.") - - if config_user['compress_netcdf']: - logger.warning( - "You have enabled NetCDF compression. Accesing .nc files can be " - "much slower than expected if your access pattern does not match " - "their internal pattern. Make sure to specify the expected " - "access pattern in the recipe as a parameter to the 'save' " - "preprocessor function. If the problem persists, try disabling " - "NetCDF compression.") - - # copy recipe to run_dir for future reference - shutil.copy2(recipe_file, config_user['run_dir']) - - # parse recipe - recipe = read_recipe_file(recipe_file, config_user) - logger.debug("Recipe summary:\n%s", recipe) - - # run - recipe.run() - - # End time timing - timestamp2 = datetime.datetime.utcnow() - logger.info( - "Ending the Earth System Model Evaluation Tool v%s at time: %s UTC", - __version__, timestamp2.strftime(timestamp_format)) - logger.info("Time for running the recipe was: %s", timestamp2 - timestamp1) - - # Remind the user about reference/acknowledgement file - out_refs = glob.glob( - os.path.join(config_user['output_dir'], '*', '*', - 'references-acknowledgements.txt')) - logger.info( - "For the required references/acknowledgements of these " - "diagnostics see:\n%s", '\n'.join(out_refs)) - - -def run(): - """Run the `esmvaltool` program, logging any exceptions.""" - args = get_args() - try: - conf = main(args) - except: # noqa - if not logger.handlers: - # Add a logging handler if main failed to do so. - logging.basicConfig() - logger.exception( - "Program terminated abnormally, see stack trace " - "below for more information", - exc_info=True) - logger.info( - "If you suspect this is a bug or need help, please open an issue " - "on https://github.com/ESMValGroup/ESMValTool/issues and attach " - "the run/recipe_*.yml and run/main_log_debug.txt files from the " - "output directory.") - sys.exit(1) - else: - if conf["remove_preproc_dir"]: - logger.info("Removing preproc containing preprocessed data") - logger.info("If this data is further needed, then") - logger.info("set remove_preproc_dir to false in config") - shutil.rmtree(conf["preproc_dir"]) - logger.info("Run was successful") diff --git a/esmvaltool/_provenance.py b/esmvaltool/_provenance.py deleted file mode 100644 index 6a6685d135..0000000000 --- a/esmvaltool/_provenance.py +++ /dev/null @@ -1,258 +0,0 @@ -"""Provenance module.""" -import copy -import logging -import os - -from netCDF4 import Dataset -from PIL import Image -from PIL.PngImagePlugin import PngInfo -from prov.dot import prov_to_dot -from prov.model import ProvDocument - -from ._version import __version__ - -logger = logging.getLogger(__name__) - -ESMVALTOOL_URI_PREFIX = 'https://www.esmvaltool.org/' - - -def update_without_duplicating(bundle, other): - """Add new records from other provenance bundle.""" - for record in other.records: - if record not in bundle.records: - bundle.add_record(record) - - -def create_namespace(provenance, namespace): - """Create an esmvaltool namespace.""" - provenance.add_namespace(namespace, uri=ESMVALTOOL_URI_PREFIX + namespace) - - -def get_esmvaltool_provenance(): - """Create an esmvaltool run activity.""" - provenance = ProvDocument() - namespace = 'software' - create_namespace(provenance, namespace) - attributes = {} # TODO: add dependencies with versions here - activity = provenance.activity( - namespace + ':esmvaltool==' + __version__, other_attributes=attributes) - - return activity - - -ESMVALTOOL_PROVENANCE = get_esmvaltool_provenance() - - -def attribute_to_authors(entity, authors): - """Attribute entity to authors.""" - namespace = 'author' - create_namespace(entity.bundle, namespace) - - for author in authors: - agent = entity.bundle.agent( - namespace + ':' + author['name'], - {'attribute:' + k: author[k] - for k in author if k != 'name'}) - entity.wasAttributedTo(agent) - - -def attribute_to_projects(entity, projects): - """Attribute entity to projecs.""" - namespace = 'project' - create_namespace(entity.bundle, namespace) - - for project in projects: - agent = entity.bundle.agent(namespace + ':' + project) - entity.wasAttributedTo(agent) - - -def get_recipe_provenance(documentation, filename): - """Create a provenance entity describing a recipe.""" - provenance = ProvDocument() - - for namespace in ('recipe', 'attribute'): - create_namespace(provenance, namespace) - - entity = provenance.entity( - 'recipe:{}'.format(filename), { - 'attribute:description': documentation.get('description', ''), - 'attribute:references': ', '.join( - documentation.get('references', [])), - }) - - attribute_to_authors(entity, documentation.get('authors', [])) - attribute_to_projects(entity, documentation.get('projects', [])) - - return entity - - -def get_task_provenance(task, recipe_entity): - """Create a provenance activity describing a task.""" - provenance = ProvDocument() - create_namespace(provenance, 'task') - - activity = provenance.activity('task:' + task.name) - - trigger = recipe_entity - update_without_duplicating(provenance, recipe_entity.bundle) - - starter = ESMVALTOOL_PROVENANCE - update_without_duplicating(provenance, starter.bundle) - - activity.wasStartedBy(trigger, starter) - - return activity - - -class TrackedFile(object): - """File with provenance tracking.""" - - def __init__(self, filename, attributes, ancestors=None): - """Create an instance of a file with provenance tracking.""" - self._filename = filename - self.attributes = copy.deepcopy(attributes) - - self.provenance = None - self.entity = None - self.activity = None - self._ancestors = [] if ancestors is None else ancestors - - def __str__(self): - """Return summary string.""" - return "{}: {}".format(self.__class__.__name__, self.filename) - - def copy_provenance(self, target=None): - """Create a copy with identical provenance information.""" - if self.provenance is None: - raise ValueError("Provenance of {} not initialized".format(self)) - if target is None: - new = TrackedFile(self.filename, self.attributes) - else: - if target.filename != self.filename: - raise ValueError( - "Attempt to copy provenance to incompatible file.") - new = target - new.attributes = copy.deepcopy(self.attributes) - new.provenance = copy.deepcopy(self.provenance) - new.entity = new.provenance.get_record(self.entity.identifier)[0] - new.activity = new.provenance.get_record(self.activity.identifier)[0] - return new - - @property - def filename(self): - """Filename.""" - return self._filename - - def initialize_provenance(self, activity): - """Initialize the provenance document. - - Note: this also copies the ancestor provenance. Therefore, changes - made to ancestor provenance after calling this function will not - propagate into the provenance of this file. - """ - if self.provenance is not None: - raise ValueError( - "Provenance of {} already initialized".format(self)) - self.provenance = ProvDocument() - self._initialize_namespaces() - self._initialize_activity(activity) - self._initialize_entity() - self._initialize_ancestors(activity) - - def _initialize_namespaces(self): - """Inialize the namespaces.""" - for namespace in ('file', 'attribute', 'preprocessor', 'task'): - create_namespace(self.provenance, namespace) - - def _initialize_activity(self, activity): - """Copy the preprocessor task activity.""" - self.activity = activity - update_without_duplicating(self.provenance, activity.bundle) - - def _initialize_entity(self): - """Initialize the entity representing the file.""" - attributes = { - 'attribute:' + k: str(v) - for k, v in self.attributes.items() - if k not in ('authors', 'projects') - } - self.entity = self.provenance.entity('file:' + self.filename, - attributes) - attribute_to_authors(self.entity, self.attributes.get('authors', [])) - attribute_to_projects(self.entity, self.attributes.get('projects', [])) - - def _initialize_ancestors(self, activity): - """Register ancestor files for provenance tracking.""" - for ancestor in self._ancestors: - if ancestor.provenance is None: - ancestor.initialize_provenance(activity) - update_without_duplicating(self.provenance, ancestor.provenance) - self.wasderivedfrom(ancestor) - - def wasderivedfrom(self, other): - """Let the file know that it was derived from other.""" - if isinstance(other, TrackedFile): - other_entity = other.entity - else: - other_entity = other - update_without_duplicating(self.provenance, other_entity.bundle) - if not self.activity: - raise ValueError("Activity not initialized.") - self.entity.wasDerivedFrom(other_entity, self.activity) - - def _select_for_include(self): - attributes = { - 'provenance': self.provenance.serialize(format='xml'), - 'software': "Created with ESMValTool v{}".format(__version__), - } - if 'caption' in self.attributes: - attributes['caption'] = self.attributes['caption'] - return attributes - - @staticmethod - def _include_provenance_nc(filename, attributes): - with Dataset(filename, 'a') as dataset: - for key, value in attributes.items(): - setattr(dataset, key, value) - - @staticmethod - def _include_provenance_png(filename, attributes): - pnginfo = PngInfo() - exif_tags = { - 'provenance': 'ImageHistory', - 'caption': 'ImageDescription', - 'software': 'Software', - } - for key, value in attributes.items(): - pnginfo.add_text(exif_tags.get(key, key), value, zip=True) - with Image.open(filename) as image: - image.save(filename, pnginfo=pnginfo) - - def _include_provenance(self): - """Include provenance information as metadata.""" - attributes = self._select_for_include() - - # List of files to attach provenance to - files = [self.filename] - if 'plot_file' in self.attributes: - files.append(self.attributes['plot_file']) - - # Attach provenance to supported file types - for filename in files: - ext = os.path.splitext(filename)[1].lstrip('.').lower() - write = getattr(self, '_include_provenance_' + ext, None) - if write: - write(filename, attributes) - - def save_provenance(self): - """Export provenance information.""" - self._include_provenance() - filename = os.path.splitext(self.filename)[0] + '_provenance' - self.provenance.serialize(filename + '.xml', format='xml') - # Only plot provenance if there are not too many records. - if len(self.provenance.records) > 100: - logger.debug("Not plotting large provenance tree of %s", - self.filename) - else: - figure = prov_to_dot(self.provenance) - figure.write_svg(filename + '.svg') diff --git a/esmvaltool/_recipe.py b/esmvaltool/_recipe.py deleted file mode 100644 index 6ab0236f55..0000000000 --- a/esmvaltool/_recipe.py +++ /dev/null @@ -1,1081 +0,0 @@ -"""Recipe parser.""" -import fnmatch -import logging -import os -from collections import OrderedDict -from copy import deepcopy - -import yaml -from netCDF4 import Dataset - -from . import __version__ -from . import _recipe_checks as check -from ._config import TAGS, get_institutes, replace_tags -from ._data_finder import (get_input_filelist, get_input_fx_filelist, - get_output_file, get_statistic_output_file) -from ._provenance import TrackedFile, get_recipe_provenance -from ._recipe_checks import RecipeError -from ._task import (DiagnosticTask, get_flattened_tasks, get_independent_tasks, - run_tasks) -from .cmor.table import CMOR_TABLES -from .preprocessor import (DEFAULT_ORDER, FINAL_STEPS, INITIAL_STEPS, - MULTI_MODEL_FUNCTIONS, PreprocessingTask, - PreprocessorFile) -from .preprocessor._derive import get_required -from .preprocessor._download import synda_search -from .preprocessor._io import DATASET_KEYS, concatenate_callback -from .preprocessor._regrid import (get_cmor_levels, get_reference_levels, - parse_cell_spec) - -logger = logging.getLogger(__name__) - -TASKSEP = os.sep - - -def ordered_safe_load(stream): - """Load a YAML file using OrderedDict instead of dict.""" - class OrderedSafeLoader(yaml.SafeLoader): - """Loader class that uses OrderedDict to load a map.""" - - def construct_mapping(loader, node): - """Load a map as an OrderedDict.""" - loader.flatten_mapping(node) - return OrderedDict(loader.construct_pairs(node)) - - OrderedSafeLoader.add_constructor( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) - - return yaml.load(stream, OrderedSafeLoader) - - -def load_raw_recipe(filename): - """Check a recipe file and return it in raw form.""" - # Note that many checks can only be performed after the automatically - # computed entries have been filled in by creating a Recipe object. - check.recipe_with_schema(filename) - with open(filename, 'r') as file: - contents = file.read() - raw_recipe = yaml.safe_load(contents) - raw_recipe['preprocessors'] = ordered_safe_load(contents).get( - 'preprocessors', {}) - - check.diagnostics(raw_recipe['diagnostics']) - return raw_recipe - - -def read_recipe_file(filename, config_user, initialize_tasks=True): - """Read a recipe from file.""" - raw_recipe = load_raw_recipe(filename) - return Recipe( - raw_recipe, config_user, initialize_tasks, recipe_file=filename) - - -def _get_value(key, datasets): - """Get a value for key by looking at the other datasets.""" - values = {dataset[key] for dataset in datasets if key in dataset} - - if len(values) > 1: - raise RecipeError("Ambigous values {} for property {}".format( - values, key)) - - value = None - if len(values) == 1: - value = values.pop() - - return value - - -def _update_from_others(variable, keys, datasets): - """Get values for keys by copying from the other datasets.""" - for key in keys: - if key not in variable: - value = _get_value(key, datasets) - if value is not None: - variable[key] = value - - -def _add_cmor_info(variable, override=False): - """Add information from CMOR tables to variable.""" - logger.debug("If not present: adding keys from CMOR table to %s", variable) - - if 'cmor_table' not in variable or 'mip' not in variable: - logger.debug("Skipping because cmor_table or mip not specified") - return - - if variable['cmor_table'] not in CMOR_TABLES: - logger.warning("Unknown CMOR table %s", variable['cmor_table']) - - derive = variable.get('derive', False) - # Copy the following keys from CMOR table - cmor_keys = [ - 'standard_name', 'long_name', 'units', 'modeling_realm', 'frequency' - ] - cmor_table = variable['cmor_table'] - mip = variable['mip'] - short_name = variable['short_name'] - table_entry = CMOR_TABLES[cmor_table].get_variable(mip, short_name) - - if derive and table_entry is None: - custom_table = CMOR_TABLES['custom'] - table_entry = custom_table.get_variable(mip, short_name) - - if table_entry is None: - raise RecipeError( - "Unable to load CMOR table '{}' for variable '{}' with mip '{}'". - format(cmor_table, short_name, mip)) - - mip_info = CMOR_TABLES[cmor_table].get_table(mip) - if mip_info: - table_entry.frequency = mip_info.frequency - - for key in cmor_keys: - if key not in variable or override: - value = getattr(table_entry, key, None) - if value is not None: - variable[key] = value - else: - logger.debug( - "Failed to add key %s to variable %s from CMOR table", key, - variable) - - # Check that keys are available - check.variable(variable, required_keys=cmor_keys) - - -def _special_name_to_dataset(variable, special_name): - """Convert special names to dataset names.""" - if special_name in ('reference_dataset', 'alternative_dataset'): - if special_name not in variable: - raise RecipeError( - "Preprocessor {} uses {}, but {} is not defined for " - "variable {} of diagnostic {}".format( - variable['preprocessor'], special_name, special_name, - variable['short_name'], variable['diagnostic'])) - special_name = variable[special_name] - - return special_name - - -def _update_target_levels(variable, variables, settings, config_user): - """Replace the target levels dataset name with a filename if needed.""" - levels = settings.get('extract_levels', {}).get('levels') - if not levels: - return - - levels = _special_name_to_dataset(variable, levels) - - # If levels is a dataset name, replace it by a dict with a 'dataset' entry - if any(levels == v['dataset'] for v in variables): - settings['extract_levels']['levels'] = {'dataset': levels} - levels = settings['extract_levels']['levels'] - - if not isinstance(levels, dict): - return - - if 'cmor_table' in levels and 'coordinate' in levels: - settings['extract_levels']['levels'] = get_cmor_levels( - levels['cmor_table'], levels['coordinate']) - elif 'dataset' in levels: - dataset = levels['dataset'] - if variable['dataset'] == dataset: - del settings['extract_levels'] - else: - variable_data = _get_dataset_info(dataset, variables) - filename = \ - _dataset_to_file(variable_data, config_user) - settings['extract_levels']['levels'] = get_reference_levels( - filename, variable_data['project'], dataset, - variable_data['short_name'], - os.path.splitext(variable_data['filename'])[0] + '_fixed') - - -def _update_target_grid(variable, variables, settings, config_user): - """Replace the target grid dataset name with a filename if needed.""" - grid = settings.get('regrid', {}).get('target_grid') - if not grid: - return - - grid = _special_name_to_dataset(variable, grid) - - if variable['dataset'] == grid: - del settings['regrid'] - elif any(grid == v['dataset'] for v in variables): - settings['regrid']['target_grid'] = _dataset_to_file( - _get_dataset_info(grid, variables), config_user) - else: - # Check that MxN grid spec is correct - parse_cell_spec(settings['regrid']['target_grid']) - - -def _update_regrid_time(variable, settings): - """Input data frequency automatically for regrid_time preprocessor.""" - regrid_time = settings.get('regrid_time') - if regrid_time is None: - return - frequency = settings.get('regrid_time', {}).get('frequency') - if not frequency: - settings['regrid_time']['frequency'] = variable['frequency'] - - -def _get_dataset_info(dataset, variables): - for var in variables: - if var['dataset'] == dataset: - return var - raise RecipeError("Unable to find matching file for dataset" - "{}".format(dataset)) - - -def _augment(base, update): - """Update dict base with values from dict update.""" - for key in update: - if key not in base: - base[key] = update[key] - - -def _dataset_to_file(variable, config_user): - """Find the first file belonging to dataset from variable info.""" - files = get_input_filelist( - variable=variable, - rootpath=config_user['rootpath'], - drs=config_user['drs']) - if not files and variable.get('derive'): - first_required = get_required(variable['short_name'])[0] - _augment(first_required, variable) - files = get_input_filelist( - variable=first_required, - rootpath=config_user['rootpath'], - drs=config_user['drs']) - check.data_availability(files, variable) - return files[0] - - -def _limit_datasets(variables, profile, max_datasets=0): - """Try to limit the number of datasets to max_datasets.""" - if not max_datasets: - return variables - - logger.info("Limiting the number of datasets to %s", max_datasets) - - required_datasets = [ - (profile.get('extract_levels') or {}).get('levels'), - (profile.get('regrid') or {}).get('target_grid'), - variables[0].get('reference_dataset'), - variables[0].get('alternative_dataset'), - ] - - limited = [v for v in variables if v['dataset'] in required_datasets] - for variable in variables: - if len(limited) >= max_datasets: - break - if variable not in limited: - limited.append(variable) - - logger.info("Only considering %s", - ', '.join(v['dataset'] for v in limited)) - - return limited - - -def _get_default_settings(variable, config_user, derive=False): - """Get default preprocessor settings.""" - settings = {} - - # Set up downloading using synda if requested. - if config_user['synda_download']: - # TODO: make this respect drs or download to preproc dir? - download_folder = os.path.join(config_user['preproc_dir'], 'downloads') - settings['download'] = { - 'dest_folder': download_folder, - } - - # Configure loading - settings['load'] = { - 'callback': concatenate_callback, - } - # Configure merge - settings['concatenate'] = {} - - # Configure fixes - fix = { - 'project': variable['project'], - 'dataset': variable['dataset'], - 'short_name': variable['short_name'], - } - # File fixes - fix_dir = os.path.splitext(variable['filename'])[0] + '_fixed' - settings['fix_file'] = dict(fix) - settings['fix_file']['output_dir'] = fix_dir - # Cube fixes - # Only supply mip if the CMOR check fixes are implemented. - if variable.get('cmor_table'): - fix['cmor_table'] = variable['cmor_table'] - fix['mip'] = variable['mip'] - fix['frequency'] = variable['frequency'] - settings['fix_data'] = dict(fix) - settings['fix_metadata'] = dict(fix) - - # Configure time extraction - settings['extract_time'] = { - 'start_year': variable['start_year'], - 'end_year': variable['end_year'] + 1, - 'start_month': 1, - 'end_month': 1, - 'start_day': 1, - 'end_day': 1, - } - - if derive: - settings['derive'] = { - 'short_name': variable['short_name'], - 'standard_name': variable['standard_name'], - 'long_name': variable['long_name'], - 'units': variable['units'], - } - - # Configure CMOR metadata check - if variable.get('cmor_table'): - settings['cmor_check_metadata'] = { - 'cmor_table': variable['cmor_table'], - 'mip': variable['mip'], - 'short_name': variable['short_name'], - 'frequency': variable['frequency'], - } - # Configure final CMOR data check - if variable.get('cmor_table'): - settings['cmor_check_data'] = { - 'cmor_table': variable['cmor_table'], - 'mip': variable['mip'], - 'short_name': variable['short_name'], - 'frequency': variable['frequency'], - } - - # Clean up fixed files - if not config_user['save_intermediary_cubes']: - settings['cleanup'] = { - 'remove': [fix_dir], - } - - # Configure saving cubes to file - settings['save'] = {'compress': config_user['compress_netcdf']} - - return settings - - -def _update_fx_settings(settings, variable, config_user): - """Find and set the FX derive/mask settings.""" - # update for derive - if 'derive' in settings: - fx_files = {} - for var in get_required(variable['short_name']): - if 'fx_files' in var: - _augment(var, variable) - fx_files.update( - get_input_fx_filelist( - variable=var, - rootpath=config_user['rootpath'], - drs=config_user['drs'])) - settings['derive']['fx_files'] = fx_files - - # update for landsea - if 'mask_landsea' in settings: - # Configure ingestion of land/sea masks - logger.debug('Getting fx mask settings now...') - - settings['mask_landsea']['fx_files'] = [] - - var = dict(variable) - var['fx_files'] = ['sftlf', 'sftof'] - fx_files_dict = get_input_fx_filelist( - variable=var, - rootpath=config_user['rootpath'], - drs=config_user['drs']) - - # allow both sftlf and sftof - if fx_files_dict['sftlf']: - settings['mask_landsea']['fx_files'].append(fx_files_dict['sftlf']) - if fx_files_dict['sftof']: - settings['mask_landsea']['fx_files'].append(fx_files_dict['sftof']) - - if 'mask_landseaice' in settings: - logger.debug('Getting fx mask settings now...') - - settings['mask_landseaice']['fx_files'] = [] - - var = dict(variable) - var['fx_files'] = ['sftgif'] - fx_files_dict = get_input_fx_filelist( - variable=var, - rootpath=config_user['rootpath'], - drs=config_user['drs']) - - # allow sftgif (only, for now) - if fx_files_dict['sftgif']: - settings['mask_landseaice']['fx_files'].append( - fx_files_dict['sftgif']) - - for step in ('average_region', 'average_volume'): - if settings.get(step, {}).get('fx_files'): - settings[step]['fx_files'] = get_input_fx_filelist( - variable=variable, - rootpath=config_user['rootpath'], - drs=config_user['drs'], - ) - - -def _read_attributes(filename): - """Read the attributes from a netcdf file.""" - attributes = {} - if not (os.path.exists(filename) - and os.path.splitext(filename)[1].lower() == '.nc'): - return attributes - - with Dataset(filename, 'r') as dataset: - for attr in dataset.ncattrs(): - attributes[attr] = getattr(dataset, attr) - return attributes - - -def _get_input_files(variable, config_user): - """Get the input files for a single dataset.""" - # Find input files locally. - input_files = get_input_filelist( - variable=variable, - rootpath=config_user['rootpath'], - drs=config_user['drs']) - - # Set up downloading using synda if requested. - # Do not download if files are already available locally. - if config_user['synda_download'] and not input_files: - input_files = synda_search(variable) - - logger.info("Using input files for variable %s of dataset %s:\n%s", - variable['short_name'], variable['dataset'], - '\n'.join(input_files)) - if (not config_user.get('skip-nonexistent') - or variable['dataset'] == variable.get('reference_dataset')): - check.data_availability(input_files, variable) - - # Set up provenance tracking - for i, filename in enumerate(input_files): - attributes = _read_attributes(filename) - input_files[i] = TrackedFile(filename, attributes) - - return input_files - - -def _apply_preprocessor_profile(settings, profile_settings): - """Apply settings from preprocessor profile.""" - profile_settings = deepcopy(profile_settings) - for step, args in profile_settings.items(): - # Remove disabled preprocessor functions - if args is False: - if step in settings: - del settings[step] - continue - # Enable/update functions without keywords - if step not in settings: - settings[step] = {} - if isinstance(args, dict): - settings[step].update(args) - - -def _get_statistic_attributes(products): - """Get attributes for the statistic output products.""" - attributes = {} - some_product = next(iter(products)) - for key, value in some_product.attributes.items(): - if all(p.attributes.get(key, object()) == value for p in products): - attributes[key] = value - - # Ensure start_year and end_year attributes are available - for product in products: - start = product.attributes['start_year'] - if 'start_year' not in attributes or start < attributes['start_year']: - attributes['start_year'] = start - end = product.attributes['end_year'] - if 'end_year' not in attributes or end > attributes['end_year']: - attributes['end_year'] = end - - return attributes - - -def _get_remaining_common_settings(step, order, products): - """Get preprocessor settings that are shared between products.""" - settings = {} - remaining_steps = order[order.index(step) + 1:] - some_product = next(iter(products)) - for key, value in some_product.settings.items(): - if key in remaining_steps: - if all(p.settings.get(key, object()) == value for p in products): - settings[key] = value - return settings - - -def _update_multi_dataset_settings(variable, settings): - """Configure multi dataset statistics.""" - for step in MULTI_MODEL_FUNCTIONS: - if not settings.get(step): - continue - # Exclude dataset if requested - exclude = { - _special_name_to_dataset(variable, dataset) - for dataset in settings[step].pop('exclude', []) - } - if variable['dataset'] in exclude: - settings.pop(step) - - -def _update_statistic_settings(products, order, preproc_dir): - """Define statistic output products.""" - # TODO: move this to multi model statistics function? - # But how to check, with a dry-run option? - step = 'multi_model_statistics' - - products = {p for p in products if step in p.settings} - if not products: - return - - some_product = next(iter(products)) - for statistic in some_product.settings[step]['statistics']: - attributes = _get_statistic_attributes(products) - attributes['dataset'] = 'MultiModel{}'.format(statistic.title()) - attributes['filename'] = get_statistic_output_file( - attributes, preproc_dir) - common_settings = _get_remaining_common_settings(step, order, products) - statistic_product = PreprocessorFile(attributes, common_settings) - for product in products: - settings = product.settings[step] - if 'output_products' not in settings: - settings['output_products'] = {} - settings['output_products'][statistic] = statistic_product - - -def _match_products(products, variables): - """Match a list of input products to output product attributes.""" - grouped_products = {} - - def get_matching(attributes): - """Find the output filename which matches input attributes best.""" - score = 0 - filenames = [] - for variable in variables: - filename = variable['filename'] - tmp = sum(v == variable.get(k) for k, v in attributes.items()) - if tmp > score: - score = tmp - filenames = [filename] - elif tmp == score: - filenames.append(filename) - if not filenames: - logger.warning( - "Unable to find matching output file for input file %s", - filename) - return filenames - - # Group input files by output file - for product in products: - for filename in get_matching(product.attributes): - if filename not in grouped_products: - grouped_products[filename] = [] - grouped_products[filename].append(product) - - return grouped_products - - -def _get_preprocessor_products(variables, profile, order, ancestor_products, - config_user): - """Get preprocessor product definitions for a set of datasets.""" - products = set() - - for variable in variables: - variable['filename'] = get_output_file(variable, - config_user['preproc_dir']) - - if ancestor_products: - grouped_ancestors = _match_products(ancestor_products, variables) - else: - grouped_ancestors = {} - - for variable in variables: - settings = _get_default_settings( - variable, config_user, derive='derive' in profile) - _apply_preprocessor_profile(settings, profile) - _update_multi_dataset_settings(variable, settings) - _update_target_levels( - variable=variable, - variables=variables, - settings=settings, - config_user=config_user) - _update_fx_settings( - settings=settings, variable=variable, config_user=config_user) - _update_target_grid( - variable=variable, - variables=variables, - settings=settings, - config_user=config_user) - _update_regrid_time(variable, settings) - ancestors = grouped_ancestors.get(variable['filename']) - if not ancestors: - ancestors = _get_input_files(variable, config_user) - if config_user.get('skip-nonexistent') and not ancestors: - logger.info("Skipping: no data found for %s", variable) - continue - product = PreprocessorFile( - attributes=variable, settings=settings, ancestors=ancestors) - products.add(product) - - _update_statistic_settings(products, order, config_user['preproc_dir']) - - for product in products: - product.check() - - return products - - -def _get_single_preprocessor_task(variables, - profile, - config_user, - name, - ancestor_tasks=None): - """Create preprocessor tasks for a set of datasets.""" - if ancestor_tasks is None: - ancestor_tasks = [] - order = _extract_preprocessor_order(profile) - ancestor_products = [p for task in ancestor_tasks for p in task.products] - products = _get_preprocessor_products( - variables=variables, - profile=profile, - order=order, - ancestor_products=ancestor_products, - config_user=config_user, - ) - - if not products: - raise RecipeError( - "Did not find any input data for task {}".format(name)) - - task = PreprocessingTask( - products=products, - ancestors=ancestor_tasks, - name=name, - order=order, - debug=config_user['save_intermediary_cubes'], - write_ncl_interface=config_user['write_ncl_interface'], - ) - - logger.info("PreprocessingTask %s created. It will create the files:\n%s", - task.name, '\n'.join(p.filename for p in task.products)) - - return task - - -def _extract_preprocessor_order(profile): - """Extract the order of the preprocessing steps from the profile.""" - custom_order = profile.pop('custom_order', False) - if not custom_order: - return DEFAULT_ORDER - order = tuple(p for p in profile if p not in INITIAL_STEPS + FINAL_STEPS) - return INITIAL_STEPS + order + FINAL_STEPS - - -def _split_settings(settings, step, order=DEFAULT_ORDER): - """Split settings, using step as a separator.""" - before = {} - for _step in order: - if _step == step: - break - if _step in settings: - before[_step] = settings[_step] - after = { - k: v - for k, v in settings.items() if not (k == step or k in before) - } - return before, after - - -def _split_derive_profile(profile): - """Split the derive preprocessor profile.""" - order = _extract_preprocessor_order(profile) - before, after = _split_settings(profile, 'derive', order) - after['derive'] = True - after['fix_file'] = False - after['fix_metadata'] = False - after['fix_data'] = False - if order != DEFAULT_ORDER: - before['custom_order'] = True - after['custom_order'] = True - return before, after - - -def _get_derive_input_variables(variables, config_user): - """Determine the input sets of `variables` needed for deriving.""" - derive_input = {} - - def append(group_prefix, var): - """Append variable `var` to a derive input group.""" - group = group_prefix + var['short_name'] - var['variable_group'] = group - if group not in derive_input: - derive_input[group] = [] - derive_input[group].append(var) - - for variable in variables: - group_prefix = variable['variable_group'] + '_derive_input_' - if not variable.get('force_derivation') and get_input_filelist( - variable=variable, - rootpath=config_user['rootpath'], - drs=config_user['drs']): - # No need to derive, just process normally up to derive step - var = deepcopy(variable) - append(group_prefix, var) - else: - # Process input data needed to derive variable - for var in get_required(variable['short_name']): - _augment(var, variable) - append(group_prefix, var) - - return derive_input - - -def _get_preprocessor_task(variables, profiles, config_user, task_name): - """Create preprocessor task(s) for a set of datasets.""" - # First set up the preprocessor profile - variable = variables[0] - preproc_name = variable.get('preprocessor') - if preproc_name not in profiles: - raise RecipeError( - "Unknown preprocessor {} in variable {} of diagnostic {}".format( - preproc_name, variable['short_name'], variable['diagnostic'])) - profile = deepcopy(profiles[variable['preprocessor']]) - logger.info("Creating preprocessor '%s' task for variable '%s'", - variable['preprocessor'], variable['short_name']) - variables = _limit_datasets(variables, profile, - config_user.get('max_datasets')) - for variable in variables: - _add_cmor_info(variable) - # Create preprocessor task(s) - derive_tasks = [] - if variable.get('derive'): - # Create tasks to prepare the input data for the derive step - derive_profile, profile = _split_derive_profile(profile) - derive_input = _get_derive_input_variables(variables, config_user) - - for derive_variables in derive_input.values(): - for derive_variable in derive_variables: - _add_cmor_info(derive_variable, override=True) - derive_name = task_name.split( - TASKSEP)[0] + TASKSEP + derive_variables[0]['variable_group'] - task = _get_single_preprocessor_task( - derive_variables, - derive_profile, - config_user, - name=derive_name) - derive_tasks.append(task) - - # Create (final) preprocessor task - task = _get_single_preprocessor_task( - variables, - profile, - config_user, - ancestor_tasks=derive_tasks, - name=task_name) - - return task - - -class Recipe: - """Recipe object.""" - - def __init__(self, - raw_recipe, - config_user, - initialize_tasks=True, - recipe_file=None): - """Parse a recipe file into an object.""" - self._cfg = deepcopy(config_user) - self._cfg['write_ncl_interface'] = self._need_ncl( - raw_recipe['diagnostics']) - self._filename = os.path.basename(recipe_file) - self._preprocessors = raw_recipe.get('preprocessors', {}) - if 'default' not in self._preprocessors: - self._preprocessors['default'] = {} - self.diagnostics = self._initialize_diagnostics( - raw_recipe['diagnostics'], raw_recipe.get('datasets', [])) - self.entity = self._initalize_provenance( - raw_recipe.get('documentation', {})) - self.tasks = self.initialize_tasks() if initialize_tasks else None - - @staticmethod - def _need_ncl(raw_diagnostics): - if not raw_diagnostics: - return False - for diagnostic in raw_diagnostics.values(): - if not diagnostic.get('scripts'): - continue - for script in diagnostic['scripts'].values(): - if script.get('script', '').lower().endswith('.ncl'): - logger.info("NCL script detected, checking NCL version") - check.ncl_version() - return True - return False - - def _initalize_provenance(self, raw_documentation): - """Initialize the recipe provenance.""" - doc = deepcopy(raw_documentation) - for key in doc: - if key in TAGS: - doc[key] = replace_tags(key, doc[key]) - - return get_recipe_provenance(doc, self._filename) - - def _initialize_diagnostics(self, raw_diagnostics, raw_datasets): - """Define diagnostics in recipe.""" - logger.debug("Retrieving diagnostics from recipe") - - diagnostics = {} - - for name, raw_diagnostic in raw_diagnostics.items(): - diagnostic = {} - diagnostic['name'] = name - diagnostic['preprocessor_output'] = \ - self._initialize_preprocessor_output( - name, - raw_diagnostic.get('variables', {}), - raw_datasets + - raw_diagnostic.get('additional_datasets', [])) - variable_names = tuple(raw_diagnostic.get('variables', {})) - diagnostic['scripts'] = self._initialize_scripts( - name, raw_diagnostic.get('scripts'), variable_names) - for key in ('themes', 'realms'): - if key in raw_diagnostic: - for script in diagnostic['scripts'].values(): - script['settings'][key] = raw_diagnostic[key] - diagnostics[name] = diagnostic - - return diagnostics - - @staticmethod - def _initialize_datasets(raw_datasets): - """Define datasets used by variable.""" - datasets = deepcopy(raw_datasets) - - for dataset in datasets: - for key in dataset: - DATASET_KEYS.add(key) - - check.duplicate_datasets(datasets) - return datasets - - def _initialize_variables(self, raw_variable, raw_datasets): - """Define variables for all datasets.""" - variables = [] - - raw_variable = deepcopy(raw_variable) - datasets = self._initialize_datasets( - raw_datasets + raw_variable.pop('additional_datasets', [])) - - for index, dataset in enumerate(datasets): - variable = deepcopy(raw_variable) - variable.update(dataset) - variable['recipe_dataset_index'] = index - if ('cmor_table' not in variable - and variable.get('project') in CMOR_TABLES): - variable['cmor_table'] = variable['project'] - if 'end_year' in variable and 'max_years' in self._cfg: - variable['end_year'] = min( - variable['end_year'], - variable['start_year'] + self._cfg['max_years'] - 1) - variables.append(variable) - - required_keys = { - 'short_name', - 'mip', - 'dataset', - 'project', - 'start_year', - 'end_year', - 'preprocessor', - 'diagnostic', - } - - for variable in variables: - _update_from_others(variable, ['cmor_table', 'mip'], datasets) - institute = get_institutes(variable) - if institute: - variable['institute'] = institute - check.variable(variable, required_keys) - if 'fx_files' in variable: - for fx_file in variable['fx_files']: - DATASET_KEYS.add(fx_file) - # Get the fx files - variable['fx_files'] = get_input_fx_filelist( - variable=variable, - rootpath=self._cfg['rootpath'], - drs=self._cfg['drs']) - logger.info("Using fx files for var %s of dataset %s:\n%s", - variable['short_name'], variable['dataset'], - variable['fx_files']) - - return variables - - def _initialize_preprocessor_output(self, diagnostic_name, raw_variables, - raw_datasets): - """Define variables in diagnostic.""" - logger.debug("Populating list of variables for diagnostic %s", - diagnostic_name) - - preprocessor_output = {} - - for variable_group, raw_variable in raw_variables.items(): - if raw_variable is None: - raw_variable = {} - else: - raw_variable = deepcopy(raw_variable) - raw_variable['variable_group'] = variable_group - if 'short_name' not in raw_variable: - raw_variable['short_name'] = variable_group - raw_variable['diagnostic'] = diagnostic_name - raw_variable['preprocessor'] = str( - raw_variable.get('preprocessor', 'default')) - preprocessor_output[variable_group] = \ - self._initialize_variables(raw_variable, raw_datasets) - - return preprocessor_output - - def _initialize_scripts(self, diagnostic_name, raw_scripts, - variable_names): - """Define script in diagnostic.""" - if not raw_scripts: - return {} - - logger.debug("Setting script for diagnostic %s", diagnostic_name) - - scripts = {} - - for script_name, raw_settings in raw_scripts.items(): - settings = deepcopy(raw_settings) - script = settings.pop('script') - ancestors = [] - for id_glob in settings.pop('ancestors', variable_names): - if TASKSEP not in id_glob: - id_glob = diagnostic_name + TASKSEP + id_glob - ancestors.append(id_glob) - settings['recipe'] = self._filename - settings['version'] = __version__ - settings['script'] = script_name - # Add output dirs to settings - for dir_name in ('run_dir', 'plot_dir', 'work_dir'): - settings[dir_name] = os.path.join(self._cfg[dir_name], - diagnostic_name, script_name) - # Copy other settings - if self._cfg['write_ncl_interface']: - settings['exit_on_ncl_warning'] = self._cfg['exit_on_warning'] - for key in ( - 'max_data_filesize', - 'output_file_type', - 'log_level', - 'write_plots', - 'write_netcdf', - 'profile_diagnostic', - 'auxiliary_data_dir', - ): - settings[key] = self._cfg[key] - - scripts[script_name] = { - 'script': script, - 'output_dir': settings['work_dir'], - 'settings': settings, - 'ancestors': ancestors, - } - - return scripts - - def _resolve_diagnostic_ancestors(self, tasks): - """Resolve diagnostic ancestors.""" - tasks = {t.name: t for t in tasks} - for diagnostic_name, diagnostic in self.diagnostics.items(): - for script_name, script_cfg in diagnostic['scripts'].items(): - task_id = diagnostic_name + TASKSEP + script_name - if isinstance(tasks[task_id], DiagnosticTask): - logger.debug("Linking tasks for diagnostic %s script %s", - diagnostic_name, script_name) - ancestors = [] - for id_glob in script_cfg['ancestors']: - ancestor_ids = fnmatch.filter(tasks, id_glob) - if not ancestor_ids: - raise RecipeError( - "Could not find any ancestors matching {}". - format(id_glob)) - logger.debug("Pattern %s matches %s", id_glob, - ancestor_ids) - ancestors.extend(tasks[a] for a in ancestor_ids) - tasks[task_id].ancestors = ancestors - - def initialize_tasks(self): - """Define tasks in recipe.""" - logger.info("Creating tasks from recipe") - tasks = set() - - for diagnostic_name, diagnostic in self.diagnostics.items(): - logger.info("Creating tasks for diagnostic %s", diagnostic_name) - - # Create preprocessor tasks - for variable_group in diagnostic['preprocessor_output']: - task_name = diagnostic_name + TASKSEP + variable_group - logger.info("Creating preprocessor task %s", task_name) - task = _get_preprocessor_task( - variables=diagnostic['preprocessor_output'] - [variable_group], - profiles=self._preprocessors, - config_user=self._cfg, - task_name=task_name) - tasks.add(task) - - # Create diagnostic tasks - for script_name, script_cfg in diagnostic['scripts'].items(): - task_name = diagnostic_name + TASKSEP + script_name - logger.info("Creating diagnostic task %s", task_name) - task = DiagnosticTask( - script=script_cfg['script'], - output_dir=script_cfg['output_dir'], - settings=script_cfg['settings'], - name=task_name) - tasks.add(task) - - check.tasks_valid(tasks) - - # Resolve diagnostic ancestors - self._resolve_diagnostic_ancestors(tasks) - - # Select only requested tasks - tasks = get_flattened_tasks(tasks) - if not self._cfg.get('run_diagnostic'): - tasks = {t for t in tasks if isinstance(t, PreprocessingTask)} - if self._cfg.get('diagnostics'): - names = {t.name for t in tasks} - selection = set() - for pattern in self._cfg.get('diagnostics'): - selection |= set(fnmatch.filter(names, pattern)) - tasks = {t for t in tasks if t.name in selection} - - tasks = get_flattened_tasks(tasks) - logger.info("These tasks will be executed: %s", - ', '.join(t.name for t in tasks)) - - # Initialize task provenance - for task in tasks: - task.initialize_provenance(self.entity) - - # TODO: check that no loops are created (will throw RecursionError) - - # Return smallest possible set of tasks - return get_independent_tasks(tasks) - - def __str__(self): - """Get human readable summary.""" - return '\n\n'.join(str(task) for task in self.tasks) - - def run(self): - """Run all tasks in the recipe.""" - run_tasks( - self.tasks, max_parallel_tasks=self._cfg['max_parallel_tasks']) diff --git a/esmvaltool/_recipe_checks.py b/esmvaltool/_recipe_checks.py deleted file mode 100644 index a6ab607df0..0000000000 --- a/esmvaltool/_recipe_checks.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Module with functions to check a recipe.""" -import logging -import os -import subprocess - -import yamale - -from ._data_finder import get_start_end_year -from ._task import get_flattened_tasks, which -from .preprocessor import PreprocessingTask - -logger = logging.getLogger(__name__) - - -class RecipeError(Exception): - """Recipe contains an error.""" - - -def ncl_version(): - """Check the NCL version.""" - ncl = which('ncl') - if not ncl: - raise RecipeError("Recipe contains NCL scripts, but cannot find " - "an NCL installation.") - try: - cmd = [ncl, '-V'] - version = subprocess.check_output(cmd, universal_newlines=True) - except subprocess.CalledProcessError: - logger.error("Failed to execute '%s'", ' '.join(' '.join(cmd))) - raise RecipeError("Recipe contains NCL scripts, but your NCL " - "installation appears to be broken.") - - version = version.strip() - logger.info("Found NCL version %s", version) - - major, minor = (int(i) for i in version.split('.')[:2]) - if major < 6 or (major == 6 and minor < 4): - raise RecipeError("NCL version 6.4 or higher is required to run " - "a recipe containing NCL scripts.") - - -def recipe_with_schema(filename): - """Check if the recipe content matches schema.""" - schema_file = os.path.join(os.path.dirname(__file__), 'recipe_schema.yml') - logger.debug("Checking recipe against schema %s", schema_file) - recipe = yamale.make_data(filename) - schema = yamale.make_schema(schema_file) - yamale.validate(schema, recipe) - - -def diagnostics(diags): - """Check diagnostics in recipe.""" - for name, diagnostic in diags.items(): - if 'scripts' not in diagnostic: - raise RecipeError( - "Missing scripts section in diagnostic {}".format(name)) - variable_names = tuple(diagnostic.get('variables', {})) - scripts = diagnostic.get('scripts') - if scripts is None: - scripts = {} - for script_name, script in scripts.items(): - if script_name in variable_names: - raise RecipeError( - "Invalid script name {} encountered in diagnostic {}: " - "scripts cannot have the same name as variables.".format( - script_name, name)) - if not script.get('script'): - raise RecipeError( - "No script defined for script {} in diagnostic {}".format( - script_name, name)) - - -def duplicate_datasets(datasets): - """Check for duplicate datasets.""" - checked_datasets_ = [] - for dataset in datasets: - if dataset in checked_datasets_: - raise RecipeError( - "Duplicate dataset {} in datasets section".format(dataset)) - checked_datasets_.append(dataset) - - -def variable(var, required_keys): - """Check variables as derived from recipe.""" - required = set(required_keys) - missing = required - set(var) - if missing: - raise RecipeError( - "Missing keys {} from variable {} in diagnostic {}".format( - missing, var.get('short_name'), var.get('diagnostic'))) - - -def data_availability(input_files, var): - """Check if the required input data is available.""" - if not input_files: - raise RecipeError("No input files found for variable {}".format(var)) - - required_years = set(range(var['start_year'], var['end_year'] + 1)) - available_years = set() - for filename in input_files: - start, end = get_start_end_year(filename) - available_years.update(range(start, end + 1)) - - missing_years = required_years - available_years - if missing_years: - raise RecipeError( - "No input data available for years {} in files {}".format( - ", ".join(str(year) for year in missing_years), input_files)) - - -def tasks_valid(tasks): - """Check that tasks are consistent.""" - filenames = set() - msg = "Duplicate preprocessor filename {}, please file a bug report." - for task in get_flattened_tasks(tasks): - if isinstance(task, PreprocessingTask): - for product in task.products: - if product.filename in filenames: - raise ValueError(msg.format(product.filename)) - filenames.add(product.filename) diff --git a/esmvaltool/_task.py b/esmvaltool/_task.py deleted file mode 100644 index 90aa3c4c0f..0000000000 --- a/esmvaltool/_task.py +++ /dev/null @@ -1,672 +0,0 @@ -"""ESMValtool task definition.""" -import contextlib -import datetime -import errno -import logging -import numbers -import os -import pprint -import subprocess -import threading -import time -from copy import deepcopy -from multiprocessing import Pool, cpu_count - -import psutil -import yaml - -from ._config import TAGS, replace_tags -from ._provenance import TrackedFile, get_task_provenance - -logger = logging.getLogger(__name__) - -DATASET_KEYS = { - 'mip', -} - - -def which(executable): - """Find executable in PATH.""" - for path in os.environ["PATH"].split(os.pathsep): - if os.access(os.path.join(path, executable), os.X_OK): - return os.path.join(path, executable) - - return None - - -def _get_resource_usage(process, start_time, children=True): - """Get resource usage.""" - # yield header first - entries = [ - 'Date and time (UTC)', - 'Real time (s)', - 'CPU time (s)', - 'CPU (%)', - 'Memory (GB)', - 'Memory (%)', - 'Disk read (GB)', - 'Disk write (GB)', - ] - fmt = '{}\t' * len(entries[:-1]) + '{}\n' - yield fmt.format(*entries) - - # Compute resource usage - gigabyte = float(2**30) - precision = [1, 1, None, 1, None, 3, 3] - cache = {} - while process.is_running(): - try: - if children: - # Include child processes - processes = process.children(recursive=True) - processes.append(process) - else: - processes = [process] - - # Update resource usage - for proc in cache: - # Set cpu percent and memory usage to 0 for old processes - if proc not in processes: - cache[proc][1] = 0 - cache[proc][2] = 0 - cache[proc][3] = 0 - for proc in processes: - # Update current processes - cache[proc] = [ - proc.cpu_times().user + proc.cpu_times().system, - proc.cpu_percent(), - proc.memory_info().rss / gigabyte, - proc.memory_percent(), - proc.io_counters().read_bytes / gigabyte, - proc.io_counters().write_bytes / gigabyte, - ] - except (OSError, psutil.AccessDenied, psutil.NoSuchProcess): - # Try again if an error occurs because some process died - continue - - # Create and yield log entry - entries = [sum(entry) for entry in zip(*cache.values())] - entries.insert(0, time.time() - start_time) - entries = [round(entry, p) for entry, p in zip(entries, precision)] - entries.insert(0, datetime.datetime.utcnow()) - yield fmt.format(*entries) - - -@contextlib.contextmanager -def resource_usage_logger(pid, filename, interval=1, children=True): - """Log resource usage.""" - halt = threading.Event() - - def _log_resource_usage(): - """Write resource usage to file.""" - process = psutil.Process(pid) - start_time = time.time() - with open(filename, 'w') as file: - for msg in _get_resource_usage(process, start_time, children): - file.write(msg) - time.sleep(interval) - if halt.is_set(): - return - - thread = threading.Thread(target=_log_resource_usage) - thread.start() - try: - yield - finally: - halt.set() - thread.join() - - -def _py2ncl(value, var_name=''): - """Format a structure of Python list/dict/etc items as NCL.""" - txt = var_name + ' = ' if var_name else '' - if value is None: - txt += '_Missing' - elif isinstance(value, str): - txt += '"{}"'.format(value) - elif isinstance(value, (list, tuple)): - if not value: - txt += '_Missing' - else: - if isinstance(value[0], numbers.Real): - type_ = numbers.Real - else: - type_ = type(value[0]) - if any(not isinstance(v, type_) for v in value): - raise ValueError( - "NCL array cannot be mixed type: {}".format(value)) - txt += '(/{}/)'.format(', '.join(_py2ncl(v) for v in value)) - elif isinstance(value, dict): - if not var_name: - raise ValueError( - "NCL does not support nested dicts: {}".format(value)) - txt += 'True\n' - for key in value: - txt += '{}@{} = {}\n'.format(var_name, key, _py2ncl(value[key])) - else: - txt += str(value) - return txt - - -def write_ncl_settings(settings, filename, mode='wt'): - """Write a dictionary with generic settings to NCL file.""" - logger.debug("Writing NCL configuration file %s", filename) - - def _ncl_type(value): - """Convert some Python types to NCL types.""" - typemap = { - bool: 'logical', - str: 'string', - float: 'double', - int: 'int64', - dict: 'logical', - } - for type_ in typemap: - if isinstance(value, type_): - return typemap[type_] - raise ValueError("Unable to map {} to an NCL type".format(type(value))) - - lines = [] - for var_name, value in sorted(settings.items()): - if isinstance(value, (list, tuple)): - # Create an NCL list that can span multiple files - lines.append('if (.not. isdefined("{var_name}")) then\n' - ' {var_name} = NewList("fifo")\n' - 'end if\n'.format(var_name=var_name)) - for item in value: - lines.append('ListAppend({var_name}, new(1, {type}))\n' - 'i = ListCount({var_name}) - 1'.format( - var_name=var_name, type=_ncl_type(item))) - lines.append(_py2ncl(item, var_name + '[i]')) - else: - # Create an NCL variable that overwrites previous variables - lines.append('if (isvar("{var_name}")) then\n' - ' delete({var_name})\n' - 'end if\n'.format(var_name=var_name)) - lines.append(_py2ncl(value, var_name)) - - with open(filename, mode) as file: - file.write('\n'.join(lines)) - file.write('\n') - - -class BaseTask: - """Base class for defining task classes.""" - - def __init__(self, ancestors=None, name=''): - """Initialize task.""" - self.ancestors = [] if ancestors is None else ancestors - self.output_files = None - self.name = name - self.activity = None - - def initialize_provenance(self, recipe_entity): - """Initialize task provenance activity.""" - if self.activity is not None: - raise ValueError( - "Provenance of {} already initialized".format(self)) - self.activity = get_task_provenance(self, recipe_entity) - - def flatten(self): - """Return a flattened set of all ancestor tasks and task itself.""" - tasks = set() - for task in self.ancestors: - tasks.update(task.flatten()) - tasks.add(self) - return tasks - - def run(self, input_files=None): - """Run task.""" - if not self.output_files: - if input_files is None: - input_files = [] - for task in self.ancestors: - input_files.extend(task.run()) - logger.info("Starting task %s in process [%s]", self.name, - os.getpid()) - self.output_files = self._run(input_files) - logger.info("Successfully completed task %s", self.name) - - return self.output_files - - def _run(self, input_files): - raise NotImplementedError( - "Method should be implemented by child class") - - def str(self): - """Return a nicely formatted description.""" - - def _indent(txt): - return '\n'.join('\t' + line for line in txt.split('\n')) - - txt = 'ancestors:\n{}'.format('\n\n'.join( - _indent(str(task)) - for task in self.ancestors) if self.ancestors else 'None') - return txt - - -class DiagnosticError(Exception): - """Error in diagnostic.""" - - -class DiagnosticTask(BaseTask): - """Task for running a diagnostic.""" - - def __init__(self, script, settings, output_dir, ancestors=None, name=''): - """Create a diagnostic task.""" - super(DiagnosticTask, self).__init__(ancestors=ancestors, name=name) - self.script = script - self.settings = settings - self.products = set() - self.output_dir = output_dir - self.cmd = self._initialize_cmd(script) - self.log = os.path.join(settings['run_dir'], 'log.txt') - self.resource_log = os.path.join(settings['run_dir'], - 'resource_usage.txt') - - def _initialize_cmd(self, script): - """Create a an executable command from script.""" - diagnostics_root = os.path.join( - os.path.dirname(__file__), 'diag_scripts') - script_file = os.path.abspath(os.path.join(diagnostics_root, script)) - - if not os.path.isfile(script_file): - raise DiagnosticError( - "Cannot execute script {} ({}): file does not exist.".format( - script, script_file)) - - cmd = [] - if not os.access(script_file, os.X_OK): # if not executable - extension = os.path.splitext(script)[1].lower()[1:] - if not self.settings['profile_diagnostic']: - executables = { - 'py': [which('python')], - 'ncl': [which('ncl'), '-n', '-p'], - 'r': [which('Rscript')], - 'jl': [which('julia')], - } - else: - profile_file = os.path.join(self.settings['run_dir'], - 'profile.bin') - executables = { - 'py': [ - which('python'), '-m', 'vmprof', '--lines', '-o', - profile_file - ], - 'ncl': [which('ncl'), '-n', '-p'], - 'r': [which('Rscript')], - 'jl': [which('julia')], - } - - if extension not in executables: - raise DiagnosticError( - "Cannot execute script {} ({}): non-executable file " - "with unknown extension.".format(script, script_file)) - - cmd = executables[extension] - - cmd.append(script_file) - - return cmd - - def write_settings(self): - """Write settings to file.""" - run_dir = self.settings['run_dir'] - if not os.path.exists(run_dir): - os.makedirs(run_dir) - - filename = os.path.join(run_dir, 'settings.yml') - - with open(filename, 'w') as file: - yaml.safe_dump(self.settings, file) - - # If running an NCL script: - if self.script.lower().endswith('.ncl'): - # Also write an NCL file and return the name of that instead. - return self._write_ncl_settings() - - return filename - - def _write_ncl_settings(self): - """Write settings to NCL file.""" - filename = os.path.join(self.settings['run_dir'], 'settings.ncl') - - config_user_keys = { - 'run_dir', - 'plot_dir', - 'work_dir', - 'max_data_filesize', - 'output_file_type', - 'log_level', - 'write_plots', - 'write_netcdf', - } - settings = {'diag_script_info': {}, 'config_user_info': {}} - for key, value in self.settings.items(): - if key in config_user_keys: - settings['config_user_info'][key] = value - elif not isinstance(value, dict): - settings['diag_script_info'][key] = value - else: - settings[key] = value - - write_ncl_settings(settings, filename) - - return filename - - def _control_ncl_execution(self, process, lines): - """Check if an error has occurred in an NCL script. - - Apparently NCL does not automatically exit with a non-zero exit code - if an error occurs, so we take care of that here. - """ - ignore_warnings = [ - warning.strip() - for warning in self.settings.get('ignore_ncl_warnings', []) - ] - - errors = ['error:', 'fatal:'] - if self.settings['exit_on_ncl_warning']: - errors.append('warning:') - - msg = ("An error occurred during execution of NCL script {}, " - "see the log in {}".format(self.script, self.log)) - - warned = False - for line in lines: - if line.strip() in ignore_warnings: - continue - if 'warning:' in line: - logger.warning("NCL: %s", line) - warned = True - for error in errors: - if error in line: - logger.error(msg) - logger.error("NCL: %s", line) - try: - process.kill() - except OSError: # ignore error if process already exited - pass - else: - logger.error("Killed process.") - raise DiagnosticError(msg) - - if warned: - logger.warning( - "There were warnings during the execution of NCL script %s, " - "for details, see the log %s", self.script, self.log) - - def _start_diagnostic_script(self, cmd, env): - """Start the diagnostic script.""" - logger.info("Running command %s", cmd) - logger.debug("in environment\n%s", pprint.pformat(env)) - cwd = self.settings['run_dir'] - logger.debug("in current working directory: %s", cwd) - logger.info("Writing output to %s", self.output_dir) - logger.info("Writing plots to %s", self.settings['plot_dir']) - logger.info("Writing log to %s", self.log) - - rerun_msg = 'cd {}; '.format(cwd) - if env: - rerun_msg += ' '.join('{}="{}"'.format(k, env[k]) for k in env - if k not in os.environ) - rerun_msg += ' ' + ' '.join(cmd) - logger.info("To re-run this diagnostic script, run:\n%s", rerun_msg) - - try: - process = subprocess.Popen( - cmd, - bufsize=2**20, # Use a large buffer to prevent NCL crash - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - cwd=cwd, - env=env) - except OSError as exc: - if exc.errno == errno.ENOEXEC: - logger.error( - "Diagnostic script has its executable bit set, but is " - "not executable. To fix this run:\nchmod -x %s", cmd[0]) - logger.error( - "You may also need to fix this in the git repository.") - raise - - return process - - def _run(self, input_files): - """Run the diagnostic script.""" - if self.script is None: # Run only preprocessor - output_files = [] - return output_files - - is_ncl_script = self.script.lower().endswith('.ncl') - if is_ncl_script: - self.settings['input_files'] = [ - f for f in input_files - if f.endswith('.ncl') or os.path.isdir(f) - ] - else: - self.settings['input_files'] = [ - f for f in input_files - if f.endswith('.yml') or os.path.isdir(f) - ] - - env = dict(os.environ) - if self.script.lower().endswith('.py'): - # Set non-interactive matplotlib backend - env['MPLBACKEND'] = 'Agg' - else: - # Make diag_scripts path available to diagostics scripts - env['diag_scripts'] = os.path.join( - os.path.dirname(__file__), 'diag_scripts') - - cmd = list(self.cmd) - settings_file = self.write_settings() - if is_ncl_script: - env['settings'] = settings_file - else: - cmd.append(settings_file) - - process = self._start_diagnostic_script(cmd, env) - - returncode = None - last_line = [''] - - with resource_usage_logger(process.pid, self.resource_log),\ - open(self.log, 'at') as log: - while returncode is None: - returncode = process.poll() - txt = process.stdout.read() - txt = txt.decode(encoding='utf-8', errors='ignore') - log.write(txt) - - # Check if an error occurred in an NCL script - # Last line is treated separately to avoid missing - # error messages spread out over multiple lines. - lines = txt.split('\n') - if is_ncl_script: - self._control_ncl_execution(process, last_line + lines) - last_line = lines[-1:] - - # wait, but not long because the stdout buffer may fill up: - # https://docs.python.org/3.6/library/subprocess.html#subprocess.Popen.stdout - time.sleep(0.001) - - if returncode == 0: - logger.debug("Script %s completed successfully", self.script) - self._collect_provenance() - return [self.output_dir] - - raise DiagnosticError( - "Diagnostic script {} failed with return code {}. See the log " - "in {}".format(self.script, returncode, self.log)) - - def _collect_provenance(self): - """Process provenance information provided by the diagnostic script.""" - provenance_file = os.path.join(self.settings['run_dir'], - 'diagnostic_provenance.yml') - if not os.path.exists(provenance_file): - logger.warning("No provenance information was written to %s", - provenance_file) - return - - logger.debug("Collecting provenance from %s", provenance_file) - start = time.time() - with open(provenance_file, 'r') as file: - table = yaml.safe_load(file) - - ignore = ( - 'auxiliary_data_dir', - 'exit_on_ncl_warning', - 'input_files', - 'log_level', - 'max_data_filesize', - 'output_file_type', - 'plot_dir', - 'profile_diagnostic', - 'recipe', - 'run_dir', - 'version', - 'write_netcdf', - 'write_ncl_interface', - 'write_plots', - 'work_dir', - ) - attrs = { - 'script_file': self.script, - } - for key in self.settings: - if key not in ignore: - attrs[key] = self.settings[key] - - ancestor_products = {p for a in self.ancestors for p in a.products} - - for filename, attributes in table.items(): - # copy to avoid updating other entries if file contains anchors - attributes = deepcopy(attributes) - ancestor_files = attributes.pop('ancestors', []) - ancestors = { - p - for p in ancestor_products if p.filename in ancestor_files - } - - attributes.update(deepcopy(attrs)) - for key in attributes: - if key in TAGS: - attributes[key] = replace_tags(key, attributes[key]) - - product = TrackedFile(filename, attributes, ancestors) - product.initialize_provenance(self.activity) - product.save_provenance() - self.products.add(product) - logger.debug("Collecting provenance of task %s took %.1f seconds", - self.name, - time.time() - start) - - def __str__(self): - """Get human readable description.""" - txt = "{}:\nscript: {}\n{}\nsettings:\n{}\n".format( - self.__class__.__name__, - self.script, - pprint.pformat(self.settings, indent=2), - super(DiagnosticTask, self).str(), - ) - return txt - - -def get_flattened_tasks(tasks): - """Return a set of all tasks and their ancestors in `tasks`.""" - return set(t for task in tasks for t in task.flatten()) - - -def get_independent_tasks(tasks): - """Return a set of independent tasks.""" - independent_tasks = set() - all_tasks = get_flattened_tasks(tasks) - for task in all_tasks: - if not any(task in t.ancestors for t in all_tasks): - independent_tasks.add(task) - return independent_tasks - - -def run_tasks(tasks, max_parallel_tasks=None): - """Run tasks.""" - if max_parallel_tasks == 1: - _run_tasks_sequential(tasks) - else: - _run_tasks_parallel(tasks, max_parallel_tasks) - - -def _run_tasks_sequential(tasks): - """Run tasks sequentially.""" - n_tasks = len(get_flattened_tasks(tasks)) - logger.info("Running %s tasks sequentially", n_tasks) - - for task in get_independent_tasks(tasks): - task.run() - - -def _run_tasks_parallel(tasks, max_parallel_tasks=None): - """Run tasks in parallel.""" - scheduled = get_flattened_tasks(tasks) - running = [] - results = [] - - n_scheduled, n_running = len(scheduled), len(running) - n_tasks = n_scheduled - - pool = Pool(processes=max_parallel_tasks) - - logger.info("Running %s tasks using at most %s processes", n_tasks, - max_parallel_tasks or cpu_count()) - - def done(task): - """Assume a task is done if it not scheduled or running.""" - return not (task in scheduled or task in running) - - while scheduled or running: - # Submit new tasks to pool - just_scheduled = [] - for task in scheduled: - if not task.ancestors or all(done(t) for t in task.ancestors): - result = pool.apply_async(_run_task, [task]) - results.append(result) - running.append(task) - just_scheduled.append(task) - for task in just_scheduled: - scheduled.remove(task) - - # Handle completed tasks - for task, result in zip(running, results): - if result.ready(): - task.output_files, updated_products = result.get() - for updated in updated_products: - for original in task.products: - if original.filename == updated.filename: - updated.copy_provenance(target=original) - break - else: - task.products.add(updated) - running.remove(task) - results.remove(result) - - # Wait if there are still tasks running - if running: - time.sleep(0.1) - - # Log progress message - if len(scheduled) != n_scheduled or len(running) != n_running: - n_scheduled, n_running = len(scheduled), len(running) - n_done = n_tasks - n_scheduled - n_running - logger.info( - "Progress: %s tasks running or queued, %s tasks waiting for " - "ancestors, %s/%s done", n_running, n_scheduled, n_done, - n_tasks) - - pool.close() - pool.join() - - -def _run_task(task): - """Run task and return the result.""" - output_files = task.run() - return output_files, task.products diff --git a/esmvaltool/_version.py b/esmvaltool/_version.py deleted file mode 100644 index 40605f3912..0000000000 --- a/esmvaltool/_version.py +++ /dev/null @@ -1,2 +0,0 @@ -"""ESMValTool version""" -__version__ = '2.0a2' diff --git a/esmvaltool/cmor/__init__.py b/esmvaltool/cmor/__init__.py deleted file mode 100644 index d6cbeb0c5d..0000000000 --- a/esmvaltool/cmor/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""CMOR module""" diff --git a/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py deleted file mode 100644 index 22c86aaee2..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py +++ /dev/null @@ -1,197 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for BNU ESM model.""" -from cf_units import Unit -from dask import array as da - -from ..fix import Fix - - -class fgco2(Fix): - """Fixes for fgco2.""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes cube units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - self.get_cube_from_list(cubes).units = Unit('kg m-2 s-1') - return cubes - - def fix_data(self, cube): - """ - Fix data. - - Fixes cube units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 12.0 / 44.0 - cube.metadata = metadata - return cube - - -class ch4(Fix): - """Fixes for ch4.""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes cube units - - Parameters - ---------- - cubes: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - self.get_cube_from_list(cubes).units = Unit('1e-9') - return cubes - - def fix_data(self, cube): - """ - Fix metadata. - - Fixes cube units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 29.0 / 16.0 * 1.e9 - cube.metadata = metadata - return cube - - -class co2(Fix): - """Fixes for co2.""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes cube units - - Parameters - ---------- - cubes: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - self.get_cube_from_list(cubes).units = Unit('1e-6') - return cubes - - def fix_data(self, cube): - """ - Fix data. - - Fixes cube units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 29.0 / 44.0 * 1.e6 - cube.metadata = metadata - return cube - - -class spco2(Fix): - """Fixes for spco2.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes cube units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1.e6 - cube.metadata = metadata - return cube - - -class od550aer(Fix): - """Fixes for od550aer.""" - - def fix_data(self, cube): - """ - Fix data. - - Masks invalid values. - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - data = da.ma.masked_equal(cube.core_data(), 1.e36) - return cube.copy(data) - - -# No clear way to apply this fix now that we are working with cubes, not files - -# class sftlf(Fix): -# -# def fix_metadata(self): -# self.cube = self.cube * 1.e6 - -# if (name.eq."sftlf") then -# files = systemfunc("ls " + INFILE) -# f=addfile(files(0), "r") -# tmp=f->lat -# var&lat = tmp -# delete(tmp) -# delete(f) -# ret = 0 -# end if -# diff --git a/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py b/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py deleted file mode 100644 index 995db84a0b..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py +++ /dev/null @@ -1,65 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for CCSM4 model.""" -import numpy as np - -from ..fix import Fix - - -# noinspection PyPep8Naming -class rlut(Fix): - """Fixes for rlut.""" - - def fix_metadata(self, cubes): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - cube = self.get_cube_from_list(cubes) - lat = cube.coord('latitude') - lat.points = np.round(lat.points, 3) - lat.bounds = np.round(lat.bounds, 3) - return cubes - - -class rlutcs(rlut): - """Fixes for rlutcs.""" - - -class rsut(rlut): - """Fixes for rsut.""" - - -class rsutcs(rlut): - """Fixes for rsutcs.""" - - -class so(Fix): - """Fixes for so.""" - - def fix_metadata(self, cubes): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - self.get_cube_from_list(cubes).units = '1e3' - return cubes diff --git a/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py b/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py deleted file mode 100644 index 7c5b0dfe74..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py +++ /dev/null @@ -1,30 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for CESM1-BGC model.""" - -from cf_units import Unit - -from ..fix import Fix - - -class co2(Fix): - """Fixes for co2 variable.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 28.966 / 44.0 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py b/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py deleted file mode 100644 index 5c47ec88d2..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py +++ /dev/null @@ -1,31 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for CNRM-CM5 model.""" -from ..fix import Fix - - -class msftmyz(Fix): - """Fixes for msftmyz.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1e6 - cube.metadata = metadata - return cube - - -class msftmyzba(msftmyz): - """Fixes for msftmyzba.""" diff --git a/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py b/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py deleted file mode 100644 index 048b957376..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py +++ /dev/null @@ -1,28 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for CanESM2 model.""" -from ..fix import Fix - - -# noinspection PyPep8Naming -class fgco2(Fix): - """Fixes for fgco2.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 12.0 / 44.0 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/EC_EARTH.py b/esmvaltool/cmor/_fixes/CMIP5/EC_EARTH.py deleted file mode 100644 index adc8c02c41..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/EC_EARTH.py +++ /dev/null @@ -1,51 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for EC-Earth model.""" -from ..fix import Fix - - -class sic(Fix): - """Fixes for sic.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube - - -class sftlf(Fix): - """Fixes for sftlf.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/FGOALS_g2.py b/esmvaltool/cmor/_fixes/CMIP5/FGOALS_g2.py deleted file mode 100644 index 7395c5e6b8..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/FGOALS_g2.py +++ /dev/null @@ -1,29 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for FGOALS-g2 model""" -from cf_units import Unit - -from ..fix import Fix - - -class allvars(Fix): - """Fixes common to all vars""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes time units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - for cube in cubes: - time = cube.coord('time') - time.units = Unit(time.units.name, time.units.calendar) - return cubes diff --git a/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py deleted file mode 100644 index 491af3c861..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py +++ /dev/null @@ -1,51 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for FIO ESM model.""" -from ..fix import Fix - - -class co2(Fix): - """Fixes for co2.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 29. / 44. * 1.e6 - cube.metadata = metadata - return cube - - -class ch4(Fix): - """Fixes for ch4.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 29. / 16. * 1.e9 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM2p1.py b/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM2p1.py deleted file mode 100644 index af97ded041..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM2p1.py +++ /dev/null @@ -1,32 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for GFDL CM2p1 model.""" -from ..fix import Fix -from ..CMIP5.GFDL_ESM2G import allvars as base_allvars - - -class allvars(base_allvars): - """Fixes for all variables.""" - - -class sftof(Fix): - """Fixes for sftof.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM3.py b/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM3.py deleted file mode 100644 index b796f8b0f7..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM3.py +++ /dev/null @@ -1,33 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for GFDL CM3 model""" -from ..fix import Fix - -from ..CMIP5.GFDL_ESM2G import allvars as base_allvars - - -class allvars(base_allvars): - """Fixes for all variables.""" - - -class sftof(Fix): - """Fixes for sftof""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2G.py b/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2G.py deleted file mode 100644 index b2e861d89d..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2G.py +++ /dev/null @@ -1,82 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for GFDL ESM2G.""" - -import iris - -from ..fix import Fix - - -def _get_and_remove(cubes, long_name): - try: - cube = cubes.extract_strict(long_name) - cubes.remove(cube) - except iris.exceptions.ConstraintMismatchError: - pass - - -class allvars(Fix): - """Common fixes.""" - - def fix_metadata(self, cubes): - """Fix metadata. - - Fixes bad standard names. - - Parameters - ---------- - cubes: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - _get_and_remove(cubes, 'Start time for average period') - _get_and_remove(cubes, 'End time for average period') - _get_and_remove(cubes, 'Length of average period') - return cubes - - -class co2(Fix): - """Fixes for co2.""" - - def fix_data(self, cube): - """Fix data. - - Fixes discrepancy between declared units and real units. - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1e6 - cube.metadata = metadata - return cube - - -class fgco2(Fix): - """Fixes for fgco2.""" - - def fix_metadata(self, cubes): - """Fix metadata. - - Remove unnecessary variables prohibiting cube concatenation. - - Parameters - ---------- - cubes: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - _get_and_remove(cubes, 'Latitude of tracer (h) points') - _get_and_remove(cubes, 'Longitude of tracer (h) points') - return cubes diff --git a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py b/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py deleted file mode 100644 index ec161a6e70..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py +++ /dev/null @@ -1,58 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for GFDL ESM2M""" -from cf_units import Unit - -from ..fix import Fix -from ..CMIP5.GFDL_ESM2G import allvars as base_allvars - - -class allvars(base_allvars): - """Fixes for all variables""" - - -class sftof(Fix): - """Fixes for sftof""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube - - -class co2(Fix): - """Fixes for co2""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1e6 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_CC.py b/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_CC.py deleted file mode 100644 index 33ed75be27..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_CC.py +++ /dev/null @@ -1,68 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for HadGEM2_CC""" -import iris -import numpy as np - -from ..fix import Fix - - -class allvars(Fix): - """Fixes common to all vars""" - - def fix_metadata(self, cubes): - """ - Fixes latitude. - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - for cube in cubes: - lats = cube.coords('latitude') - if lats: - lat = cube.coord('latitude') - lat.points = np.clip(lat.points, -90., 90.) - lat.bounds = np.clip(lat.bounds, -90., 90.) - - return cubes - - -class o2(Fix): - """Fixes for o2""" - - def fix_file(self, filepath, output_dir): - """ - Apply fixes to the files prior to creating the cube. - - Should be used only to fix errors that prevent loading or can - not be fixed in the cube (i.e. those related with missing_value - and _FillValue or missing standard_name). - Parameters - ---------- - filepath: basestring - file to fix. - output_dir: basestring - path to the folder to store the fix files, if required. - Returns - ------- - basestring - Path to the corrected file. It can be different from the original - filepath if a fix has been applied, but if not it should be the - original filepath. - """ - new_path = Fix.get_fixed_filepath(output_dir, filepath) - cube = iris.load_cube(filepath) - - std = 'mole_concentration_of_dissolved_molecular_oxygen_in_sea_water' - long_name = 'Dissolved Oxygen Concentration' - - cube.long_name = long_name - cube.standard_name = std - - iris.save(cube, new_path) - return new_path diff --git a/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py b/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py deleted file mode 100644 index b9a4e3c0e6..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py +++ /dev/null @@ -1,68 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for HadGEM2_ES.""" -import numpy as np -import iris - -from ..fix import Fix - - -class allvars(Fix): - """Fixes common to all vars.""" - - def fix_metadata(self, cubes): - """ - Fixes latitude. - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - for cube in cubes: - lats = cube.coords('latitude') - if lats: - lat = cube.coord('latitude') - lat.points = np.clip(lat.points, -90., 90.) - lat.bounds = np.clip(lat.bounds, -90., 90.) - - return cubes - - -class o2(Fix): - """Fixes for o2.""" - - def fix_file(self, filepath, output_dir): - """ - Apply fixes to the files prior to creating the cube. - - Should be used only to fix errors that prevent loading or can - not be fixed in the cube (i.e. those related with missing_value - and _FillValue or missing standard_name). - Parameters - ---------- - filepath: basestring - file to fix. - output_dir: basestring - path to the folder to store the fix files, if required. - Returns - ------- - basestring - Path to the corrected file. It can be different from the original - filepath if a fix has been applied, but if not it should be the - original filepath. - """ - new_path = Fix.get_fixed_filepath(output_dir, filepath) - cube = iris.load_cube(filepath) - - std = 'mole_concentration_of_dissolved_molecular_oxygen_in_sea_water' - long_name = 'Dissolved Oxygen Concentration' - - cube.long_name = long_name - cube.standard_name = std - - iris.save(cube, new_path) - return new_path diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py deleted file mode 100644 index 352b3bd2b2..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py +++ /dev/null @@ -1,110 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MIROC5 model.""" -import numpy as np -from ..fix import Fix - - -class sftof(Fix): - """Fixes for sftof.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube - - -class snw(Fix): - """Fixes for snw.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube - - -class snc(snw): - """Fixes for snc.""" - - # dayspermonth = (/31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31/) - - # if ((name.eq."snc".or.name.eq."snw").and.FIELD.eq."T2Ds".and. \ - # ENSEMBLE.eq."r1i1p1") then - # opt = 0 - # opt@calendar = var&time@calendar - # t = 0.0 - # t@calendar = var&time@calendar - # t@units = var&time@units - # res = cd_calendar(t, -5) - # yy = res(0, 0) - # mm = res(0, 1) - # dd = res(0, 2) - # do ii = 0, dimsizes(var&time) - 1 - # var&time(ii) = tofloat(cd_inv_calendar(yy, mm, dd, 12, 0, 0, \ - # var&time@units, opt)) - # dd = dd + 1 - # if (dd.gt.dayspermonth(mm-1)) then - # mm = mm + 1 - # dd = 1 - # end if - # if (mm.gt.12) then - # mm = 1 - # yy = yy + 1 - # end if - # end do - # ret = 0 - # end if - - -class msftmyz(Fix): - """Fixes for msftmyz.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes mask - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - cube.data = np.ma.array(cube.data) - cube.data = np.ma.masked_where(cube.data.mask + (cube.data == 0.), - cube.data) - - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py deleted file mode 100644 index a976fb1aba..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py +++ /dev/null @@ -1,111 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MIROC ESM model""" -import cf_units -from iris.coords import DimCoord -from iris.exceptions import CoordinateNotFoundError - -from ..fix import Fix - - -class tro3(Fix): - """Fixes for tro3.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1000 - cube.metadata = metadata - return cube - - -class co2(Fix): - """Fixes for co2""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes error in cube units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - self.get_cube_from_list(cubes).units = '1.0e-6' - return cubes - - -class gpp(Fix): - """Fixes for gpp""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes error in cube units - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - # Fixing the metadata, automatic unit conversion should do the trick - self.get_cube_from_list(cubes).units = cf_units.Unit('g m-2 day-1') - return cubes - - -class allvars(Fix): - """Common fixes to all vars""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Fixes error in air_pressure coordinate, sometimes called AR5PL35 - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - for cube in cubes: - try: - old = cube.coord('AR5PL35') - dims = cube.coord_dims(old) - cube.remove_coord(old) - - plev = DimCoord.from_coord(old) - plev.var_name = plev - plev.standard_name = 'air_pressure' - plev.long_name = 'Pressure ' - cube.add_dim_coord(plev, dims) - except CoordinateNotFoundError: - pass - - return cubes diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py deleted file mode 100644 index 072f510ee5..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py +++ /dev/null @@ -1,47 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MIROC ESM CHEM""" -from ..fix import Fix - - -class tro3(Fix): - """Fixes for tro3""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 1000 - cube.metadata = metadata - return cube - - -# if (name .eq. "tro3") then -# if (iscoord(var, "time")) then -# do it = 1, dimsizes(var&time) - 1 -# if (var&time(it).eq.0) then -# tt = tointeger(cd_calendar(var&time(it-1), 0)) -# tt(0, 1) = tt(0, 1) + 1 ; month -# if (tt(0, 1).gt.12) then -# tt(0, 1) = 1 -# tt(0, 0) = tt(0, 0) + 1 ; year -# end if -# var&time(it) = cd_inv_calendar(\ -# tt(0, 0), tt(0, 1), tt(0, 2), tt(0, 3), \ -# tt(0, 4), tt(0, 5), var&time@units, 0) -# end if -# end do -# ret = 0 -# end if -# end if diff --git a/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py b/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py deleted file mode 100644 index c0a5b483e9..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py +++ /dev/null @@ -1,27 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MPI ESM LR model.""" -from ..fix import Fix - - -class pctisccp(Fix): - """Fixes for pctisccp.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 100 - cube.metadata = metadata - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/MRI_CGCM3.py b/esmvaltool/cmor/_fixes/CMIP5/MRI_CGCM3.py deleted file mode 100644 index ab03ae2d99..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MRI_CGCM3.py +++ /dev/null @@ -1,55 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MRI-CGCM3 model.""" -import numpy as np -from ..fix import Fix - - -class msftmyz(Fix): - """Fixes for msftmyz.""" - - def fix_data(self, cube): - """ - Fix msftmyz data. - - Fixes mask - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - cube.data = np.ma.array(cube.data) - cube.data = np.ma.masked_where(cube.data.mask + (cube.data == 0.), - cube.data) - - return cube - - -class thetao(Fix): - """Fixes for thetao.""" - - def fix_data(self, cube): - """ - Fix thetao data. - - Fixes mask - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - cube.data = np.ma.array(cube.data) - cube.data = np.ma.masked_where(np.logical_or(cube.data.mask, - cube.data == 0.), - cube.data) - - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/MRI_ESM1.py b/esmvaltool/cmor/_fixes/CMIP5/MRI_ESM1.py deleted file mode 100644 index 4484dd7c0e..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/MRI_ESM1.py +++ /dev/null @@ -1,29 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for MRI-ESM1 model.""" -import numpy as np -from ..fix import Fix - - -class msftmyz(Fix): - """Fixes for msftmyz.""" - - def fix_data(self, cube): - """ - Fix msftmyz data. - - Fixes mask - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - cube.data = np.ma.array(cube.data) - cube.data = np.ma.masked_where(cube.data.mask + (cube.data == 0.), - cube.data) - - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/NorESM1_ME.py b/esmvaltool/cmor/_fixes/CMIP5/NorESM1_ME.py deleted file mode 100644 index cea4578746..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/NorESM1_ME.py +++ /dev/null @@ -1,32 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for NorESM1-ME model.""" - -import numpy as np - -from ..fix import Fix - - -class tas(Fix): - """Fixes for tas.""" - - def fix_metadata(self, cubes): - """Fix metadata. - - Some coordinate points vary for different files of this dataset (for - different time range). This fix removes these inaccuracies by rounding - the coordinates. - - Parameters - ---------- - cubes: iris.cube.CubeList - - Returns - ------- - iris.cube.CubeList - - """ - for cube in cubes: - for coord in cube.coords(dim_coords=True): - for attr in ('points', 'bounds'): - setattr(coord, attr, np.round(getattr(coord, attr), 12)) - return cubes diff --git a/esmvaltool/cmor/_fixes/CMIP5/__init__.py b/esmvaltool/cmor/_fixes/CMIP5/__init__.py deleted file mode 100644 index 7f4ba3d544..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Fixes for CMIP5 data.""" diff --git a/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1.py b/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1.py deleted file mode 100644 index c5bb894908..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1.py +++ /dev/null @@ -1,61 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for bcc-csm1-1.""" -import numpy as np -from scipy.interpolate import InterpolatedUnivariateSpline -from scipy.ndimage import map_coordinates - -from ..fix import Fix - - -class tos(Fix): - """Fixes for tos.""" - - def fix_data(self, cube): - """Fix data. - - Calculate missing latitude/longitude boundaries using interpolation. - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - rlat = cube.coord('grid_latitude').points - rlon = cube.coord('grid_longitude').points - - # Transform grid latitude/longitude to array indices [0, 1, 2, ...] - rlat_to_idx = InterpolatedUnivariateSpline( - rlat, np.arange(len(rlat)), k=1) - rlon_to_idx = InterpolatedUnivariateSpline( - rlon, np.arange(len(rlon)), k=1) - rlat_idx_bnds = rlat_to_idx(cube.coord('grid_latitude').bounds) - rlon_idx_bnds = rlon_to_idx(cube.coord('grid_longitude').bounds) - - # Calculate latitude/longitude vertices by interpolation - lat_vertices = [] - lon_vertices = [] - for (i, j) in [(0, 0), (0, 1), (1, 1), (1, 0)]: - (rlat_v, rlon_v) = np.meshgrid( - rlat_idx_bnds[:, i], rlon_idx_bnds[:, j], indexing='ij') - lat_vertices.append( - map_coordinates( - cube.coord('latitude').points, [rlat_v, rlon_v], - mode='nearest')) - lon_vertices.append( - map_coordinates( - cube.coord('longitude').points, [rlat_v, rlon_v], - mode='wrap')) - lat_vertices = np.array(lat_vertices) - lon_vertices = np.array(lon_vertices) - lat_vertices = np.moveaxis(lat_vertices, 0, -1) - lon_vertices = np.moveaxis(lon_vertices, 0, -1) - - # Copy vertices to cube - cube.coord('latitude').bounds = lat_vertices - cube.coord('longitude').bounds = lon_vertices - - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1_m.py b/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1_m.py deleted file mode 100644 index e1ec8b43e2..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/bcc_csm1_1_m.py +++ /dev/null @@ -1,61 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for bcc-csm1-1-m.""" -import numpy as np -from scipy.interpolate import InterpolatedUnivariateSpline -from scipy.ndimage import map_coordinates - -from ..fix import Fix - - -class tos(Fix): - """Fixes for tos.""" - - def fix_data(self, cube): - """Fix data. - - Calculate missing latitude/longitude boundaries using interpolation. - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - rlat = cube.coord('grid_latitude').points - rlon = cube.coord('grid_longitude').points - - # Transform grid latitude/longitude to array indices [0, 1, 2, ...] - rlat_to_idx = InterpolatedUnivariateSpline( - rlat, np.arange(len(rlat)), k=1) - rlon_to_idx = InterpolatedUnivariateSpline( - rlon, np.arange(len(rlon)), k=1) - rlat_idx_bnds = rlat_to_idx(cube.coord('grid_latitude').bounds) - rlon_idx_bnds = rlon_to_idx(cube.coord('grid_longitude').bounds) - - # Calculate latitude/longitude vertices by interpolation - lat_vertices = [] - lon_vertices = [] - for (i, j) in [(0, 0), (0, 1), (1, 1), (1, 0)]: - (rlat_v, rlon_v) = np.meshgrid( - rlat_idx_bnds[:, i], rlon_idx_bnds[:, j], indexing='ij') - lat_vertices.append( - map_coordinates( - cube.coord('latitude').points, [rlat_v, rlon_v], - mode='nearest')) - lon_vertices.append( - map_coordinates( - cube.coord('longitude').points, [rlat_v, rlon_v], - mode='wrap')) - lat_vertices = np.array(lat_vertices) - lon_vertices = np.array(lon_vertices) - lat_vertices = np.moveaxis(lat_vertices, 0, -1) - lon_vertices = np.moveaxis(lon_vertices, 0, -1) - - # Copy vertices to cube - cube.coord('latitude').bounds = lat_vertices - cube.coord('longitude').bounds = lon_vertices - - return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py b/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py deleted file mode 100644 index 91d340846a..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py +++ /dev/null @@ -1,117 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for inmcm4 model.""" -import iris - -from ..fix import Fix - - -class gpp(Fix): - """Fixes for gpp.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= -1 - cube.metadata = metadata - return cube - - -class lai(Fix): - """Fixes for lai.""" - - def fix_data(self, cube): - """ - Fix data. - - Fixes discrepancy between declared units and real units - - Parameters - ---------- - cube: iris.cube.Cube - - Returns - ------- - iris.cube.Cube - - """ - metadata = cube.metadata - cube *= 0.01 - cube.metadata = metadata - return cube - - -class nbp(Fix): - """Fixes for nbp.""" - - def fix_file(self, filepath, output_dir): - """ - Apply fixes to the files prior to creating the cube. - - Should be used only to fix errors that prevent loading or can - not be fixed in the cube (i.e. those related with missing_value - and _FillValue or missing standard_name). - - Parameters - ---------- - filepath: basestring - file to fix. - output_dir: basestring - path to the folder to store the fix files, if required. - - Returns - ------- - basestring - Path to the corrected file. It can be different from the original - filepath if a fix has been applied, but if not it should be the - original filepath. - - """ - new_path = Fix.get_fixed_filepath(output_dir, filepath) - cube = iris.load_cube(filepath) - cube.standard_name = ('surface_net_downward_mass_flux_of_carbon_' - 'dioxide_expressed_as_carbon_due_to_all_land_' - 'processes') - iris.save(cube, new_path) - return new_path - - -class baresoilFrac(Fix): - """Fixes for baresoilFrac.""" - - def fix_metadata(self, cubelist): - """ - Fix missing scalar dimension. - - Parameters - ---------- - cubelist: iris CubeList - List of cubes to fix - - Returns - ------- - iris.cube.CubeList - - """ - typebare = iris.coords.AuxCoord( - 'bare_ground', - standard_name='area_type', - long_name='surface type', - var_name='type', - units='1', - bounds=None) - for cube in cubelist: - cube.add_aux_coord(typebare) - return cubelist diff --git a/esmvaltool/cmor/_fixes/CMIP6/__init__.py b/esmvaltool/cmor/_fixes/CMIP6/__init__.py deleted file mode 100644 index 4348e35490..0000000000 --- a/esmvaltool/cmor/_fixes/CMIP6/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Fixes for CMIP6 data.""" diff --git a/esmvaltool/cmor/_fixes/PRIMAVERA/EC_Earth3_HR.py b/esmvaltool/cmor/_fixes/PRIMAVERA/EC_Earth3_HR.py deleted file mode 100644 index 6f31db6ada..0000000000 --- a/esmvaltool/cmor/_fixes/PRIMAVERA/EC_Earth3_HR.py +++ /dev/null @@ -1,29 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for EC-Earth3-HR PRIMAVERA project data""" -from ..fix import Fix - - -class allvars(Fix): - """Fixes common to all variables.""" - - def fix_metadata(self, cubes): - """ - Fix cube metadata. - - Parameters - ---------- - cube: Cube - Cube to fix - - Returns - ------- - Cube: - Fixed cube. It is the same instance that was received - """ - for cube in cubes: - latitude = cube.coord('latitude') - latitude.var_name = 'lat' - - longitude = cube.coord('longitude') - longitude.var_name = 'lon' - return cubes diff --git a/esmvaltool/cmor/_fixes/PRIMAVERA/__init__.py b/esmvaltool/cmor/_fixes/PRIMAVERA/__init__.py deleted file mode 100644 index 74148590d1..0000000000 --- a/esmvaltool/cmor/_fixes/PRIMAVERA/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Fixes for PRIMAVERA project data.""" diff --git a/esmvaltool/cmor/_fixes/__init__.py b/esmvaltool/cmor/_fixes/__init__.py deleted file mode 100644 index e50e749659..0000000000 --- a/esmvaltool/cmor/_fixes/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -""" -Automatic fixes for input data - -Module to apply automatic fixes at different levels to input data for known -errors. -""" diff --git a/esmvaltool/cmor/_fixes/fix.py b/esmvaltool/cmor/_fixes/fix.py deleted file mode 100644 index 50e2477960..0000000000 --- a/esmvaltool/cmor/_fixes/fix.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Contains the base class for dataset fixes""" -import importlib -import os - - -class Fix(object): - """ - Base class for dataset fixes. - """ - - def fix_file(self, filepath, output_dir): - """ - Apply fixes to the files prior to creating the cube. - - Should be used only to fix errors that prevent loading or can - not be fixed in the cube (i.e. those related with missing_value - and _FillValue) - - Parameters - ---------- - filepath: basestring - file to fix - output_dir: basestring - path to the folder to store the fixe files, if required - - Returns - ------- - basestring - Path to the corrected file. It can be different from the original - filepath if a fix has been applied, but if not it should be the - original filepath - - """ - return filepath - - def fix_metadata(self, cubes): - """ - Apply fixes to the metadata of the cube. - - Changes applied here must not require data loading. - - These fixes should be applied before checking the metadata. - - Parameters - ---------- - cubes: iris.cube.CubeList - Cubes to fix - - Returns - ------- - iris.cube.CubeList - Fixed cubes. They can be different instances. - - """ - return cubes - - def get_cube_from_list(self, cubes, short_name=None): - """ - Get a cube from the list with a given short name. - - Parameters - ---------- - cubes : iris.cube.CubeList - List of cubes to search - short_name : str - Cube's variable short name. If None, short name is the class name - - Raises - ------ - Exception - If no cube is found - - Returns - ------- - iris.Cube - Variable's cube - """ - if short_name is None: - short_name = self.__class__.__name__ - for cube in cubes: - if cube.var_name == short_name: - return cube - raise Exception('Cube for variable "{}" not found'.format(short_name)) - - def fix_data(self, cube): - """ - Apply fixes to the data of the cube. - - These fixes should be applied before checking the data. - - Parameters - ---------- - cube: iris.cube.Cube - Cube to fix - - Returns - ------- - iris.cube.Cube - Fixed cube. It can be a difference instance. - - """ - return cube - - def __eq__(self, other): - return type(self) == type(other) - - def __ne__(self, other): - return not (self == other) - - @staticmethod - def get_fixes(project, dataset, variable): - """ - Get the fixes that must be applied for a given dataset. - - It will look for them at the module - esmvaltool.cmor._fixes.PROJECT in the file DATASET, and get - the classes named allvars (which should be use for fixes that are - present in all the variables of a dataset, i.e. bad name for the time - coordinate) and VARIABLE (which should be use for fixes for the - specific variable). - - Project, dataset and variable names will have '-' replaced by '_' - before checking because it is not possible to use the character '-' in - python names. - - Parameters - ---------- - project: str - dataset: str - variable: str - - Returns - ------- - list(Fix) - Fixes to apply for the given data - """ - project = project.replace('-', '_') - dataset = dataset.replace('-', '_') - variable = variable.replace('-', '_') - - fixes = [] - try: - fixes_module = importlib.import_module( - 'esmvaltool.cmor._fixes.{0}.{1}'.format(project, dataset)) - for fix_name in ('allvars', variable): - try: - fixes.append(getattr(fixes_module, fix_name)()) - except AttributeError: - pass - except ImportError: - pass - return fixes - - @staticmethod - def get_fixed_filepath(output_dir, filepath): - """ - Get the filepath for the fixed file - - Parameters - ---------- - var_path: str - Original path - - Returns - ------- - str - Path to the fixed file - """ - if not os.path.isdir(output_dir): - os.makedirs(output_dir) - return os.path.join(output_dir, os.path.basename(filepath)) diff --git a/esmvaltool/cmor/_fixes/obs4mips/SSMI.py b/esmvaltool/cmor/_fixes/obs4mips/SSMI.py deleted file mode 100644 index 5343af0826..0000000000 --- a/esmvaltool/cmor/_fixes/obs4mips/SSMI.py +++ /dev/null @@ -1,16 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for SSMI model.""" -from ..fix import Fix - - -class prw(Fix): - """Fixes for prw.""" - - def fix_metadata(self, cubes): - for cube in cubes: - latitude = cube.coord('latitude') - latitude.var_name = 'lat' - - longitude = cube.coord('longitude') - longitude.var_name = 'lon' - return cubes diff --git a/esmvaltool/cmor/_fixes/obs4mips/SSMI_MERIS.py b/esmvaltool/cmor/_fixes/obs4mips/SSMI_MERIS.py deleted file mode 100644 index 56c88daa8e..0000000000 --- a/esmvaltool/cmor/_fixes/obs4mips/SSMI_MERIS.py +++ /dev/null @@ -1,28 +0,0 @@ -# pylint: disable=invalid-name, no-self-use, too-few-public-methods -"""Fixes for CCSM4 model.""" -from iris.cube import CubeList - -from ..fix import Fix - - -# noinspection PyPep8Naming -class prw(Fix): - """Fixes for prw.""" - - def fix_metadata(self, cubes): - """ - Fix metadata. - - Remove error and number of observations cubes - - Parameters - ---------- - cube: iris.cube.CubeList - - Returns - ------- - iris.cube.Cube - - """ - cube = self.get_cube_from_list(cubes) - return CubeList([cube]) diff --git a/esmvaltool/cmor/_fixes/obs4mips/__init__.py b/esmvaltool/cmor/_fixes/obs4mips/__init__.py deleted file mode 100644 index 255025f5a8..0000000000 --- a/esmvaltool/cmor/_fixes/obs4mips/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Fixes for obs4mips data.""" diff --git a/esmvaltool/cmor/check.py b/esmvaltool/cmor/check.py deleted file mode 100644 index b46d1cb93d..0000000000 --- a/esmvaltool/cmor/check.py +++ /dev/null @@ -1,641 +0,0 @@ -"""Module for checking iris cubes against their CMOR definitions.""" -import logging - -import cf_units -import iris.coord_categorisation -import iris.coords -import iris.exceptions -import iris.util -import numpy as np - -from .table import CMOR_TABLES - - -class CMORCheckError(Exception): - """Exception raised when a cube does not pass the CMORCheck.""" - - -class CMORCheck(): - """Class used to check the CMOR-compliance of the data. - - It can also fix some minor errors and does some minor data - homogeneization: - - Parameters - ---------- - cube: iris.cube.Cube: - Iris cube to check. - var_info: variables_info.VariableInfo - Variable info to check. - frequency: str - Expected frequency for the data. - fail_on_error: bool - If true, CMORCheck stops on the first error. If false, it collects - all possible errors before stopping. - automatic_fixes: bool - If True, CMORCheck will try to apply automatic fixes for any - detected error, if possible. - - Attributes - ---------- - frequency: str - Expected frequency for the data. - automatic_fixes: bool - If True, CMORCheck will try to apply automatic fixes for any - detected error, if possible. - - """ - - _attr_msg = '{}: {} should be {}, not {}' - _does_msg = '{}: does not {}' - _is_msg = '{}: is not {}' - _vals_msg = '{}: has values {} {}' - _contain_msg = '{}: does not contain {} {}' - - def __init__(self, - cube, - var_info, - frequency=None, - fail_on_error=False, - automatic_fixes=False): - - self._cube = cube - self._failerr = fail_on_error - self._errors = list() - self._warnings = list() - self._cmor_var = var_info - if frequency is None: - frequency = self._cmor_var.frequency - self.frequency = frequency - self.automatic_fixes = automatic_fixes - - def check_metadata(self, logger=None): - """Check the cube metadata. - - Perform all the tests that do not require to have the data in memory. - - It will also report some warnings in case of minor errors and - homogenize some data: - - - Equivalent calendars will all default to the same name. - - Auxiliary coordinates year, month_number, day_of_month and - day_of_year will be added for the time axis. - - Raises - ------ - CMORCheckError - If errors are found. If fail_on_error attribute is set to True, - raises as soon as an error is detected. If set to False, it perform - all checks and then raises. - - """ - if logger is None: - logger = logging.getLogger(__name__) - - self._check_var_metadata() - self._check_fill_value() - self._check_dim_names() - self._check_coords() - self._check_time_coord() - self._check_rank() - - self.report_warnings(logger) - self.report_errors() - - self._add_auxiliar_time_coordinates() - return self._cube - - def report_errors(self): - """Report detected errors. - - Raises - ------ - CMORCheckError - If any errors were reported before calling this method. - - """ - if self.has_errors(): - msg = 'There were errors in variable {}:\n{}\nin cube:\n{}' - msg = msg.format(self._cube.var_name, '\n '.join(self._errors), - self._cube) - raise CMORCheckError(msg) - - def report_warnings(self, logger): - """Report detected warnings to the given logger. - - Parameters - ---------- - logger - - """ - if self.has_warnings(): - msg = 'There were warnings in variable {}:\n{}\n'.format( - self._cube.var_name, '\n '.join(self._warnings)) - logger.warning(msg) - - def check_data(self, logger=None): - """Check the cube data. - - Performs all the tests that require to have the data in memory. - Assumes that metadata is correct, so you must call check_metadata prior - to this. - - It will also report some warnings in case of minor errors. - - Raises - ------ - CMORCheckError - If errors are found. If fail_on_error attribute is set to True, - raises as soon as an error is detected. If set to False, it perform - all checks and then raises. - - """ - if logger is None: - logger = logging.getLogger(__name__) - - if self._cmor_var.units: - units = self._get_effective_units() - if str(self._cube.units) != units: - self._cube.convert_units(units) - - self._check_coords_data() - - self.report_warnings(logger) - self.report_errors() - return self._cube - - def _check_fill_value(self): - """Check fill value.""" - # Iris removes _FillValue/missing_value information if data has none - # of these values. If there are values == _FillValue then it will - # be encoded in the numpy.ma object created. - # - # => Very difficult to check! - - def _check_var_metadata(self): - """Check metadata of variable.""" - # Check standard_name - if self._cmor_var.standard_name: - if self._cube.standard_name != self._cmor_var.standard_name: - self.report_error( - self._attr_msg, self._cube.var_name, 'standard_name', - self._cmor_var.standard_name, self._cube.standard_name) - - # Check units - if (self.automatic_fixes and self._cube.attributes.get( - 'invalid_units', '').lower() == 'psu'): - self._cube.units = '1.0' - del self._cube.attributes['invalid_units'] - - if self._cmor_var.units: - units = self._get_effective_units() - - if not self._cube.units.is_convertible(units): - self.report_error(f'Variable {self._cube.var_name} units ' - f'{self._cube.units} can not be ' - f'converted to {self._cmor_var.units}') - - # Check other variable attributes that match entries in cube.attributes - attrs = ('positive', ) - for attr in attrs: - attr_value = getattr(self._cmor_var, attr) - if attr_value: - if attr not in self._cube.attributes: - self.report_warning('{}: attribute {} not present', - self._cube.var_name, attr) - elif self._cube.attributes[attr] != attr_value: - self.report_error(self._attr_msg, self._cube.var_name, - attr, attr_value, - self._cube.attributes[attr]) - - def _get_effective_units(self): - """Get effective units.""" - if self._cmor_var.units.lower() == 'psu': - units = '1.0' - else: - units = self._cmor_var.units - return units - - def _check_rank(self): - """Check rank, excluding scalar dimensions.""" - rank = 0 - dimensions = [] - for coordinate in self._cmor_var.coordinates.values(): - if coordinate.generic_level: - rank += 1 - elif not coordinate.value: - try: - for dim in self._cube.coord_dims(coordinate.standard_name): - dimensions.append(dim) - except iris.exceptions.CoordinateNotFoundError: - # Error reported at other stages - pass - rank += len(set(dimensions)) - - # Check number of dimension coords matches rank - if self._cube.ndim != rank: - self.report_error(self._does_msg, self._cube.var_name, - 'match coordinate rank') - - def _check_dim_names(self): - """Check dimension names.""" - for (_, coordinate) in self._cmor_var.coordinates.items(): - if coordinate.generic_level: - continue - else: - try: - cube_coord = self._cube.coord(var_name=coordinate.out_name) - if cube_coord.standard_name != coordinate.standard_name: - self.report_error( - self._attr_msg, - coordinate.out_name, - 'standard_name', - coordinate.standard_name, - cube_coord.standard_name, - ) - except iris.exceptions.CoordinateNotFoundError: - try: - coord = self._cube.coord(coordinate.standard_name) - self.report_error( - 'Coordinate {0} has var name {1} instead of {2}', - coordinate.name, - coord.var_name, - coordinate.out_name, - ) - except iris.exceptions.CoordinateNotFoundError: - self.report_error(self._does_msg, coordinate.name, - 'exist') - - def _check_coords(self): - """Check coordinates.""" - for coordinate in self._cmor_var.coordinates.values(): - # Cannot check generic_level coords as no CMOR information - if coordinate.generic_level: - continue - var_name = coordinate.out_name - - # Get coordinate var_name as it exists! - try: - coord = self._cube.coord(var_name=var_name, dim_coords=True) - except iris.exceptions.CoordinateNotFoundError: - continue - - self._check_coord(coordinate, coord, var_name) - - def _check_coords_data(self): - """Check coordinate data.""" - for coordinate in self._cmor_var.coordinates.values(): - # Cannot check generic_level coords as no CMOR information - if coordinate.generic_level: - continue - var_name = coordinate.out_name - - # Get coordinate var_name as it exists! - try: - coord = self._cube.coord(var_name=var_name, dim_coords=True) - except iris.exceptions.CoordinateNotFoundError: - continue - - self._check_coord_monotonicity_and_direction( - coordinate, coord, var_name) - - def _check_coord(self, cmor, coord, var_name): - """Check single coordinate.""" - if coord.var_name == 'time': - return - if cmor.units: - if str(coord.units) != cmor.units: - fixed = False - if self.automatic_fixes: - try: - new_unit = cf_units.Unit(cmor.units, - coord.units.calendar) - coord.convert_units(new_unit) - fixed = True - except ValueError: - pass - if not fixed: - self.report_error(self._attr_msg, var_name, 'units', - cmor.units, coord.units) - self._check_coord_values(cmor, coord, var_name) - if not self.automatic_fixes: - self._check_coord_monotonicity_and_direction(cmor, coord, var_name) - - def _check_coord_monotonicity_and_direction(self, cmor, coord, var_name): - """Check monotonicity and direction of coordinate.""" - if not coord.is_monotonic(): - self.report_error(self._is_msg, var_name, 'monotonic') - if len(coord.points) == 1: - return - if cmor.stored_direction: - if cmor.stored_direction == 'increasing': - if coord.points[0] > coord.points[1]: - if not self.automatic_fixes or coord.ndim > 1: - self.report_error(self._is_msg, var_name, 'increasing') - else: - self._reverse_coord(coord) - elif cmor.stored_direction == 'decreasing': - if coord.points[0] < coord.points[1]: - if not self.automatic_fixes or coord.ndim > 1: - self.report_error(self._is_msg, var_name, 'decreasing') - else: - self._reverse_coord(coord) - - def _reverse_coord(self, coord): - """Reverse coordinate.""" - if coord.ndim == 1: - self._cube = iris.util.reverse(self._cube, - self._cube.coord_dims(coord)) - - def _check_coord_values(self, coord_info, coord, var_name): - """Check coordinate values.""" - # Check requested coordinate values exist in coord.points - self._check_requested_values(coord, coord_info, var_name) - - l_fix_coord_value = False - - # Check coordinate value ranges - if coord_info.valid_min: - valid_min = float(coord_info.valid_min) - if np.any(coord.points < valid_min): - if coord_info.standard_name == 'longitude' and \ - self.automatic_fixes: - l_fix_coord_value = True - else: - self.report_error(self._vals_msg, var_name, - '< {} ='.format('valid_min'), valid_min) - - if coord_info.valid_max: - valid_max = float(coord_info.valid_max) - if np.any(coord.points > valid_max): - if coord_info.standard_name == 'longitude' and \ - self.automatic_fixes: - l_fix_coord_value = True - else: - self.report_error(self._vals_msg, var_name, - '> {} ='.format('valid_max'), valid_max) - - if l_fix_coord_value: - lon_extent = iris.coords.CoordExtent(coord, 0.0, 360., True, False) - self._cube = self._cube.intersection(lon_extent) - - def _check_requested_values(self, coord, coord_info, var_name): - """Check requested values.""" - if coord_info.requested: - cmor_points = [float(val) for val in coord_info.requested] - coord_points = list(coord.points) - for point in cmor_points: - if point not in coord_points: - self.report_warning(self._contain_msg, var_name, - str(point), str(coord.units)) - - def _check_time_coord(self): - """Check time coordinate.""" - try: - coord = self._cube.coord('time', dim_coords=True) # , axis='T') - var_name = coord.var_name - except iris.exceptions.CoordinateNotFoundError: - return - - if not coord.units.is_time_reference(): - self.report_error(self._does_msg, var_name, - 'have time reference units') - else: - coord.convert_units( - cf_units.Unit( - 'days since 1950-1-1 00:00:00', - calendar=coord.units.calendar)) - simplified_cal = self._simplify_calendar(coord.units.calendar) - coord.units = cf_units.Unit(coord.units.origin, simplified_cal) - - tol = 0.001 - intervals = {'dec': (3600, 3660), 'day': (1, 1)} - if self.frequency == 'mon': - for i in range(len(coord.points) - 1): - first = coord.cell(i).point - second = coord.cell(i + 1).point - second_month = first.month + 1 - second_year = first.year - if second_month == 13: - second_month = 1 - second_year += 1 - if second_month != second.month or \ - second_year != second.year: - msg = '{}: Frequency {} does not match input data' - self.report_error(msg, var_name, self.frequency) - break - elif self.frequency == 'yr': - for i in range(len(coord.points) - 1): - first = coord.cell(i).point - second = coord.cell(i + 1).point - second_month = first.month + 1 - if first.year + 1 != second.year: - msg = '{}: Frequency {} does not match input data' - self.report_error(msg, var_name, self.frequency) - break - else: - if self.frequency in intervals: - interval = intervals[self.frequency] - target_interval = (interval[0] - tol, interval[1] + tol) - elif self.frequency.endswith('hr'): - frequency = self.frequency[:-2] - if frequency == 'sub': - frequency = 1.0 / 24 - target_interval = (-tol, frequency + tol) - else: - frequency = float(frequency) / 24 - target_interval = (frequency - tol, frequency + tol) - else: - msg = '{}: Frequency {} not supported by checker' - self.report_error(msg, var_name, self.frequency) - return - for i in range(len(coord.points) - 1): - interval = coord.points[i + 1] - coord.points[i] - if (interval < target_interval[0] - or interval > target_interval[1]): - msg = '{}: Frequency {} does not match input data' - self.report_error(msg, var_name, self.frequency) - break - - @staticmethod - def _simplify_calendar(calendar): - calendar_aliases = { - 'all_leap': '366_day', - 'noleap': '365_day', - 'standard': 'gregorian', - } - return calendar_aliases.get(calendar, calendar) - - def has_errors(self): - """Check if there are reported errors. - - Returns - ------- - bool: - True if there are pending errors, False otherwise. - - """ - return len(self._errors) > 0 - - def has_warnings(self): - """Check if there are reported warnings. - - Returns - ------- - bool: - True if there are pending warnings, False otherwise. - - """ - return len(self._warnings) > 0 - - def report_error(self, message, *args): - """Report an error. - - If fail_on_error is set to True, raises automatically. - If fail_on_error is set to False, stores it for later reports. - - Parameters - ---------- - message: str: unicode - Message for the error. - *args: - arguments to format the message string. - - """ - msg = message.format(*args) - if self._failerr: - raise CMORCheckError(msg + '\nin cube:\n{}'.format(self._cube)) - self._errors.append(msg) - - def report_warning(self, message, *args): - """Report a warning. - - If fail_on_error is set to True, logs it automatically. - If fail_on_error is set to False, stores it for later reports. - - Parameters - ---------- - message: str: unicode - Message for the warning. - *args: - arguments to format the message string. - - """ - msg = message.format(*args) - if self._failerr: - print('WARNING: {0}'.format(msg)) - else: - self._warnings.append(msg) - - def _add_auxiliar_time_coordinates(self): - coords = [coord.name() for coord in self._cube.aux_coords] - if 'day_of_month' not in coords: - iris.coord_categorisation.add_day_of_month(self._cube, 'time') - if 'day_of_year' not in coords: - iris.coord_categorisation.add_day_of_year(self._cube, 'time') - if 'month_number' not in coords: - iris.coord_categorisation.add_month_number(self._cube, 'time') - if 'year' not in coords: - iris.coord_categorisation.add_year(self._cube, 'time') - - -def _get_cmor_checker(table, - mip, - short_name, - frequency, - fail_on_error=True, - automatic_fixes=False): - """Get a CMOR checker/fixer.""" - if table not in CMOR_TABLES: - raise NotImplementedError( - "No CMOR checker implemented for table {}." - "\nThe following options are available: {}".format( - table, ', '.join(CMOR_TABLES))) - - cmor_table = CMOR_TABLES[table] - var_info = cmor_table.get_variable(mip, short_name) - if var_info is None: - var_info = CMOR_TABLES['custom'].get_variable(mip, short_name) - - def _checker(cube): - return CMORCheck( - cube, - var_info, - frequency=frequency, - fail_on_error=fail_on_error, - automatic_fixes=automatic_fixes) - - return _checker - - -def cmor_check_metadata(cube, cmor_table, mip, short_name, frequency): - """Check if metadata conforms to variable's CMOR definiton. - - None of the checks at this step will force the cube to load the data. - - Parameters - ---------- - cube: iris.cube.Cube - Data cube to check. - cmor_table: basestring - CMOR definitions to use. - mip: - Variable's mip. - short_name: basestring - Variable's short name. - frequency: basestring - Data frequency. - - """ - checker = _get_cmor_checker(cmor_table, mip, short_name, frequency) - checker(cube).check_metadata() - return cube - - -def cmor_check_data(cube, cmor_table, mip, short_name, frequency): - """Check if data conforms to variable's CMOR definiton. - - The checks performed at this step require the data in memory. - - Parameters - ---------- - cube: iris.cube.Cube - Data cube to check. - cmor_table: basestring - CMOR definitions to use. - mip: - Variable's mip. - short_name: basestring - Variable's short name - frequency: basestring - Data frequency - - """ - checker = _get_cmor_checker(cmor_table, mip, short_name, frequency) - checker(cube).check_data() - return cube - - -def cmor_check(cube, cmor_table, mip, short_name, frequency): - """Check if cube conforms to variable's CMOR definiton. - - Equivalent to calling cmor_check_metadata and cmor_check_data - consecutively. - - Parameters - ---------- - cube: iris.cube.Cube - Data cube to check. - cmor_table: basestring - CMOR definitions to use. - mip: - Variable's mip. - short_name: basestring - Variable's short name. - frequency: basestring - Data frequency. - - """ - cmor_check_metadata(cube, cmor_table, mip, short_name, frequency) - cmor_check_data(cube, cmor_table, mip, short_name, frequency) - return cube diff --git a/esmvaltool/cmor/fix.py b/esmvaltool/cmor/fix.py deleted file mode 100644 index 976d1594d0..0000000000 --- a/esmvaltool/cmor/fix.py +++ /dev/null @@ -1,185 +0,0 @@ -""" -Apply automatic fixes for known errors in cmorized data - -All functions in this module will work even if no fixes are available -for the given dataset. Therefore is recommended to apply them to all -variables to be sure that all known errors are -fixed. - -""" -from collections import defaultdict - -from iris.cube import CubeList - -from ._fixes.fix import Fix -from .check import _get_cmor_checker - - -def fix_file(file, short_name, project, dataset, output_dir): - """ - Fix files before ESMValTool can load them. - - This fixes are only for issues that prevent iris from loading the cube or - that cannot be fixed after the cube is loaded. - - Original files are not overwritten. - - Parameters - ---------- - file: str - Path to the original file - short_name: str - Variable's short name - project: str - dataset:str - output_dir: str - Output directory for fixed files - - Returns - ------- - str: - Path to the fixed file - - """ - for fix in Fix.get_fixes( - project=project, dataset=dataset, variable=short_name): - file = fix.fix_file(file, output_dir) - return file - - -def fix_metadata(cubes, - short_name, - project, - dataset, - cmor_table=None, - mip=None, - frequency=None): - """ - Fix cube metadata if fixes are required and check it anyway. - - This method collects all the relevant fixes for a given variable, applies - them and checks the resulting cube (or the original if no fixes were - needed) metadata to ensure that it complies with the standards of its - project CMOR tables. - - Parameters - ---------- - cubes: iris.cube.CubeList - Cubes to fix - short_name: str - Variable's short name - project: str - - dataset: str - - cmor_table: str, optional - CMOR tables to use for the check, if available - - mip: str, optional - Variable's MIP, if available - - frequency: str, optional - Variable's data frequency, if available - - Returns - ------- - iris.cube.Cube: - Fixed and checked cube - - Raises - ------ - CMORCheckError - If the checker detects errors in the metadata that it can not fix. - - """ - fixes = Fix.get_fixes( - project=project, dataset=dataset, variable=short_name) - fixed_cubes = [] - by_file = defaultdict(list) - for cube in cubes: - by_file[cube.attributes.get('source_file', '')].append(cube) - - for cube_list in by_file.values(): - cube_list = CubeList(cube_list) - for fix in fixes: - cube_list = fix.fix_metadata(cube_list) - - if len(cube_list) != 1: - raise ValueError('Cubes were not reduced to one after' - 'fixing: %s' % cube_list) - cube = cube_list[0] - - if cmor_table and mip: - checker = _get_cmor_checker( - frequency=frequency, - table=cmor_table, - mip=mip, - short_name=short_name, - fail_on_error=False, - automatic_fixes=True) - cube = checker(cube).check_metadata() - cube.attributes.pop('source_file', None) - fixed_cubes.append(cube) - return fixed_cubes - - -def fix_data(cube, - short_name, - project, - dataset, - cmor_table=None, - mip=None, - frequency=None): - """ - Fix cube data if fixes add present and check it anyway. - - This method assumes that metadata is already fixed and checked. - - This method collects all the relevant fixes for a given variable, applies - them and checks resulting cube (or the original if no fixes were - needed) metadata to ensure that it complies with the standards of its - project CMOR tables. - - Parameters - ---------- - cube: iris.cube.Cube - Cube to fix - short_name: str - Variable's short name - project: str - - dataset: str - - cmor_table: str, optional - CMOR tables to use for the check, if available - - mip: str, optional - Variable's MIP, if available - - frequency: str, optional - Variable's data frequency, if available - - Returns - ------- - iris.cube.Cube: - Fixed and checked cube - - Raises - ------ - CMORCheckError - If the checker detects errors in the data that it can not fix. - - """ - for fix in Fix.get_fixes( - project=project, dataset=dataset, variable=short_name): - cube = fix.fix_data(cube) - if cmor_table and mip: - checker = _get_cmor_checker( - frequency=frequency, - table=cmor_table, - mip=mip, - short_name=short_name, - fail_on_error=False, - automatic_fixes=True) - cube = checker(cube).check_data() - return cube diff --git a/esmvaltool/cmor/table.py b/esmvaltool/cmor/table.py deleted file mode 100644 index 805ede3a6a..0000000000 --- a/esmvaltool/cmor/table.py +++ /dev/null @@ -1,649 +0,0 @@ -""" -CMOR information reader for ESMValTool. - -Read variable information from CMOR 2 and CMOR 3 tables and make it easily -available for the other components of ESMValTool -""" -import errno -import glob -import json -import logging -import os - -logger = logging.getLogger(__name__) - -CMOR_TABLES = {} -"""dict of str, obj: CMOR info objects.""" - - -def read_cmor_tables(cfg_developer): - """Read cmor tables required in the configuration. - - Parameters - ---------- - cfg_developer : dict of str - Parsed config-developer file - - """ - custom = CustomInfo() - CMOR_TABLES['custom'] = custom - - for table in cfg_developer: - project = cfg_developer[table] - - cmor_type = project.get('cmor_type', 'CMIP5') - table_path = project.get('cmor_tables', cmor_type.lower()) - table_path = os.path.expandvars(os.path.expanduser(table_path)) - - cmor_strict = project.get('cmor_strict', True) - if cmor_strict: - default = None - else: - default = custom - if cmor_type == 'CMIP5': - CMOR_TABLES[table] = CMIP5Info( - table_path, default=default, - ) - elif cmor_type == 'CMIP6': - CMOR_TABLES[table] = CMIP6Info( - table_path, default=default, - ) - - -class CMIP6Info(object): - """ - Class to read CMIP6-like data request. - - This uses CMOR 3 json format - - Parameters - ---------- - cmor_tables_path: basestring - Path to the folder containing the Tables folder with the json files - - """ - - _CMIP_5to6_varname = { - 'sic': 'siconc', - 'sit': 'sithick', - 'tro3': 'o3', - } - - def __init__(self, cmor_tables_path, default=None): - cmor_tables_path = self._get_cmor_path(cmor_tables_path) - - self._cmor_folder = os.path.join(cmor_tables_path, 'Tables') - self.default = default - - self.tables = {} - - self._load_coordinates() - for json_file in glob.glob(os.path.join(self._cmor_folder, '*.json')): - if 'CV_test' in json_file or 'grids' in json_file: - continue - self._load_table(json_file) - - @staticmethod - def _get_cmor_path(cmor_tables_path): - if os.path.isdir(cmor_tables_path): - return cmor_tables_path - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, 'tables', cmor_tables_path) - return cmor_tables_path - - def _load_table(self, json_file): - with open(json_file) as inf: - raw_data = json.loads(inf.read()) - if not self._is_table(raw_data): - return - table = TableInfo() - header = raw_data['Header'] - table.name = header['table_id'][6:].split('_')[-1] - self.tables[table.name] = table - - generic_levels = header['generic_levels'].split() - table.frequency = header.get('frequency', '') - table.realm = header.get('realm', '') - - for var_name, var_data in raw_data['variable_entry'].items(): - var = VariableInfo('CMIP6', var_name) - if 'frequency' in var_data: - var.frequency = var_data['frequency'] - else: - var.frequency = table.frequency - var.read_json(var_data) - self._assign_dimensions(var, generic_levels) - table[var_name] = var - - def _assign_dimensions(self, var, generic_levels): - for dimension in var.dimensions: - if dimension in generic_levels: - coord = CoordinateInfo(dimension) - coord.generic_level = True - coord.axis = 'Z' - else: - coord = self.coords[dimension] - - axis = coord.axis - if not axis: - axis = 'none' - - var.coordinates[axis] = coord - - def _load_coordinates(self): - self.coords = {} - for json_file in glob.glob( - os.path.join(self._cmor_folder, '*coordinate*.json')): - with open(json_file) as inf: - table_data = json.loads(inf.read()) - for coord_name in table_data['axis_entry'].keys(): - coord = CoordinateInfo(coord_name) - coord.read_json(table_data['axis_entry'][coord_name]) - self.coords[coord_name] = coord - - def get_table(self, table): - """ - Search and return the table info. - - Parameters - ---------- - table: basestring - Table name - - Returns - ------- - TableInfo - Return the TableInfo object for the requested table if - found, returns None if not - - """ - return self.tables.get(table) - - def get_variable(self, table, short_name): - """ - Search and return the variable info. - - Parameters - ---------- - table: basestring - Table name - short_name: basestring - Variable's short name - - Returns - ------- - VariableInfo - Return the VariableInfo object for the requested variable if - found, returns None if not - - """ - try: - return self.tables[table][short_name] - except KeyError: - if short_name in CMIP6Info._CMIP_5to6_varname: - new_short_name = CMIP6Info._CMIP_5to6_varname[short_name] - return self.get_variable(table, new_short_name) - if self.default: - return self.default.get_variable(table, short_name) - return None - - @staticmethod - def _is_table(table_data): - if 'variable_entry' not in table_data: - return False - if 'Header' not in table_data: - return False - return True - - -class TableInfo(dict): - """Container class for storing a CMOR table.""" - - def __init__(self, *args, **kwargs): - """Create a new TableInfo object for storing VariableInfo objects.""" - super(TableInfo, self).__init__(*args, **kwargs) - self.name = '' - self.frequency = '' - self.realm = '' - - -class JsonInfo(object): - """ - Base class for the info classes. - - Provides common utility methods to read json variables - """ - - def __init__(self): - self._json_data = {} - - def _read_json_variable(self, parameter): - """ - Read a json parameter in json_data. - - Parameters - ---------- - parameter: str - parameter to read - - Returns - ------- - str - Option's value or empty string if parameter is not present - - """ - if parameter not in self._json_data: - return '' - return str(self._json_data[parameter]) - - def _read_json_list_variable(self, parameter): - """ - Read a json list parameter in json_data. - - Parameters - ---------- - parameter: str - parameter to read - - Returns - ------- - str - Option's value or empty list if parameter is not present - - """ - if parameter not in self._json_data: - return [] - return self._json_data[parameter] - - -class VariableInfo(JsonInfo): - """Class to read and store variable information.""" - - def __init__(self, table_type, short_name): - """ - Class to read and store variable information. - - Parameters - ---------- - short_name: str - variable's short name - - """ - super(VariableInfo, self).__init__() - self.table_type = table_type - self.modeling_realm = [] - """Modeling realm""" - self.short_name = short_name - """Short name""" - self.standard_name = '' - """Standard name""" - self.long_name = '' - """Long name""" - self.units = '' - """Data units""" - self.valid_min = '' - """Minimum admitted value""" - self.valid_max = '' - """Maximum admitted value""" - self.frequency = '' - """Data frequency""" - self.positive = '' - """Increasing direction""" - - self.dimensions = [] - """List of dimensions""" - self.coordinates = {} - """Coordinates""" - - self._json_data = None - - def read_json(self, json_data): - """ - Read variable information from json. - - Non-present options will be set to empty - - Parameters - ---------- - json_data: dict - dictionary created by the json reader containing - variable information - - """ - self._json_data = json_data - - self.standard_name = self._read_json_variable('standard_name') - self.long_name = self._read_json_variable('long_name') - self.units = self._read_json_variable('units') - self.valid_min = self._read_json_variable('valid_min') - self.valid_max = self._read_json_variable('valid_max') - self.positive = self._read_json_variable('positive') - self.modeling_realm = \ - self._read_json_variable('modeling_realm').split() - - self.dimensions = self._read_json_variable('dimensions').split() - - -class CoordinateInfo(JsonInfo): - """Class to read and store coordinate information.""" - - def __init__(self, name): - """ - Class to read and store coordinate information. - - Parameters - ---------- - name: str - coordinate's name - - """ - super(CoordinateInfo, self).__init__() - self.name = name - self.generic_level = False - - self.axis = "" - """Axis""" - self.value = "" - """Coordinate value""" - self.standard_name = "" - """Standard name""" - self.long_name = "" - """Long name""" - self.out_name = "" - """ - Out name - - This is the name of the variable in the file - """ - self.var_name = "" - """Short name""" - self.units = "" - """Units""" - self.stored_direction = "" - """Direction in which the coordinate increases""" - self.requested = [] - """Values requested""" - self.valid_min = "" - """Minimum allowed value""" - self.valid_max = "" - """Maximum allowed value""" - - def read_json(self, json_data): - """ - Read coordinate information from json. - - Non-present options will be set to empty - - Parameters - ---------- - json_data: dict - dictionary created by the json reader containing - coordinate information - - """ - self._json_data = json_data - - self.axis = self._read_json_variable('axis') - self.value = self._read_json_variable('value') - self.out_name = self._read_json_variable('out_name') - self.var_name = self._read_json_variable('var_name') - self.standard_name = self._read_json_variable('standard_name') - self.long_name = self._read_json_variable('long_name') - self.units = self._read_json_variable('units') - self.stored_direction = self._read_json_variable('stored_direction') - self.valid_min = self._read_json_variable('valid_min') - self.valid_max = self._read_json_variable('valid_max') - self.requested = self._read_json_list_variable('requested') - - -class CMIP5Info(object): - """ - Class to read CMIP5-like data request. - - Parameters - ---------- - cmor_tables_path: basestring - Path to the folder containing the Tables folder with the json files - - """ - - def __init__(self, cmor_tables_path, default=None): - cmor_tables_path = self._get_cmor_path(cmor_tables_path) - - self._cmor_folder = os.path.join(cmor_tables_path, 'Tables') - if not os.path.isdir(self._cmor_folder): - raise OSError(errno.ENOTDIR, "CMOR tables path is not a directory", - self._cmor_folder) - - self.tables = {} - self.coords = {} - self.default = default - self._current_table = None - self._last_line_read = None - - for table_file in glob.glob(os.path.join(self._cmor_folder, '*')): - if '_grids' in table_file: - continue - self._load_table(table_file) - - @staticmethod - def _get_cmor_path(cmor_tables_path): - if os.path.isdir(cmor_tables_path): - return cmor_tables_path - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, 'tables', cmor_tables_path) - return cmor_tables_path - - def _load_table(self, table_file, table_name=''): - if table_name and table_name in self.tables: - # special case used for updating a table with custom variable file - table = self.tables[table_name] - else: - # default case: table name is first line of table file - table = None - - self._read_table_file(table_file, table) - - def _read_table_file(self, table_file, table=None): - with open(table_file) as self._current_table: - self._read_line() - while True: - key, value = self._last_line_read - if key == 'table_id': - table = TableInfo() - table.name = value[len('Table '):] - self.tables[table.name] = table - elif key == 'frequency': - table.frequency = value - elif key == 'modeling_realm': - table.realm = value - elif key == 'generic_levels': - for dim in value.split(' '): - coord = CoordinateInfo(dim) - coord.generic_level = True - coord.axis = 'Z' - self.coords[dim] = coord - elif key == 'axis_entry': - self.coords[value] = self._read_coordinate(value) - continue - elif key == 'variable_entry': - table[value] = self._read_variable(value, table.frequency) - continue - if not self._read_line(): - return - - def _read_line(self): - line = self._current_table.readline() - if line == '': - return False - if line.startswith('!'): - return self._read_line() - line = line.replace('\n', '') - if '!' in line: - line = line[:line.index('!')] - line = line.strip() - if not line: - self._last_line_read = ('', '') - else: - index = line.index(':') - self._last_line_read = (line[:index].strip(), - line[index + 1:].strip()) - return True - - def _read_coordinate(self, value): - coord = CoordinateInfo(value) - while self._read_line(): - key, value = self._last_line_read - if key in ('variable_entry', 'axis_entry'): - return coord - if key == 'requested': - coord.requested = value.split(' ') - continue - if hasattr(coord, key): - setattr(coord, key, value) - return coord - - def _read_variable(self, short_name, frequency): - var = VariableInfo('CMIP5', short_name) - var.frequency = frequency - while self._read_line(): - key, value = self._last_line_read - if key in ('variable_entry', 'axis_entry'): - break - if key in ('dimensions', 'modeling_realm'): - setattr(var, key, value.split()) - elif hasattr(var, key): - setattr(var, key, value) - for dim in var.dimensions: - var.coordinates[dim] = self.coords[dim] - return var - - def get_table(self, table): - """ - Search and return the table info. - - Parameters - ---------- - table: basestring - Table name - - Returns - ------- - TableInfo - Return the TableInfo object for the requested table if - found, returns None if not - - """ - return self.tables.get(table) - - def get_variable(self, table, short_name): - """ - Search and return the variable info. - - Parameters - ---------- - table: basestring - Table name - short_name: basestring - Variable's short name - - Returns - ------- - VariableInfo - Return the VariableInfo object for the requested variable if - found, returns None if not - - """ - var_info = self.tables.get(table, {}).get(short_name, None) - if not var_info and self.default: - return self.default.get_variable(table, short_name) - return var_info - - -class CustomInfo(CMIP5Info): - """ - Class to read custom var info for ESMVal. - - Parameters - ---------- - cmor_tables_path: basestring or None - Full path to the table or name for the table if it is present in - ESMValTool repository - - """ - - def __init__(self, cmor_tables_path=None): - cwd = os.path.dirname(os.path.realpath(__file__)) - self._cmor_folder = os.path.join(cwd, 'tables', 'custom') - self.tables = {} - table = TableInfo() - table.name = 'custom' - self.tables[table.name] = table - self._coordinates_file = os.path.join( - self._cmor_folder, - 'CMOR_coordinates.dat', - ) - self.coords = {} - self._read_table_file(self._coordinates_file, self.tables['custom']) - for dat_file in glob.glob(os.path.join(self._cmor_folder, '*.dat')): - if dat_file == self._coordinates_file: - continue - self._read_table_file(dat_file, self.tables['custom']) - - def get_table(self, table): - """ - Search and return the table info. - - Parameters - ---------- - table: basestring - Table name - - Returns - ------- - TableInfo - Return the TableInfo object for the requested table if - found, returns None if not - - """ - return self.tables.get(table) - - def get_variable(self, table, short_name): - """ - Search and return the variable info. - - Parameters - ---------- - table: basestring - Table name - short_name: basestring - Variable's short name - - Returns - ------- - VariableInfo - Return the VariableInfo object for the requested variable if - found, returns None if not - - """ - return self.tables['custom'].get(short_name, None) - - def _read_table_file(self, table_file, table=None): - with open(table_file) as self._current_table: - self._read_line() - while True: - key, value = self._last_line_read - if key == 'generic_levels': - for dim in value.split(' '): - coord = CoordinateInfo(dim) - coord.generic_level = True - coord.axis = 'Z' - self.coords[dim] = coord - elif key == 'axis_entry': - self.coords[value] = self._read_coordinate(value) - continue - elif key == 'variable_entry': - table[value] = self._read_variable(value, None) - continue - if not self._read_line(): - return diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_3hr b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_3hr deleted file mode 100644 index 6effae611c..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_3hr +++ /dev/null @@ -1,740 +0,0 @@ -table_id: Table 3hr -modeling_realm: atmos - -frequency: 3hr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.125000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height2m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 10.0 -stored_direction: increasing -type: double -value: 2. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height10m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 30.0 -stored_direction: increasing -type: double -value: 10. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: sdepth1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 0.2 -stored_direction: increasing -type: double -value: 0.05 ! of scalar (singleton) dimension -bounds_values: 0.0 0.1 ! of scalar (singleton) dimension bounds -must_have_bounds: yes -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time:mean -cell_measures: area: areacella -long_name: Precipitation -comment: at surface; includes both liquid and solid phases. This is the 3-hour mean precipitation flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pr -type: real -!---------------------------------- -! - -!============ -variable_entry: tas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Air Temperature -comment: This is sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height2m -out_name: tas -type: real -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfls -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfss -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -comment: This is the 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: uas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: point -long_name: Eastward Near-Surface Wind Speed -comment: This is sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height10m -out_name: uas -type: real -!---------------------------------- -! - -!============ -variable_entry: vas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: point -long_name: Northward Near-Surface Wind Speed -comment: This is sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height10m -out_name: vas -type: real -!---------------------------------- -! - -!============ -variable_entry: huss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Specific Humidity -comment: This is sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height2m -out_name: huss -type: real -!---------------------------------- -! - -!============ -variable_entry: mrsos -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: moisture_content_of_soil_layer -units: kg m-2 -cell_methods: time: point area: mean where land -cell_measures: area: areacella -long_name: Moisture in Upper Portion of Soil Column -comment: the mass of water in all phases in a thin surface soil layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 sdepth1 -out_name: mrsos -type: real -!---------------------------------- -! - -!============ -variable_entry: tslsi -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Temperature Where Land or Sea Ice -comment: ""skin"" temperature of all surfaces except open ocean, sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: tslsi -type: real -!---------------------------------- -! - -!============ -variable_entry: tso -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_surface_temperature -units: K -cell_methods: time: point area: mean where sea -cell_measures: area: areacella -long_name: Sea Surface Temperature -comment: temperature of surface of open ocean, sampled synoptically. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: tso -type: real -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time:mean -cell_measures: area: areacella -long_name: Convective Precipitation -comment: at surface. This is a 3-hour mean convective precipitation flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prc -type: real -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time:mean -cell_measures: area: areacella -long_name: Snowfall Flux -comment: at surface. Includes precipitation of all forms water in the solid phase. This is the 3-hour mean snowfall flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prsn -type: real -!---------------------------------- -! - -!============ -variable_entry: mrro -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: runoff_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Runoff -comment: the total runoff (including ""drainage"" through the base of the soil model) leaving the land portion of the grid cell divided by the land area in the grid cell, averaged over the 3-hour interval. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrro -type: real -!---------------------------------- -! - -!============ -variable_entry: rldscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Longwave Radiation -comment: This is a 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rldscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Shortwave Radiation -comment: This is a 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsuscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Shortwave Radiation -comment: This is a 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsuscs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Air Pressure -comment: sampled synoptically to diagnose atmospheric tides, this is better than mean sea level pressure. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ps -type: real -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud. This is a 3-hour mean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clt -type: real -!---------------------------------- -! - -!============ -variable_entry: rsdsdiff -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_diffuse_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Diffuse Downwelling Shortwave Radiation -comment: This is a 3-hour mean flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdsdiff -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrLev b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrLev deleted file mode 100644 index 6d6f91b536..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrLev +++ /dev/null @@ -1,590 +0,0 @@ -table_id: Table 6hrLev -modeling_realm: atmos - -frequency: 6hr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.250000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: ta -type: real -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: ua -type: real -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: va -type: real -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_measures: area: areacella -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: hus -type: real -!---------------------------------- -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_measures: area: areacella -long_name: Surface Air Pressure -comment: surface pressure, not mean sea level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ps -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrPlev b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrPlev deleted file mode 100644 index ab353ddf23..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_6hrPlev +++ /dev/null @@ -1,240 +0,0 @@ -table_id: Table 6hrPlev -modeling_realm: atmos - -frequency: 6hr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.250000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: plev3 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -tolerance: 0.001 -type: double -requested: 85000. 50000. 25000. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: time1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev3 time1 -out_name: ua -type: real -valid_min: -90.0 -valid_max: 145.0 -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev3 time1 -out_name: va -type: real -valid_min: -80.0 -valid_max: 80.0 -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev3 time1 -out_name: ta -type: real -valid_min: 144.0 -valid_max: 330.0 -!---------------------------------- -! - -!============ -variable_entry: psl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_measures: area: areacella -long_name: Sea Level Pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: psl -type: real -valid_min: 92500.0 -valid_max: 113000.0 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Amon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Amon deleted file mode 100644 index 2a897a55bf..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Amon +++ /dev/null @@ -1,2458 +0,0 @@ -table_id: Table Amon -modeling_realm: atmos - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel alevhalf - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: plevs -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -tolerance: 0.001 -type: double -requested: 100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time2 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -climatology: yes -!---------------------------------- -! - - -!============ -axis_entry: height2m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 10.0 -stored_direction: increasing -type: double -value: 2. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height10m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 30.0 -stored_direction: increasing -type: double -value: 10. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! - -!============ -variable_entry: tas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tas -type: real -valid_min: 180.6 -valid_max: 335.1 -ok_min_mean_abs: 262.4 -ok_max_mean_abs: 293 -!---------------------------------- -! - -!============ -variable_entry: ts -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Temperature -comment: ""skin"" temperature (i.e., SST for open ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ts -type: real -valid_min: 176.8 -valid_max: 339.6 -ok_min_mean_abs: 262.8 -ok_max_mean_abs: 293.3 -!---------------------------------- -! - -!============ -variable_entry: tasmin -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: minimum within days time: mean over days -cell_measures: area: areacella -long_name: Daily Minimum Near-Surface Air Temperature -comment: monthly mean of the daily-minimum near-surface air temperature. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tasmin -type: real -valid_min: 182.8 -valid_max: 323 -ok_min_mean_abs: 260.9 -ok_max_mean_abs: 290.6 -!---------------------------------- -! - -!============ -variable_entry: tasmax -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: maximum within days time: mean over days -cell_measures: area: areacella -long_name: Daily Maximum Near-Surface Air Temperature -comment: monthly mean of the daily-maximum near-surface air temperature. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tasmax -type: real -valid_min: 181.9 -valid_max: 341.9 -ok_min_mean_abs: 264.9 -ok_max_mean_abs: 294 -!---------------------------------- -! - -!============ -variable_entry: psl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Sea Level Pressure -comment: not, in general, the same as surface pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: psl -type: real -valid_min: 9.122e+04 -valid_max: 1.137e+05 -ok_min_mean_abs: 9.57e+04 -ok_max_mean_abs: 1.063e+05 -!---------------------------------- -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Air Pressure -comment: not, in general, the same as mean sea-level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ps -type: real -valid_min: 4.791e+04 -valid_max: 1.119e+05 -ok_min_mean_abs: 9.165e+04 -ok_max_mean_abs: 1.019e+05 -!---------------------------------- -! - -!============ -variable_entry: uas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: mean -long_name: Eastward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: uas -type: real -valid_min: -19.01 -valid_max: 18.68 -ok_min_mean_abs: 1.668 -ok_max_mean_abs: 4.106 -!---------------------------------- -! - -!============ -variable_entry: vas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: mean -long_name: Northward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: vas -type: real -valid_min: -18.04 -valid_max: 22.84 -ok_min_mean_abs: 1.065 -ok_max_mean_abs: 2.678 -!---------------------------------- -! - -!============ -variable_entry: sfcWind -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wind_speed -units: m s-1 -cell_methods: time: mean -long_name: Near-Surface Wind Speed -comment: This is the mean of the speed, not the speed computed from the mean u and v components of wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: sfcWind -type: real -!---------------------------------- -! - -!============ -variable_entry: hurs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: hurs -type: real -!---------------------------------- -! - -!============ -variable_entry: huss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: huss -type: real -valid_min: -7.21e-06 -valid_max: 0.02992 -ok_min_mean_abs: 0.006391 -ok_max_mean_abs: 0.008749 -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Precipitation -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pr -type: real -valid_min: 0 -valid_max: 0.001254 -ok_min_mean_abs: 2.156e-05 -ok_max_mean_abs: 3.215e-05 -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Snowfall Flux -comment: at surface; includes precipitation of all forms of water in the solid phase -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prsn -type: real -valid_min: 0 -valid_max: 0.0002987 -ok_min_mean_abs: 1.449e-06 -ok_max_mean_abs: 6.11e-06 -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Precipitation -comment: at surface; includes both liquid and solid phases. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prc -type: real -valid_min: 0 -valid_max: 0.0006323 -ok_min_mean_abs: -2.528e-06 -ok_max_mean_abs: 3.209e-05 -!---------------------------------- -! - -!============ -variable_entry: evspsbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Evaporation -comment: at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: evspsbl -type: real -!---------------------------------- -! - -!============ -variable_entry: sbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_and_ice_sublimation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Snow and Ice Sublimation Flux -comment: The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sbl -type: real -valid_min: -0.004959 -valid_max: 0.0009936 -ok_min_mean_abs: -5.521e-05 -ok_max_mean_abs: 9.61e-05 -!---------------------------------- -! - -!============ -variable_entry: tauu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_eastward_stress -units: Pa -cell_methods: time: mean -long_name: Surface Downward Eastward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauu -type: real -positive: down -valid_min: -2.729 -valid_max: 2.934 -ok_min_mean_abs: 0.03979 -ok_max_mean_abs: 0.1065 -!---------------------------------- -! - -!============ -variable_entry: tauv -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_northward_stress -units: Pa -cell_methods: time: mean -long_name: Surface Downward Northward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauv -type: real -positive: down -valid_min: -2.472 -valid_max: 2.527 -ok_min_mean_abs: 0.01447 -ok_max_mean_abs: 0.08134 -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -comment: includes both evaporation and sublimation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfls -type: real -positive: up -valid_min: -76.77 -valid_max: 790.7 -ok_min_mean_abs: 50.39 -ok_max_mean_abs: 73.2 -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfss -type: real -positive: up -valid_min: -264.5 -valid_max: 844.8 -ok_min_mean_abs: 10.7 -ok_max_mean_abs: 34.84 -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlds -type: real -positive: down -valid_min: 30.71 -valid_max: 520.5 -ok_min_mean_abs: 271.2 -ok_max_mean_abs: 323.6 -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlus -type: real -positive: up -valid_min: 43.75 -valid_max: 658 -ok_min_mean_abs: 325.6 -ok_max_mean_abs: 376.3 -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsds -type: real -positive: down -valid_min: -0.002946 -valid_max: 524.4 -ok_min_mean_abs: 143.9 -ok_max_mean_abs: 181.6 -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsus -type: real -positive: up -valid_min: -0.006589 -valid_max: 422.2 -ok_min_mean_abs: 26.22 -ok_max_mean_abs: 43.77 -!---------------------------------- -! - -!============ -variable_entry: rsdscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdscs -type: real -positive: down -valid_min: -1.748e+30 -valid_max: 522.4 -ok_min_mean_abs: 206.9 -ok_max_mean_abs: 239 -!---------------------------------- -! - -!============ -variable_entry: rsuscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsuscs -type: real -positive: up -valid_min: -0.01446 -valid_max: 462.2 -ok_min_mean_abs: 31.65 -ok_max_mean_abs: 61.59 -!---------------------------------- -! - -!============ -variable_entry: rldscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rldscs -type: real -positive: down -valid_min: 33.55 -valid_max: 543.6 -ok_min_mean_abs: 238.6 -ok_max_mean_abs: 293.8 -!---------------------------------- -! - -!============ -variable_entry: rsdt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_incoming_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Incident Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdt -type: real -positive: down -valid_min: 0 -valid_max: 580.4 -ok_min_mean_abs: 282.6 -ok_max_mean_abs: 315.8 -!---------------------------------- -! - -!============ -variable_entry: rsut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsut -type: real -positive: up -valid_min: -0.02689 -valid_max: 421.9 -ok_min_mean_abs: 96.72 -ok_max_mean_abs: 114.1 -!---------------------------------- -! - -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlut -type: real -positive: up -valid_min: 67.48 -valid_max: 383.2 -ok_min_mean_abs: 207.4 -ok_max_mean_abs: 234.4 -!---------------------------------- -! - -!============ -variable_entry: rlutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlutcs -type: real -positive: up -valid_min: 70.59 -valid_max: 377.5 -ok_min_mean_abs: 228.9 -ok_max_mean_abs: 260.4 -!---------------------------------- -! - -!============ -variable_entry: rsutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsutcs -type: real -positive: up -valid_min: 0 -valid_max: 444 -ok_min_mean_abs: 54.7 -ok_max_mean_abs: 73.36 -!---------------------------------- -! - -!============ -variable_entry: prw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_water_vapor_content -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Water Vapor Path -comment: vertically integrated through the atmospheric column -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prw -type: real -valid_min: -0.0006775 -valid_max: 78.04 -ok_min_mean_abs: 12.75 -ok_max_mean_abs: 23.09 -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clt -type: real -valid_min: -0.0001822 -valid_max: 105 -ok_min_mean_abs: 39.37 -ok_max_mean_abs: 84.98 -!---------------------------------- -! - -!============ -variable_entry: clwvi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_condensed_water_content -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Condensed Water Path -comment: mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clwvi -type: real -valid_min: -3.827e-06 -valid_max: 3.364 -ok_min_mean_abs: -0.03549 -ok_max_mean_abs: 0.2846 -!---------------------------------- -! - -!============ -variable_entry: clivi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_ice_content -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ice Water Path -comment: mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clivi -type: real -valid_min: -1.872e-06 -valid_max: 1.535 -ok_min_mean_abs: -0.0348 -ok_max_mean_abs: 0.1187 -!---------------------------------- -! - -!============ -variable_entry: rtmt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_downward_radiative_flux_at_top_of_atmosphere_model -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Net Downward Flux at Top of Model -comment: i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rtmt -type: real -positive: down -valid_min: -232.8 -valid_max: 218.7 -ok_min_mean_abs: 76.91 -ok_max_mean_abs: 89.25 -!---------------------------------- -! - -!============ -variable_entry: ccb -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_base -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Base -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ccb -type: real -!---------------------------------- -! - -!============ -variable_entry: cct -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_top -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Top -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cct -type: real -!---------------------------------- -! - -!============ -variable_entry: ci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convection_time_fraction -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Fraction of Time Convection Occurs -comment: Fraction of time that convection occurs in the grid cell . -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ci -type: real -!---------------------------------- -! - -!============ -variable_entry: sci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: shallow_convection_time_fraction -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Fraction of Time Shallow Convection Occurs -comment: Fraction of time that shallow convection occurs in the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sci -type: real -!---------------------------------- -! - -!============ -variable_entry: fco2antt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2 -comment: This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fco2antt -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2fos -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2 -comment: This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fco2fos -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2nat -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources -comment: This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ""net ecosystem biospheric productivity"", for land, and ""air to sea CO2 flux"", for ocean.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fco2nat -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: cl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Cloud Area Fraction -comment: Includes both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cl -type: real -valid_min: 0 -valid_max: 105 -ok_min_mean_abs: -0.04479 -ok_max_mean_abs: 26.07 -!---------------------------------- -! - -!============ -variable_entry: clw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_liquid_water_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Cloud Liquid Water -comment: Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clw -type: real -!---------------------------------- -! - -!============ -variable_entry: cli -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_ice_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Cloud Ice -comment: Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cli -type: real -!---------------------------------- -! - -!============ -variable_entry: mc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_net_upward_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Mass Flux -comment: The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: mc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: ta -type: real -valid_min: 157.1 -valid_max: 336.3 -ok_min_mean_abs: 194.3 -ok_max_mean_abs: 299.8 -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: mean -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: ua -type: real -valid_min: -68.65 -valid_max: 136.6 -ok_min_mean_abs: 1.101 -ok_max_mean_abs: 22.42 -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: mean -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: va -type: real -valid_min: -71.1 -valid_max: 69.93 -ok_min_mean_abs: 0.9886 -ok_max_mean_abs: 4.679 -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: hus -type: real -valid_min: -0.000299 -valid_max: 0.02841 -ok_min_mean_abs: -0.0003539 -ok_max_mean_abs: 0.01041 -!---------------------------------- -! - -!============ -variable_entry: hur -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: hur -type: real -valid_min: -2.642 -valid_max: 135.7 -ok_min_mean_abs: -10.31 -ok_max_mean_abs: 97 -!---------------------------------- -! - -!============ -variable_entry: wap -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -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: commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: wap -type: real -valid_min: -1.126 -valid_max: 2.319 -ok_min_mean_abs: -0.005083 -ok_max_mean_abs: 0.04256 -!---------------------------------- -! - -!============ -variable_entry: zg -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: geopotential_height -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Geopotential Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: zg -type: real -valid_min: -719.7 -valid_max: 3.437e+04 -ok_min_mean_abs: -113.4 -ok_max_mean_abs: 3.299e+04 -!---------------------------------- -! - -!============ -variable_entry: tro3 -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_ozone_in_air -units: 1e-9 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of O3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: tro3 -type: real -valid_min: -419.2 -valid_max: 1.162e+04 -ok_min_mean_abs: -149.1 -ok_max_mean_abs: 7558 -!---------------------------------- -! - -!============ -variable_entry: tro3Clim -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_ozone_in_air -units: 1e-9 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Mole Fraction of O3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time2 -out_name: tro3 -type: real -!---------------------------------- -! - -!============ -variable_entry: co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_carbon_dioxide_in_air -units: 1e-6 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of CO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: co2 -type: real -!---------------------------------- -! - -!============ -variable_entry: co2Clim -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_carbon_dioxide_in_air -units: 1e-6 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Mole Fraction of CO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time2 -out_name: co2 -type: real -!---------------------------------- -! - -!============ -variable_entry: co2mass -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_of_carbon_dioxide -units: kg -cell_methods: time: mean -long_name: Total Atmospheric Mass of CO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: co2mass -type: real -!---------------------------------- -! - -!============ -variable_entry: co2massClim -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_of_carbon_dioxide -units: kg -cell_methods: time: mean within years time: mean over years -long_name: Total Atmospheric Mass of CO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time2 -out_name: co2mass -type: real -!---------------------------------- -! - -!============ -variable_entry: ch4 -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_methane_in_air -units: 1e-9 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of CH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: ch4 -type: real -!---------------------------------- -! - -!============ -variable_entry: ch4Clim -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_methane_in_air -units: 1e-9 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Mole Fraction of CH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time2 -out_name: ch4 -type: real -!---------------------------------- -! - -!============ -variable_entry: ch4global -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_methane_in_air -units: 1e-9 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of CH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: ch4global -type: real -!---------------------------------- -! - -!============ -variable_entry: ch4globalClim -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_methane_in_air -units: 1e-9 -cell_methods: time: mean within years time: mean over years -long_name: Global Mean Mole Fraction of CH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time2 -out_name: ch4global -type: real -!---------------------------------- -! - -!============ -variable_entry: n2o -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_nitrous_oxide_in_air -units: 1e-9 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of N2O -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: n2o -type: real -!---------------------------------- -! - -!============ -variable_entry: n2oClim -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_nitrous_oxide_in_air -units: 1e-9 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Mole Fraction of N2O -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time2 -out_name: n2o -type: real -!---------------------------------- -! - -!============ -variable_entry: n2oglobal -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_nitrous_oxide_in_air -units: 1e-9 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of N2O -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: n2oglobal -type: real -!---------------------------------- -! - -!============ -variable_entry: n2oglobalClim -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_nitrous_oxide_in_air -units: 1e-9 -cell_methods: time: mean within years time: mean over years -long_name: Global Mean Mole Fraction of N2O -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time2 -out_name: n2oglobal -type: real -!---------------------------------- -! - -!============ -variable_entry: cfc11global -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_cfc11_in_air -units: 1e-12 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of CFC11 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: cfc11global -type: real -!---------------------------------- -! - -!============ -variable_entry: cfc12global -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_cfc12_in_air -units: 1e-12 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of CFC12 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: cfc12global -type: real -!---------------------------------- -! - -!============ -variable_entry: hcfc22global -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_hcfc22_in_air -units: 1e-12 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of HCFC22 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: hcfc22global -type: real -!---------------------------------- -! - -!============ -variable_entry: cfc113global -!============ -modeling_realm: atmos atmosChem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_cfc113_in_air -units: 1e-12 -cell_methods: time: mean -long_name: Global Mean Mole Fraction of CFC113 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: cfc113global -type: real -!---------------------------------- -! - - -!============ -variable_entry: pfull -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Pressure on Model Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time2 -out_name: pfull -type: real -!---------------------------------- -! - -!============ -variable_entry: phalf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacella -long_name: Pressure on Model Half-Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time2 -out_name: phalf -type: real -!---------------------------------- -! - -!============ -variable_entry: tasAdjust -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Bias-Corrected Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tasAdjust -type: real -!---------------------------------- -! - -!============ -variable_entry: tsAdjust -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Bias-Corrected Surface Temperature -comment: ""skin"" temperature (i.e., SST for open ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tsAdjust -type: real -!---------------------------------- -! - -!============ -variable_entry: pslAdjust -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Bias-Corrected Sea Level Pressure -comment: not, in general, the same as surface pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pslAdjust -type: real -!---------------------------------- -! - -!============ -variable_entry: prAdjust -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Bias-Corrected Precipitation -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prAdjust -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_LImon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_LImon deleted file mode 100644 index 391f65cfd8..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_LImon +++ /dev/null @@ -1,439 +0,0 @@ -table_id: Table LImon -modeling_realm: land - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sdepth -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 200.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -variable_entry: snc -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Snow Area Fraction -comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snc -type: real -valid_min: 0 -valid_max: 105 -ok_min_mean_abs: -29.01 -ok_max_mean_abs: 78.46 -!---------------------------------- -! - -!============ -variable_entry: snw -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_amount -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Surface Snow Amount -comment: Computed as the mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as 0.0 where the land fraction is 0; excluded is snow on vegetation canopy or on sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snw -type: real -valid_min: -0.007542 -valid_max: 9.555e+05 -ok_min_mean_abs: -6025 -ok_max_mean_abs: 1.213e+04 -!---------------------------------- -! - -!============ -variable_entry: snd -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_thickness -units: m -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Snow Depth -comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction). Reported as 0.0 where the land fraction is 0. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snd -type: real -valid_min: 0 -valid_max: 962.9 -ok_min_mean_abs: -1.961 -ok_max_mean_abs: 4.503 -!---------------------------------- -! - -!============ -variable_entry: lwsnl -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: liquid_water_content_of_snow_layer -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Liquid Water Content of Snow Layer -comment: where land over land: this is computed as the total mass of liquid water contained interstitially within the snow layer of the land portion of a grid cell divided by the area of the land portion of the cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: lwsnl -type: real -!---------------------------------- -! - -!============ -variable_entry: sootsn -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soot_content_of_surface_snow -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Snow Soot Content -comment: the entire land portion of the grid cell is considered, with snow soot content set to 0.0 in regions free of snow. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sootsn -type: real -!---------------------------------- -! - -!============ -variable_entry: agesno -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: age_of_surface_snow -units: day -cell_methods: time: mean (with samples weighted by snow mass) area: mean where land -cell_measures: area: areacella -long_name: Snow Age -comment: When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing in regions free of snow on land. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: agesno -type: real -!---------------------------------- -! - -!============ -variable_entry: tsn -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: temperature_in_surface_snow -units: K -cell_methods: time: mean (with samples weighted by snow mass) area: mean where land -cell_measures: area: areacella -long_name: Snow Internal Temperature -comment: This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing in regions free of snow on land. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tsn -type: real -!---------------------------------- -! - -!============ -variable_entry: snm -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_melt_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Surface Snow Melt -comment: Computed as the total surface melt water on the land portion of the grid cell divided by the land area in the grid cell; report as 0.0 for snow-free land regions; report as 0.0 where the land fraction is 0. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snm -type: real -valid_min: 0 -valid_max: 0.0003926 -ok_min_mean_abs: -2.092e-06 -ok_max_mean_abs: 6.123e-06 -!---------------------------------- -! - -!============ -variable_entry: sbl -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_and_ice_sublimation_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Surface Snow and Ice Sublimation Flux -comment: The snow and ice sublimation flux is the loss of snow and ice mass resulting from their conversion to water vapor. Computed as the total sublimation on the land portion of the grid cell divided by the land area in the grid cell; reported as 0.0 for snow-free land regions; reported as 0.0 where the land fraction is 0. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sbl -type: real -valid_min: -0.004959 -valid_max: 0.0009936 -ok_min_mean_abs: -5.521e-05 -ok_max_mean_abs: 9.61e-05 -!---------------------------------- -! - -!============ -variable_entry: hfdsn -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_heat_flux_in_snow -units: W m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Downward Heat Flux into Snow Where Land over Land -comment: the net downward heat flux from the atmosphere into the snow that lies on land divided by the land area in the grid cell; reported as 0.0 for snow-free land regions or where the land fraction is 0. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfdsn -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tpf -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: permafrost_layer_thickness -units: m -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Permafrost Layer Thickness -comment: where land over land: This is the mean thickness of the permafrost layer in the land portion of the grid cell. Reported as 0.0 in permafrost-free regions. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tpf -type: real -!---------------------------------- -! - -!============ -variable_entry: pflw -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: liquid_water_content_of_permafrost_layer -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Liquid Water Content of Permafrost Layer -comment: ""where land over land"", i.e., this is the total mass of liquid water contained within the permafrost layer within the land portion of a grid cell divided by the area of the land portion of the cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pflw -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Lmon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Lmon deleted file mode 100644 index 7f97b2d2a1..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Lmon +++ /dev/null @@ -1,1656 +0,0 @@ -table_id: Table Lmon -modeling_realm: land - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sdepth -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 200.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sdepth1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 0.2 -stored_direction: increasing -type: double -value: 0.05 ! of scalar (singleton) dimension -bounds_values: 0.0 0.1 ! of scalar (singleton) dimension bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: vegtype -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: plant functional type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typebare -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: bare_ground ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typepdec -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: primary_deciduous_trees ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typepever -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: primary_evergreen_trees ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typesdec -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: secondary_decidous_trees ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typesever -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: secondary_evergreen_trees ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typec3pft -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: c3_plant_functional_types ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - - -!============ -axis_entry: typec4pft -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: area_type -long_name: surface type -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: type -type: character -value: c4_plant_functional_types ! of scalar (singleton) dimension -must_have_bounds: no -coords_attrib: type_description -!---------------------------------- -! - -!============ -variable_entry: mrsos -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: moisture_content_of_soil_layer -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Moisture in Upper Portion of Soil Column -comment: the mass of water in all phases in a thin surface soil layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time sdepth1 -out_name: mrsos -type: real -valid_min: -2.008 -valid_max: 146.5 -ok_min_mean_abs: -35.89 -ok_max_mean_abs: 123.3 -!---------------------------------- -! - -!============ -variable_entry: mrso -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soil_moisture_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Soil Moisture Content -comment: the mass per unit area (summed over all soil layers) of water in all phases. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrso -type: real -valid_min: -64.17 -valid_max: 5717 -ok_min_mean_abs: -1424 -ok_max_mean_abs: 3038 -!---------------------------------- -! - -!============ -variable_entry: mrfso -!============ -modeling_realm: land landIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soil_frozen_water_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Soil Frozen Water Content -comment: the mass (summed over all all layers) of frozen water. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrfso -type: real -valid_min: 0 -valid_max: 5763 -ok_min_mean_abs: -419 -ok_max_mean_abs: 940.3 -!---------------------------------- -! - -!============ -variable_entry: mrros -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_runoff_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Surface Runoff -comment: the total surface runoff leaving the land portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrros -type: real -valid_min: -6.802e-06 -valid_max: 0.0009825 -ok_min_mean_abs: -5.867e-06 -ok_max_mean_abs: 1.302e-05 -!---------------------------------- -! - -!============ -variable_entry: mrro -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: runoff_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Runoff -comment: "the total runoff (including ""drainage"" through the base of the soil model) leaving the land portion of the grid cell." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrro -type: real -valid_min: -0.0002019 -valid_max: 0.001065 -ok_min_mean_abs: -6.668e-06 -ok_max_mean_abs: 1.874e-05 -!---------------------------------- -! - -!============ -variable_entry: prveg -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux_onto_canopy -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Precipitation onto Canopy -comment: the precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prveg -type: real -!---------------------------------- -! - -!============ -variable_entry: evspsblveg -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux_from_canopy -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Evaporation from Canopy -comment: the canopy evaporation+sublimation (if present in model). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: evspsblveg -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: evspsblsoi -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux_from_soil -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Water Evaporation from Soil -comment: includes sublimation. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: evspsblsoi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: tran -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: transpiration_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Transpiration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tran -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: mrlsl -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: moisture_content_of_soil_layer -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Water Content of Soil Layer -comment: in each soil layer, the mass of water in all phases, including ice. Reported as ""missing"" for grid cells occupied entirely by ""sea"" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude sdepth time -out_name: mrlsl -type: real -!---------------------------------- -! - -!============ -variable_entry: tsl -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soil_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Temperature of Soil -comment: "Temperature of each soil layer. Reported as ""missing"" for grid cells occupied entirely by ""sea""." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude sdepth time -out_name: tsl -type: real -!---------------------------------- -! - -!============ -variable_entry: treeFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tree Cover Fraction -comment: fraction of entire grid cell that is covered by trees. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: treeFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: grassFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Natural Grass Fraction -comment: fraction of entire grid cell that is covered by natural grass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: grassFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: shrubFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Shrub Fraction -comment: fraction of entire grid cell that is covered by shrub. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: shrubFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: cropFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Crop Fraction -comment: fraction of entire grid cell that is covered by crop. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cropFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: pastureFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Anthropogenic Pasture Fraction -comment: fraction of entire grid cell that is covered by anthropogenic pasture. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pastureFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: baresoilFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Bare Soil Fraction -comment: fraction of entire grid cell that is covered by bare soil. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typebare -out_name: baresoilFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: residualFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Fraction of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil -comment: fraction of entire grid cell that is land and is covered by ""non-vegetation"" and ""non-bare-soil"" (e.g., urban, ice, lakes, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: residualFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: burntArea -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Burnt Area Fraction -comment: fraction of entire grid cell that is covered by burnt vegetation. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: burntArea -type: real -!---------------------------------- -! - -!============ -variable_entry: cVeg -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: vegetation_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Vegetation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cVeg -type: real -!---------------------------------- -! - -!============ -variable_entry: cLitter -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: litter_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Litter Pool -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cLitter -type: real -!---------------------------------- -! - -!============ -variable_entry: cSoil -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soil_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Soil Pool -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cSoil -type: real -!---------------------------------- -! - -!============ -variable_entry: cProduct -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: carbon_content_of_products_of_anthropogenic_land_use_change -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Products of Land Use Change -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cProduct -type: real -!---------------------------------- -! - -!============ -variable_entry: lai -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: leaf_area_index -units: 1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Leaf Area Index -comment: a ratio obtained by dividing the total upper leaf surface area of vegetation by the (horizontal) surface area of the land on which it grows. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: lai -type: real -!---------------------------------- -! - -!============ -variable_entry: gpp -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: gross_primary_productivity_of_carbon -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: gpp -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: ra -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: plant_respiration_carbon_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ra -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: npp -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_productivity_of_carbon -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux out of Atmosphere due to Net Primary Production on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: npp -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rh -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heterotrophic_respiration_carbon_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rh -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fFire -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to CO2 Emission from Fire -comment: CO2 emissions (expressed as a carbon mass flux) from natural fires + human ignition fires as calculated by the fire module of the DGVM, but excluding any CO2 flux from fire included in fLuc, defined below (CO2 Flux to Atmosphere from Land Use Change). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fFire -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fGrazing -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Grazing on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fGrazing -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fHarvest -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Crop Harvesting -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fHarvest -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fLuc -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Net Carbon Mass Flux into Atmosphere due to Land Use Change -comment: human changes to land (excluding forest regrowth) accounting possibly for different time-scales related to fate of the wood, for example. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fLuc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: nbp -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux out of Atmosphere due to Net Biospheric Production on Land -comment: This is the net mass flux of carbon between land and atmosphere calculated as photosynthesis MINUS the sum of plant and soil respiration, carbonfluxes from fire, harvest, grazing and land use change. Positive flux is into the land. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nbp -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: fVegLitter -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: litter_carbon_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Carbon Mass Flux from Vegetation to Litter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fVegLitter -type: real -!---------------------------------- -! - -!============ -variable_entry: fLitterSoil -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: carbon_mass_flux_into_soil_from_litter -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Carbon Mass Flux from Litter to Soil -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fLitterSoil -type: real -!---------------------------------- -! - -!============ -variable_entry: fVegSoil -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: carbon_mass_flux_into_soil_from_vegetation_excluding_litter -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Carbon Mass Flux from Vegetation Directly to Soil -comment: In some models part of carbon (e.g., root exudate) can go directly into the soil pool without entering litter. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fVegSoil -type: real -!---------------------------------- -! - -!============ -variable_entry: cLeaf -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: leaf_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Leaves -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cLeaf -type: real -!---------------------------------- -! - -!============ -variable_entry: cWood -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wood_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Wood -comment: including sapwood and hardwood. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cWood -type: real -!---------------------------------- -! - -!============ -variable_entry: cRoot -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: root_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Roots -comment: including fine and coarse roots. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cRoot -type: real -!---------------------------------- -! - -!============ -variable_entry: cMisc -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: miscellaneous_living_matter_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Other Living Compartments on Land -comment: e.g., labile, fruits, reserves, etc. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cMisc -type: real -!---------------------------------- -! - -!============ -variable_entry: cCwd -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wood_debris_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Coarse Woody Debris -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cCwd -type: real -!---------------------------------- -! - -!============ -variable_entry: cLitterAbove -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_litter_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Above-Ground Litter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cLitterAbove -type: real -!---------------------------------- -! - -!============ -variable_entry: cLitterBelow -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: subsurface_litter_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Below-Ground Litter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cLitterBelow -type: real -!---------------------------------- -! - -!============ -variable_entry: cSoilFast -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: fast_soil_pool_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Fast Soil Pool -comment: fast is meant as lifetime of less than 10 years for reference climate conditions (20 C, no water limitations). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cSoilFast -type: real -!---------------------------------- -! - -!============ -variable_entry: cSoilMedium -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: medium_soil_pool_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Medium Soil Pool -comment: medium is meant as lifetime of more than than 10 years and less than 100 years for reference climate conditions (20 C, no water limitations) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cSoilMedium -type: real -!---------------------------------- -! - -!============ -variable_entry: cSoilSlow -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: slow_soil_pool_carbon_content -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass in Slow Soil Pool -comment: fast is meant as lifetime of more than 100 years for reference climate conditions (20 C, no water limitations) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cSoilSlow -type: real -!---------------------------------- -! - -!============ -variable_entry: landCoverFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Plant Functional Type Grid Fraction -comment: The categories may differ from model to model, depending on their PFT definitions. This may include natural PFTs, anthropogenic PFTs, bare soil, lakes, urban areas, etc. Sum of all should equal the fraction of the grid-cell that is land. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude vegtype time -out_name: landCoverFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: treeFracPrimDec -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Primary Deciduous Tree Fraction -comment: "This is the fraction of the entire grid cell that is covered by ""total primary deciduous trees.""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typepdec -out_name: treeFracPrimDec -type: real -!---------------------------------- -! - -!============ -variable_entry: treeFracPrimEver -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Primary Evergreen Tree Cover Fraction -comment: fraction of entire grid cell that is covered by primary evergreen trees. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typepever -out_name: treeFracPrimEver -type: real -!---------------------------------- -! - -!============ -variable_entry: treeFracSecDec -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Secondary Deciduous Tree Cover Fraction -comment: fraction of entire grid cell that is covered by secondary deciduous trees. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typesdec -out_name: treeFracSecDec -type: real -!---------------------------------- -! - -!============ -variable_entry: treeFracSecEver -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Secondary Evergreen Tree Cover Fraction -comment: fraction of entire grid cell that is covered by secondary evergreen trees. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typesever -out_name: treeFracSecEver -type: real -!---------------------------------- -! - -!============ -variable_entry: c3PftFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total C3 PFT Cover Fraction -comment: fraction of entire grid cell that is covered by C3 PFTs (including grass, crops, and trees). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typec3pft -out_name: c3PftFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: c4PftFrac -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total C4 PFT Cover Fraction -comment: fraction of entire grid cell that is covered by C4 PFTs (including grass and crops). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time typec4pft -out_name: c4PftFrac -type: real -!---------------------------------- -! - -!============ -variable_entry: rGrowth -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Growth Autotrophic Respiration on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rGrowth -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rMaint -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere due to Maintenance Autotrophic Respiration on Land -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rMaint -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: nppLeaf -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_productivity_of_carbon_accumulated_in_leaves -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux due to NPP Allocation to Leaf -comment: This is the rate of carbon uptake by leaves due to NPP -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nppLeaf -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: nppWood -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_productivity_of_carbon_accumulated_in_wood -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux due to NPP Allocation to Wood -comment: This is the rate of carbon uptake by wood due to NPP -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nppWood -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: nppRoot -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_productivity_of_carbon_accumulated_in_roots -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Carbon Mass Flux due to NPP Allocation to Roots -comment: This is the rate of carbon uptake by roots due to NPP -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nppRoot -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: nep -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Net Carbon Mass Flux out of Atmophere due to Net Ecosystem Productivity on Land. -comment: Natural flux of CO2 (expressed as a mass flux of carbon) from the atmosphere to the land calculated as the difference between uptake associated will photosynthesis and the release of CO2 from the sum of plant and soil respiration and fire. Positive flux is into the land. emissions from natural fires + human ignition fires as calculated by the fire module of the DGVM, but excluding any CO2 flux from fire included in fLuc, defined below (CO2 Flux to Atmosphere from Land Use Change). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nep -type: real -positive: down -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_OImon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_OImon deleted file mode 100644 index 7230314904..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_OImon +++ /dev/null @@ -1,1020 +0,0 @@ -table_id: Table OImon -modeling_realm: ocean - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -variable_entry: sic -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Ice Area Fraction -comment: fraction of grid cell covered by sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sic -type: real -valid_min: -0.000225 -valid_max: 166.1 -ok_min_mean_abs: -13.33 -ok_max_mean_abs: 36.65 -!---------------------------------- -! - -!============ -variable_entry: sit -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_thickness -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Sea Ice Thickness -comment: the mean thickness of sea ice in the ocean portion of the grid cell (averaging over the entire ocean portion, including the ice-free fraction). Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sit -type: real -valid_min: -0.006698 -valid_max: 104.4 -ok_min_mean_abs: -0.9217 -ok_max_mean_abs: 2.582 -!---------------------------------- -! - -!============ -variable_entry: sim -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_and_surface_snow_amount -units: kg m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Sea Ice Plus Surface Snow Amount -comment: the mass per unit area of sea ice plus snow in the ocean portion of the grid cell (averaging over the entire ocean portion, including the ice-free fraction). Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sim -type: real -!---------------------------------- -! - -!============ -variable_entry: evap -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Water Evaporation Flux from Sea Ice -comment: the average rate that water mass evaporates (or sublimates) from the sea ice surface (i.e., kg/s) divided by the area of the ocean (i.e., open ocean + sea ice) portion of the grid cell. This quantity, multiplied both by the oean area of the grid cell and by the length of the month, should yield the total mass of water evaporated (or sublimated) from the sea ice. Reported as 0.0 in regions free of sea ice. [This was computed differently in CMIP3.] -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: evap -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: snd -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_thickness -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Snow Depth -comment: the mean thickness of snow in the ocean portion of the grid cell (averaging over the entire ocean portion, including the snow-free ocean fraction). Reported as 0.0 in regions free of snow-covered sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snd -type: real -!---------------------------------- -! - -!============ -variable_entry: snc -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacello -long_name: Surface Snow Area Fraction -comment: Fraction of entire grid cell covered by snow that lies on sea ice; exclude snow that lies on land or land ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snc -type: real -!---------------------------------- -! - -!============ -variable_entry: ialb -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_albedo -units: 1 -cell_methods: time: mean area: mean where sea_ice -cell_measures: area: areacello -long_name: Sea Ice Albedo -comment: "Reported as ""missing"" if there is no sunlight or if a region is free of sea ice. " -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ialb -type: real -!---------------------------------- -! - -!============ -variable_entry: ssi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_salinity -units: psu -cell_methods: time: mean (weighted by mass of sea ice) -cell_measures: area: areacello -long_name: Sea Ice Salinity -comment: When computing the time-mean here, the time-samples, weighted by the mass of sea ice in the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ssi -type: real -!---------------------------------- -! - -!============ -variable_entry: tsice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Surface Temperature of Sea Ice -comment: When computing the time-mean here, the time-samples, weighted by the area of sea ice in the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. Note this will be the surface snow temperature in regions where snow covers the sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tsice -type: real -!---------------------------------- -! - -!============ -variable_entry: tsnint -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_surface_temperature -units: K -cell_methods: time: mean (weighted by area of snow-covered sea ice) -cell_measures: area: areacello -long_name: Temperature at Interface Between Sea Ice and Snow -comment: When computing the time-mean here, the time-samples, weighted by the area of snow-covered sea ice in the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of snow-covered sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tsnint -type: real -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: rainfall_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Surface Rainfall Rate into the Sea Ice Portion of the Grid Cell -comment: where sea ice over sea: this is the the water mass per unit time falling as rain onto the sea ice portion of a grid cell divided by the area of the ocean portion of the grid cell (including both ice-free and sea-ice covered fractions). Reported as 0. in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pr -type: real -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Surface Snowfall Rate into the Sea Ice Portion of the Grid Cell -comment: where sea ice over sea: this is computed as the total mass per unit time of solid-phase precipitation falling onto the sea ice portion of a grid cell divided by the area of the ocean portion of the grid cell (including both ice-free and sea-ice covered fractions). Reported as 0. in regions free of sea ice. (Snowfall flux includes all types of solid-phase precipitation.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prsn -type: real -!---------------------------------- -! - -!============ -variable_entry: ageice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: age_of_sea_ice -units: years -cell_methods: time: mean (weighted b mass of sea ice) -cell_measures: area: areacello -long_name: Age of Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the mass of sea ice in the grid cell, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ageice -type: real -!---------------------------------- -! - -!============ -variable_entry: grFrazil -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_frazil_ice_accumulation_in_leads -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Frazil Sea Ice Growth (Leads) Rate -comment: the rate of change of sea ice mass due to frazil sea ice formation divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: grFrazil -type: real -!---------------------------------- -! - -!============ -variable_entry: grCongel -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Congelation Sea Ice Growth Rate -comment: the rate of change of sea ice mass due to congelation sea ice divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: grCongel -type: real -!---------------------------------- -! - -!============ -variable_entry: grLateral -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_lateral_growth_of_ice_floes -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Lateral Sea Ice Growth Rate -comment: the rate of change of sea ice mass due to lateral growth alone of the sea ice divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: grLateral -type: real -!---------------------------------- -! - -!============ -variable_entry: snoToIce -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_snow_conversion -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Snow-Ice Formation Rate -comment: the rate of change of sea ice mass due to transformation of snow to sea ice, divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of snow-covered sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snoToIce -type: real -!---------------------------------- -! - -!============ -variable_entry: snomelt -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_melt_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Snow Melt Rate -comment: the rate of change of snow mass due to melting, divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. Includes falling snow that melts on impact with the surface. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snomelt -type: real -!---------------------------------- -! - -!============ -variable_entry: tmelt -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_surface_melting -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Melt at Upper Surface of Sea Ice -comment: the rate of change of sea ice mass due to melting at its upper surface, divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. Does not include rate of change of snow mass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tmelt -type: real -!---------------------------------- -! - -!============ -variable_entry: bmelt -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_amount_due_to_basal_melting -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Melt at Sea Ice Base -comment: the rate of change of sea ice mass due to melting at its lower surface, divided by the area of the ocean portion of the grid cell. Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: bmelt -type: real -!---------------------------------- -! - -!============ -variable_entry: hcice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content -units: J m-2 -cell_methods: time: mean (weighted by mass of sea ice) -cell_measures: area: areacello -long_name: Sea Ice Heat Content -comment: Ice at 0 Celsius is assumed taken to have a heat content of 0 J. When averaging over time, this quantity is weighted by the mass of sea ice. Reported as ""missing in regions free of sea ice. Does not include heat content of snow. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hcice -type: real -!---------------------------------- -! - -!============ -variable_entry: rsdssi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Downwelling Shortwave over Sea Ice -comment: the downwelling shortwave flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdssi -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsussi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Upward Shortwave over Sea Ice -comment: the upward shortwave flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsussi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldssi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Downwelling Long Wave over Sea Ice -comment: the downwelling longwave flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rldssi -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlussi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Upward Long Wave over Sea Ice -comment: the upward longwave flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlussi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfssi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Surface Upward Sensible Heat Flux over Sea Ice -comment: the upward sensible heat flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfssi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hflssi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Surface Upward Latent Heat Flux over Sea Ice -comment: the upward latent heat flux in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hflssi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: sblsi -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_and_ice_sublimation_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea_ice over sea -cell_measures: area: areacello -long_name: Sublimation over Sea Ice -comment: the upward flux of water vapor to the atmosphere due to sublimation of snow and sea ice in regions of sea ice divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sblsi -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: transix -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_x_transport -units: kg s-1 -cell_methods: time: mean -long_name: X-Component of Sea Ice Mass Transport -comment: The sea ice mass transport is 0.0 in ice-free regions of the ocean. Snow is included in calculation of mass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: transix -type: real -!---------------------------------- -! - -!============ -variable_entry: transiy -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_y_transport -units: kg s-1 -cell_methods: time: mean -long_name: Y-Component of Sea Ice Mass Transport -comment: The sea ice mass transport is 0.0 in ice-free regions of the ocean. Snow is included in calculation of mass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: transiy -type: real -!---------------------------------- -! - -!============ -variable_entry: transifs -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_transport_across_line -units: kg s-1 -cell_methods: time: mean -long_name: Sea Ice Mass Transport Through Fram Strait -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: transifs -type: real -!---------------------------------- -! - -!============ -variable_entry: strairx -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_x_stress -units: N m-2 -cell_methods: time: mean (weighted by area of sea ice) -long_name: X-Component of Atmospheric Stress On Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: strairx -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: strairy -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_y_stress -units: N m-2 -cell_methods: time: mean (weighted by area of sea ice) -long_name: Y-Component of Atmospheric Stress On Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: strairy -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: strocnx -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upward_x_stress_at_sea_ice_base -units: N m-2 -cell_methods: time: mean (weighted by area of sea ice) -long_name: X-Component of Ocean Stress On Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Report as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: strocnx -type: real -!---------------------------------- -! - -!============ -variable_entry: strocny -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upward_y_stress_at_sea_ice_base -units: N m-2 -cell_methods: time: mean (weighted by area of sea ice) -long_name: Y-Component of Ocean Stress On Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: strocny -type: real -!---------------------------------- -! - -!============ -variable_entry: streng -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: compressive_strength_of_sea_ice -units: N m-1 -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Compressive Sea Ice Strength -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: streng -type: real -!---------------------------------- -! - -!============ -variable_entry: divice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: divergence_of_sea_ice_velocity -units: s-1 -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Strain Rate Divergence of Sea Ice -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: divice -type: real -!---------------------------------- -! - -!============ -variable_entry: eshrice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_derivative_of_northward_sea_ice_velocity -units: s-1 -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Eastward Derivative of Northward Sea Ice Velocity -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: eshrice -type: real -!---------------------------------- -! - -!============ -variable_entry: nshrice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_derivative_of_eastward_sea_ice_velocity -units: s-1 -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Northward Derivative of Eastward Sea Ice Velocity -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nshrice -type: real -!---------------------------------- -! - -!============ -variable_entry: ridgice -!============ -modeling_realm: seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_ice_area_fraction_due_to_ridging -units: s-1 -cell_methods: time: mean (weighted by area of sea ice) -cell_measures: area: areacello -long_name: Sea Ice Ridging Rate -comment: When computing the time-mean here, the time samples, weighted by the area of sea ice, are accumulated and then divided by the sum of the weights. Reported as ""missing"" in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ridgice -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oclim b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oclim deleted file mode 100644 index 993e91e01f..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oclim +++ /dev/null @@ -1,1250 +0,0 @@ -table_id: Table Oclim -modeling_realm: ocean - -frequency: monClim - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: olevel - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time2 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -climatology: yes -!---------------------------------- -! - -!============ -axis_entry: depth_coord -!============ -! -! This vertical coordinate is used in z-coordinate models -! The units are meters (m), and it has a value of 0. at the surface -! and becomes more and more positive with depth. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z -positive: down -long_name: ocean depth coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0. -valid_max: 12000. -!---------------------------------- -! -!============ -axis_entry: olev -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: generic ocean level -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! -!============ -axis_entry: ocean_double_sigma -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_double_sigma -axis: Z -positive: up -long_name: ocean double sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= k_c:\n z= sigma*f \n for k > k_c:\n z= f + (sigma-1)*(depth-f) \n f= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth-href)) -z_factors: sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c -z_bounds_factors: sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma_z -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_z -axis: Z -long_name: ocean sigma over z coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= nsigma: z = eta + sigma*(min(depth_c,depth)+eta) ; for k > nsigma: z = zlev -z_factors: sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev -z_bounds_factors: sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds -!---------------------------------- -! -!============ -axis_entry: ocean_s -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of s, which appears in the formula below, should be stored as ocean_s. -! Note that in the netCDF file the variable will be named "lev", not ocean_s. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_s_coordinate -axis: Z -positive: up -long_name: ocean s-coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta*(1+s) + depth_c*s + (depth-depth_c)*C \n where \n C=(1-b)*sinh(a*s)/sinh(a) +\n b*(tanh(a*(s+0.5))/(2*tanh(0.5*a)) - 0.5) -z_factors: s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c -z_bounds_factors: s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of sigma, which appears in the formula below, should be stored as ocean_sigma. -! Note that in the netCDF file the variable will be named "lev", not ocean_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_coordinate -axis: Z -positive: up -long_name: ocean sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta + sigma*(depth+eta) -z_factors: sigma: lev eta: eta depth: depth -z_bounds_factors: sigma: lev_bnds eta: eta depth: depth -!---------------------------------- -! -! -! *************************************************************** -! -! Vertical coordinate formula_terms: -! -! *************************************************************** -! -!============ -variable_entry: eta -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -cell_methods: time: mean -long_name: Sea Surface Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -type: real -!---------------------------------- -! -! -!============ -variable_entry: depth -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -long_name: Sea Floor Depth -comment: Ocean bathymetry. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: depth -type: real -valid_min: 0. -valid_max: 12000. -ok_min_mean_abs: 2000. -ok_max_mean_abs: 5000. -!---------------------------------- -! -! -!============ -variable_entry: sigma -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: sigma_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -! -!============ -variable_entry: depth_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: depth_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: a -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient a -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient b -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: nsigma -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: nsigma -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! -!============ -variable_entry: z1 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z1 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: z2 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z2 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: href -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: href -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: k_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: k_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! - -!============ -variable_entry: difvho -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_heat_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Heat Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvho -type: real -!---------------------------------- -! - -!============ -variable_entry: difvso -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_salt_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Salt Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvso -type: real -!---------------------------------- -! - -!============ -variable_entry: difvtrbo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_tracer_diffusivity_due_to_background -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Tracer Diffusivity due to Background -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvtrbo -type: real -!---------------------------------- -! - -!============ -variable_entry: difvtrto -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_tracer_diffusivity_due_to_tides -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Tracer Diffusivity due to Tides -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvtrto -type: real -!---------------------------------- -! - -!============ -variable_entry: tnpeo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_potential_energy_content -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Tendency of Ocean Potential Energy Content -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: tnpeo -type: real -!---------------------------------- -! - -!============ -variable_entry: tnpeot -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_potential_energy_content_due_to_tides -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Tendency of Ocean Potential Energy Content due to Tides -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: tnpeot -type: real -!---------------------------------- -! - -!============ -variable_entry: tnpeotb -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_potential_energy_content_due_to_background -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Tendency of Ocean Potential Energy Content due to Background -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: tnpeotb -type: real -!---------------------------------- -! - -!============ -variable_entry: difvmo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_momentum_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Momentum Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvmo -type: real -!---------------------------------- -! - -!============ -variable_entry: difvmbo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_momentum_diffusivity_due_to_background -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Momentum Diffusivity due to Background -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvmbo -type: real -!---------------------------------- -! - -!============ -variable_entry: difvmto -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_momentum_diffusivity_due_to_tides -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Momentum Diffusivity due to Tides -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvmto -type: real -!---------------------------------- -! - -!============ -variable_entry: difvmfdo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_vertical_momentum_diffusivity_due_to_form_drag -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Vertical Momentum Diffusivity due to Form Drag -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difvmfdo -type: real -!---------------------------------- -! - -!============ -variable_entry: dispkevfo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Kinetic Energy Dissipation Per Unit Area due to Vertical Friction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: dispkevfo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrblo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_bolus_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer Bolus Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrblo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrbbo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_bolus_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer Bolus Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrbbo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrelo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_epineutral_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer Epineutral Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrelo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrebo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_epineutral_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer Epineutral Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrebo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrxylo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_xy_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer XY Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrxylo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrxybo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_xy_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Tracer XY Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: diftrxybo -type: real -!---------------------------------- -! - -!============ -variable_entry: tnkebto -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: tnkebto -type: real -!---------------------------------- -! - -!============ -variable_entry: difmxylo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_momentum_xy_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Momentum XY Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difmxylo -type: real -!---------------------------------- -! - -!============ -variable_entry: difmxybo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_momentum_xy_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Momentum XY Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: difmxybo -type: real -!---------------------------------- -! - -!============ -variable_entry: dispkexyfo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello volume: volcello -long_name: Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: dispkexyfo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrblo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_bolus_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer Bolus Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrblo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrbbo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_bolus_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer Bolus Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrbbo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrelo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_epineutral_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer Epineutral Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrelo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrebo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_epineutral_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer Epineutral Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrebo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrxylo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_xy_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer XY Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrxylo -type: real -!---------------------------------- -! - -!============ -variable_entry: diftrxybo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_tracer_xy_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Tracer XY Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: diftrxybo -type: real -!---------------------------------- -! - -!============ -variable_entry: tnkebto2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: tnkebto -type: real -!---------------------------------- -! - -!============ -variable_entry: difmxylo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_momentum_xy_laplacian_diffusivity -units: m2 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Momentum XY Laplacian Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: difmxylo -type: real -!---------------------------------- -! - -!============ -variable_entry: difmxybo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_momentum_xy_biharmonic_diffusivity -units: m4 s-1 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Momentum XY Biharmonic Diffusivity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: difmxybo -type: real -!---------------------------------- -! - -!============ -variable_entry: dispkexyfo2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction -units: W m-2 -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time2 -out_name: dispkexyfo -type: real -!---------------------------------- -! - -!============ -variable_entry: zfull -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Depth Below Geoid of Ocean Layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: zfull -type: real -!---------------------------------- -! - -!============ -variable_entry: zhalf -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean within years time: mean over years -cell_measures: area: areacello -long_name: Depth Below Geoid of Interfaces Between Ocean Layers -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time2 -out_name: zhalf -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Omon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Omon deleted file mode 100644 index e64f3a68a2..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Omon +++ /dev/null @@ -1,4789 +0,0 @@ -table_id: Table Omon -modeling_realm: ocean - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: olevel - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: basin -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: region -long_name: ocean basin -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: region -type: character -requested: atlantic_arctic_ocean indian_pacific_ocean global_ocean ! space-separated list of requested coordinates -must_have_bounds: no -coords_attrib: region -!---------------------------------- -! - - -!============ -axis_entry: rho -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: sea_water_potential_density -units: kg m-3 -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: potential density referenced to 2000 dbar -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: rho -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: oline -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: region -long_name: ocean passage -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: passage -type: character -requested: barents_opening bering_strait canadian_archipelago denmark_strait drake_passage english_channel pacific_equatorial_undercurrent faroe_scotland_channel florida_bahamas_strait fram_strait iceland_faroe_channel indonesian_throughflow mozambique_channel taiwan_luzon_straits windward_passage ! space-separated list of requested coordinates -must_have_bounds: no -coords_attrib: passage -!---------------------------------- -! - - -!============ -axis_entry: olayer100m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 100.0 -stored_direction: increasing -type: double -value: 50. ! of scalar (singleton) dimension -bounds_values: 0. 100. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: depth100m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 80.0 -valid_max: 120.0 -stored_direction: increasing -type: double -value: 100. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: depth0m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 100.0 -stored_direction: increasing -type: double -value: 0. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - -!============ -axis_entry: depth_coord -!============ -! -! This vertical coordinate is used in z-coordinate models -! The units are meters (m), and it has a value of 0. at the surface -! and becomes more and more positive with depth. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z -positive: down -long_name: ocean depth coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0. -valid_max: 12000. -!---------------------------------- -! -!============ -axis_entry: olev -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: generic ocean level -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! -!============ -axis_entry: ocean_double_sigma -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_double_sigma -axis: Z -positive: up -long_name: ocean double sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= k_c:\n z= sigma*f \n for k > k_c:\n z= f + (sigma-1)*(depth-f) \n f= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth-href)) -z_factors: sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c -z_bounds_factors: sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma_z -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_z -axis: Z -long_name: ocean sigma over z coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= nsigma: z = eta + sigma*(min(depth_c,depth)+eta) ; for k > nsigma: z = zlev -z_factors: sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev -z_bounds_factors: sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds -!---------------------------------- -! -!============ -axis_entry: ocean_s -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of s, which appears in the formula below, should be stored as ocean_s. -! Note that in the netCDF file the variable will be named "lev", not ocean_s. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_s_coordinate -axis: Z -positive: up -long_name: ocean s-coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta*(1+s) + depth_c*s + (depth-depth_c)*C \n where \n C=(1-b)*sinh(a*s)/sinh(a) +\n b*(tanh(a*(s+0.5))/(2*tanh(0.5*a)) - 0.5) -z_factors: s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c -z_bounds_factors: s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of sigma, which appears in the formula below, should be stored as ocean_sigma. -! Note that in the netCDF file the variable will be named "lev", not ocean_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_coordinate -axis: Z -positive: up -long_name: ocean sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta + sigma*(depth+eta) -z_factors: sigma: lev eta: eta depth: depth -z_bounds_factors: sigma: lev_bnds eta: eta depth: depth -!---------------------------------- -! -! -! *************************************************************** -! -! Vertical coordinate formula_terms: -! -! *************************************************************** -! -!============ -variable_entry: eta -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -cell_methods: time: mean -long_name: Sea Surface Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -!---------------------------------- -! -! -!============ -variable_entry: depth -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -long_name: Sea Floor Depth -comment: Ocean bathymetry. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: depth -type: real -valid_min: 0. -valid_max: 12000. -ok_min_mean_abs: 2000. -ok_max_mean_abs: 5000. -!---------------------------------- -! -! -!============ -variable_entry: sigma -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: sigma_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -! -!============ -variable_entry: depth_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: depth_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: a -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient a -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient b -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: nsigma -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: nsigma -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! -!============ -variable_entry: z1 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z1 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: z2 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z2 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: href -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: href -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: k_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: k_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! - -!============ -variable_entry: dissic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_inorganic_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Inorganic Carbon Concentration at Surface -comment: Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: dissic -type: real -!---------------------------------- -! - -!============ -variable_entry: dissoc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_organic_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Organic Carbon Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: dissoc -type: real -!---------------------------------- -! - -!============ -variable_entry: phyc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Carbon Concentration at Surface -comment: sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., ""Diatom Carbon Concentration"" and ""Non-Diatom Phytoplankton Carbon Concentration"" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phyc -type: real -!---------------------------------- -! - -!============ -variable_entry: zooc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Zooplankton Carbon Concentration at Surface -comment: sum of zooplankton carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: zooc -type: real -!---------------------------------- -! - -!============ -variable_entry: bacc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Bacterial Carbon Concentration at Surface -comment: sum of bacterial carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: bacc -type: real -!---------------------------------- -! - -!============ -variable_entry: detoc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Detrital Organic Carbon Concentration at Surface -comment: sum of detrital organic carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: detoc -type: real -!---------------------------------- -! - -!============ -variable_entry: calc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcite_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Calcite Concentration at Surface -comment: sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: calc -type: real -!---------------------------------- -! - -!============ -variable_entry: arag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Aragonite Concentration at Surface -comment: sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: arag -type: real -!---------------------------------- -! - -!============ -variable_entry: phydiat -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Diatoms expressed as Carbon in Sea Water at Surface -comment: carbon from the diatom phytoplankton component concentration alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phydiat -type: real -!---------------------------------- -! - -!============ -variable_entry: phydiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water at Surface -comment: carbon concentration from the diazotrophic phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phydiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: phycalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water at Surface -comment: carbon concentration from calcareous (calcite-producing) phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phycalc -type: real -!---------------------------------- -! - -!============ -variable_entry: phypico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water at Surface -comment: carbon concentration from the picophytoplankton (<2 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phypico -type: real -!---------------------------------- -! - -!============ -variable_entry: phymisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water at Surface -comment: carbon concentration from additional phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phymisc -type: real -!---------------------------------- -! - -!============ -variable_entry: zmicro -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Microzooplankton expressed as Carbon in Sea Water at Surface -comment: carbon concentration from the microzooplankton (<20 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: zmicro -type: real -!---------------------------------- -! - -!============ -variable_entry: zmeso -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water at Surface -comment: carbon concentration from mesozooplankton (20-200 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: zmeso -type: real -!---------------------------------- -! - -!============ -variable_entry: zoocmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Other Zooplankton Carbon Concentration at Surface -comment: carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: zoocmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: talk -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_alkalinity_expressed_as_mole_equivalent -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Total Alkalinity at Surface -comment: total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: talk -type: real -!---------------------------------- -! - -!============ -variable_entry: ph -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_ph_reported_on_total_scale -units: 1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: pH at Surface -comment: negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: ph -type: real -!---------------------------------- -! - -!============ -variable_entry: o2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_molecular_oxygen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Oxygen Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: o2 -type: real -!---------------------------------- -! - -!============ -variable_entry: no3 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_nitrate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Nitrate Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: no3 -type: real -!---------------------------------- -! - -!============ -variable_entry: nh4 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_ammonium_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Ammonium Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: nh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: po4 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phosphate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Phosphate Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: po4 -type: real -!---------------------------------- -! - -!============ -variable_entry: dfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Iron Concentration at Surface -comment: dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: dfe -type: real -!---------------------------------- -! - -!============ -variable_entry: si -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_silicate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Silicate Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: si -type: real -!---------------------------------- -! - -!============ -variable_entry: chl -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Total Chlorophyll Mass Concentration at Surface -comment: sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of ""Diatom Chlorophyll Mass Concentration"" plus ""Other Phytoplankton Chlorophyll Mass Concentration"" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chl -type: real -!---------------------------------- -! - -!============ -variable_entry: chldiat -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Diatom Chlorophyll Mass Concentration at Surface -comment: chlorophyll from diatom phytoplankton component concentration alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chldiat -type: real -!---------------------------------- -! - -!============ -variable_entry: chldiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water at Surface -comment: chlorophyll concentration from the diazotrophic phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chldiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: chlcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water at Surface -comment: chlorophyll concentration from the calcite-producing phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chlcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: chlpico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water at Surface -comment: chlorophyll concentration from the picophytoplankton (<2 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chlpico -type: real -!---------------------------------- -! - -!============ -variable_entry: chlmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Other Phytoplankton Chlorophyll Mass Concentration at Surface -comment: chlorophyll from additional phytoplankton component concentrations alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: chlmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: pon -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Organic Nitrogen Concentration at Surface -comment: sum of particulate organic nitrogen component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: pon -type: real -!---------------------------------- -! - -!============ -variable_entry: pop -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Organic Phosphorus Concentration at Surface -comment: sum of particulate organic phosphorus component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: pop -type: real -!---------------------------------- -! - -!============ -variable_entry: bfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Biogenic Iron Concentration at Surface -comment: sum of particulate organic iron component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: bfe -type: real -!---------------------------------- -! - -!============ -variable_entry: bsi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Biogenic Silica Concentration at Surface -comment: sum of particulate silica component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: bsi -type: real -!---------------------------------- -! - -!============ -variable_entry: phyn -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Nitrogen Concentration at Surface -comment: sum of phytoplankton nitrogen component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phyn -type: real -!---------------------------------- -! - -!============ -variable_entry: phyp -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Phosphorus Concentration at Surface -comment: sum of phytoplankton phosphorus components -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phyp -type: real -!---------------------------------- -! - -!============ -variable_entry: phyfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Iron Concentration at Surface -comment: sum of phytoplankton iron component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: phyfe -type: real -!---------------------------------- -! - -!============ -variable_entry: physi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Silica Concentration at Surface -comment: sum of phytoplankton silica component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: physi -type: real -!---------------------------------- -! - -!============ -variable_entry: dms -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dimethyl_sulfide_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dimethyl Sulphide Concentration at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: dms -type: real -!---------------------------------- -! - -!============ -variable_entry: co3 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Carbonate expressed as Carbon in Sea Water at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: co3 -type: real -!---------------------------------- -! - -!============ -variable_entry: co3satcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_at_saturation -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Calcite expressed as Carbon in Sea Water at Saturation at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: co3satcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: co3satarag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_at_saturation -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Aragonite expressed as Carbon in Sea Water at Saturation at Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth0m -out_name: co3satarag -type: real -!---------------------------------- -! - -!============ -variable_entry: intpp -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_phytoplankton -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Primary Organic Carbon Production by All Types of Phytoplankton -comment: Vertically integrated total primary (organic carbon) production by phytoplankton. This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpp -type: real -!---------------------------------- -! - -!============ -variable_entry: intpnitrate -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_due_to_nitrate_utilization -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone -comment: Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpnitrate -type: real -!---------------------------------- -! - -!============ -variable_entry: intpdiat -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_diatoms -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Primary Organic Carbon Production by Diatoms -comment: Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpdiat -type: real -!---------------------------------- -! - -!============ -variable_entry: intpdiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_diazotrophs -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Net Primary Mole Productivity of Carbon by Diazotrophs -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpdiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: intpcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: intppico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_picophytoplankton -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Net Primary Mole Productivity of Carbon by Picophytoplankton -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intppico -type: real -!---------------------------------- -! - -!============ -variable_entry: intpmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_primary_mole_productivity_of_carbon_by_miscellaneous_phytoplankton -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Primary Organic Carbon Production by Other Phytoplankton -comment: Vertically integrated total primary (organic carbon) production by other phytoplankton components alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: intpbfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_iron_due_to_biological_production -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Iron Production -comment: Vertically integrated biogenic iron production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpbfe -type: real -!---------------------------------- -! - -!============ -variable_entry: intpbsi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_silicon_due_to_biological_production -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Silica Production -comment: Vertically integrated biogenic silica production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpbsi -type: real -!---------------------------------- -! - -!============ -variable_entry: intpcalcite -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Calcite Production -comment: Vertically integrated calcite production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpcalcite -type: real -!---------------------------------- -! - -!============ -variable_entry: intparag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Aragonite Production -comment: Vertically integrated aragonite production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intparag -type: real -!---------------------------------- -! - -!============ -variable_entry: epc100 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Downward Flux of Particle Organic Carbon -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth100m -out_name: epc100 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: epfe100 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_iron_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Downward Flux of Particulate Iron -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth100m -out_name: epfe100 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: epsi100 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_silicon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Downward Flux of Particulate Silica -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth100m -out_name: epsi100 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: epcalc100 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Downward Flux of Calcite -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth100m -out_name: epcalc100 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: eparag100 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Downward Flux of Aragonite -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time depth100m -out_name: eparag100 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: intdic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mass_content_of_dissolved_inorganic_carbon -units: kg m-2 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Dissolved Inorganic Carbon Content -comment: Vertically integrated DIC -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intdic -type: real -!---------------------------------- -! - -!============ -variable_entry: spco2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_partial_pressure_of_carbon_dioxide_in_sea_water -units: Pa -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Surface Aqueous Partial Pressure of CO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: spco2 -type: real -!---------------------------------- -! - -!============ -variable_entry: dpco2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air -units: Pa -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Delta PCO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dpco2 -type: real -!---------------------------------- -! - -!============ -variable_entry: dpo2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air -units: Pa -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Delta PO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dpo2 -type: real -!---------------------------------- -! - -!============ -variable_entry: fgco2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon -units: kg m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Surface Downward CO2 Flux -comment: Gas exchange flux of CO2 (positive into ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fgco2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: fgo2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_mole_flux_of_molecular_oxygen -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Surface Downward O2 Flux -comment: Gas exchange flux of O2 (positive into ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fgo2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: fgdms -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mole_flux_of_dimethyl_sulfide -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Surface Upward DMS Flux -comment: Gas exchange flux of DMS (positive into atmosphere) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fgdms -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fsc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_carbon_due_to_runoff_and_sediment_dissolution -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Flux of Carbon Into Ocean Surface by Runoff and Sediment Dissolution -comment: Carbon supply to ocean through runoff and sediment dissolution (neglects gas exchange) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fsc -type: real -!---------------------------------- -! - -!============ -variable_entry: frc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_carbon_due_to_sedimentation -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Downward Carbon Flux at Ocean Bottom -comment: Carbon loss to sediments -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: frc -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: intpn2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Nitrogen Fixation Rate in Ocean -comment: Vertically integrated nitrogen fixation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: intpn2 -type: real -!---------------------------------- -! - -!============ -variable_entry: fsn -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Surface Downward Net Flux of Nitrogen -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fsn -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: frn -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Nitrogen Loss to Sediments and through Denitrification -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: frn -type: real -!---------------------------------- -! - -!============ -variable_entry: fsfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Surface Downward Net Flux of Iron -comment: Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fsfe -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: frfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_iron_due_to_sedimentation -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Iron Loss to Sediments -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: frfe -type: real -!---------------------------------- -! - -!============ -variable_entry: o2min -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile -units: mol m-3 -cell_methods: time: mean area: where sea depth: minimum -cell_measures: area: areacello -long_name: Oxygen Minimum Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: o2min -type: real -!---------------------------------- -! - -!============ -variable_entry: zo2min -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Depth of Oxygen Minimum Concentration -comment: Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: zo2min -type: real -!---------------------------------- -! - -!============ -variable_entry: zsatcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: minimum_depth_of_calcite_undersaturation_in_sea_water -units: m -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Calcite Saturation Depth -comment: Depth of calcite saturation horizon (0 if < surface, ""missing"" if > bottom, if two, then the shallower) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: zsatcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: zsatarag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: minimum_depth_of_aragonite_undersaturation_in_sea_water -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Aragonite Saturation Depth -comment: Depth of aragonite saturation horizon (0 if < surface, ""missing"" if > bottom, if two, then the shallower) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: zsatarag -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtdic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Net Dissolved Inorganic Carbon -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtdic -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtdin -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Net Dissolved Inorganic Nitrogen -comment: Net time rate of change of nitrogen nutrients (e.g. NO3+NH4) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtdin -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtdip -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Net Dissolved Inorganic Phosphate -comment: vertical integral of net time rate of change of phosphate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtdip -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtdife -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_iron -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Net Dissolved Inorganic Iron -comment: vertical integral of net time rate of change of dissolved inorganic iron -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtdife -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtdisi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Net Dissolved Inorganic Silicate -comment: vertical integral of net time rate of change of dissolved inorganic silicate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtdisi -type: real -!---------------------------------- -! - -!============ -variable_entry: fddtalk -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Alkalinity -comment: vertical integral of net time rate of change of alkalinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fddtalk -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtdic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Dissolved Inorganic Carbon due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of dissolved inorganic carbon -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtdic -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtdin -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtdin -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtdip -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Dissolved Inorganic Phosphate due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of phosphate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtdip -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtdife -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Dissolved Inorganic Iron due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of dissolved inorganic iron -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtdife -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtdisi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Rate of Change of Dissolved Inorganic Silicate due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of dissolved inorganic silicate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtdisi -type: real -!---------------------------------- -! - -!============ -variable_entry: fbddtalk -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Rate of Change of Biological Alkalinity due to Biological Activity -comment: vertical integral of net biological terms in time rate of change of alkalinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time olayer100m -out_name: fbddtalk -type: real -!---------------------------------- -! - -!============ -variable_entry: masso -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_mass -units: kg -cell_methods: time: mean area: sum where sea -long_name: Sea Water Mass -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: masso -type: real -!---------------------------------- -! - -!============ -variable_entry: pbo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_pressure_at_sea_floor -units: dbar -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Water Pressure at Sea floor -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pbo -type: real -!---------------------------------- -! - -!============ -variable_entry: pso -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_pressure_at_sea_water_surface -units: dbar -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Water Pressure at Sea Water Surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pso -type: real -!---------------------------------- -! - -!============ -variable_entry: volo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_volume -units: m3 -cell_methods: time: mean area: sum where sea -long_name: Sea Water Volume -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: volo -type: real -!---------------------------------- -! - -!============ -variable_entry: zos -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_surface_height_above_geoid -units: m -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Surface Height Above Geoid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: zos -type: real -valid_min: -13.97 -valid_max: 9.575 -ok_min_mean_abs: 0.008384 -ok_max_mean_abs: 1.572 -!---------------------------------- -! - -!============ -variable_entry: zossq -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: square_of_sea_surface_height_above_geoid -units: m2 -cell_methods: time: mean -cell_measures: area: areacello -long_name: Square of Sea Surface Height Above Geoid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: zossq -type: real -!---------------------------------- -! - -!============ -variable_entry: zosga -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: global_average_sea_level_change -units: m -cell_methods: time: mean area: mean where sea -long_name: Global Average Sea Level Change -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: zosga -type: real -valid_min: -0.1426 -valid_max: 0.382 -ok_min_mean_abs: -0.09124 -ok_max_mean_abs: 0.3304 -!---------------------------------- -! - -!============ -variable_entry: zossga -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: global_average_steric_sea_level_change -units: m -cell_methods: time: mean area: mean where sea -long_name: Global Average Steric Sea Level Change -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: zossga -type: real -!---------------------------------- -! - -!============ -variable_entry: zostoga -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: global_average_thermosteric_sea_level_change -units: m -cell_methods: time: mean area: mean where sea -long_name: Global Average Thermosteric Sea Level Change -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: zostoga -type: real -valid_min: -0.1375 -valid_max: 0.3734 -ok_min_mean_abs: -0.0511 -ok_max_mean_abs: 0.2998 -!---------------------------------- -! - -!============ -variable_entry: masscello -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_mass_per_unit_area -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Sea Water Mass Per Unit Area -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: masscello -type: real -!---------------------------------- -! - -!============ -variable_entry: thkcello -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cell_thickness -units: m -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Ocean Model Cell Thickness -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: thkcello -type: real -!---------------------------------- -! - -!============ -variable_entry: thetao -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_potential_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Sea Water Potential Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: thetao -type: real -valid_min: -9.37e+17 -valid_max: 1.05e+20 -ok_min_mean_abs: -9.37e+17 -ok_max_mean_abs: 1.05e+20 -!---------------------------------- -! - -!============ -variable_entry: thetaoga -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_potential_temperature -units: K -cell_methods: time: mean area: mean where sea -long_name: Global Average Sea Water Potential Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: thetaoga -type: real -!---------------------------------- -! - -!============ -variable_entry: tos -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_surface_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Surface Temperature -comment: "this may differ from ""surface temperature"" in regions of sea ice." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tos -type: real -valid_min: 257.4 -valid_max: 325.2 -ok_min_mean_abs: 272 -ok_max_mean_abs: 303.5 -!---------------------------------- -! - -!============ -variable_entry: tossq -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: square_of_sea_surface_temperature -units: K2 -cell_methods: time: mean -cell_measures: area: areacello -long_name: Square of Sea Surface Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tossq -type: real -!---------------------------------- -! - -!============ -variable_entry: so -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_salinity -units: psu -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Sea Water Salinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: so -type: real -valid_min: -9.37e+17 -valid_max: 1.05e+20 -ok_min_mean_abs: -9.37e+17 -ok_max_mean_abs: 1.05e+20 -!---------------------------------- -! - -!============ -variable_entry: soga -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_salinity -units: psu -cell_methods: time: mean area: mean where sea -long_name: Global Mean Sea Water Salinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -out_name: soga -type: real -!---------------------------------- -! - -!============ -variable_entry: sos -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_surface_salinity -units: psu -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Surface Salinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sos -type: real -!---------------------------------- -! - -!============ -variable_entry: rhopoto -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_potential_density -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Sea Water Potential Density -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: rhopoto -type: real -valid_min: -3.257 -valid_max: 1094 -ok_min_mean_abs: 10.38 -ok_max_mean_abs: 1079 -!---------------------------------- -! - -!============ -variable_entry: agessc -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_age_since_surface_contact -units: yr -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Sea Water Age Since Surface Contact -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: agessc -type: real -!---------------------------------- -! - -!============ -variable_entry: cfc11 -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: moles_of_cfc11_per_unit_mass_in_sea_water -units: mol kg-1 -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Moles Per Unit Mass of CFC-11 in Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: cfc11 -type: real -!---------------------------------- -! - -!============ -variable_entry: msftbarot -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_barotropic_mass_streamfunction -units: kg s-1 -cell_methods: time: mean -cell_measures: area: areacello -long_name: Ocean Barotropic Mass Streamfunction -comment: differs from CMIP3 because it includes mass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: msftbarot -type: real -!---------------------------------- -! - -!============ -variable_entry: mlotst -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mixed_layer_thickness_defined_by_sigma_t -units: m -cell_methods: time: mean -cell_measures: area: areacello -long_name: Ocean Mixed Layer Thickness Defined by Sigma T -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mlotst -type: real -!---------------------------------- -! - -!============ -variable_entry: mlotstsq -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: square_of_ocean_mixed_layer_thickness_defined_by_sigma_t -units: m2 -cell_methods: time: mean -cell_measures: area: areacello -long_name: Square of Ocean Mixed Layer Thickness Defined by Sigma T -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mlotstsq -type: real -!---------------------------------- -! - -!============ -variable_entry: omldamax -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mixed_layer_thickness_defined_by_mixing_scheme -units: m -cell_methods: time: maximum within days time: mean over days -cell_measures: area: areacello -long_name: Mean Daily Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: omldamax -type: real -!---------------------------------- -! - -!============ -variable_entry: omlmax -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mixed_layer_thickness_defined_by_mixing_scheme -units: m -cell_methods: time: maximum -cell_measures: area: areacello -long_name: Monthly Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: omlmax -type: real -!---------------------------------- -! - -!============ -variable_entry: uo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_x_velocity -units: m s-1 -cell_methods: time: mean -long_name: Sea Water X Velocity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: uo -type: real -valid_min: -1.041e+18 -valid_max: 1.05e+20 -ok_min_mean_abs: -1.041e+18 -ok_max_mean_abs: 1.05e+20 -!---------------------------------- -! - -!============ -variable_entry: vo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_y_velocity -units: m s-1 -cell_methods: time: mean -long_name: Sea Water Y Velocity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: vo -type: real -valid_min: -1.041e+18 -valid_max: 1.05e+20 -ok_min_mean_abs: -1.041e+18 -ok_max_mean_abs: 1.05e+20 -!---------------------------------- -! - -!============ -variable_entry: wmo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upward_ocean_mass_transport -units: kg s-1 -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Upward Ocean Mass Transport -comment: differs from CMIP3, which only had upward velocity. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: wmo -type: real -!---------------------------------- -! - -!============ -variable_entry: wmosq -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: square_of_upward_ocean_mass_transport -units: kg2 s-2 -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Square of Upward Ocean Mass Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: wmosq -type: real -!---------------------------------- -! - -!============ -variable_entry: umo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mass_x_transport -units: kg s-1 -cell_methods: time: mean -long_name: Ocean Mass X Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: umo -type: real -!---------------------------------- -! - -!============ -variable_entry: vmo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mass_y_transport -units: kg s-1 -cell_methods: time: mean -long_name: Ocean Mass Y Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: vmo -type: real -!---------------------------------- -! - -!============ -variable_entry: msftmyz -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_meridional_overturning_mass_streamfunction -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Meridional Overturning Mass Streamfunction -comment: differs from CMIP3 because it includes mass. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude olevel basin time -out_name: msftmyz -type: real -!---------------------------------- -! - -!============ -variable_entry: msftmrhoz -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_meridional_overturning_mass_streamfunction -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Meridional Overturning Mass Streamfunction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude rho basin time -out_name: msftmrhoz -type: real -!---------------------------------- -! - -!============ -variable_entry: msftyyz -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_y_overturning_mass_streamfunction -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Y Overturning Mass Streamfunction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude olevel basin time -out_name: msftyyz -type: real -!---------------------------------- -! - -!============ -variable_entry: msftyrhoz -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_y_overturning_mass_streamfunction -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Y Overturning Mass Streamfunction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude rho basin time -out_name: msftyrhoz -type: real -!---------------------------------- -! - -!============ -variable_entry: msftmyzba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_meridional_overturning_mass_streamfunction_due_to_bolus_advection -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Meridional Overturning Mass Streamfunction due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude olevel basin time -out_name: msftmyzba -type: real -!---------------------------------- -! - -!============ -variable_entry: msftmrhozba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_meridional_overturning_mass_streamfunction_due_to_bolus_advection -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Meridional Overturning Mass Streamfunction due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude rho basin time -out_name: msftmrhozba -type: real -!---------------------------------- -! - -!============ -variable_entry: msftyyzba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_y_overturning_mass_streamfunction_due_to_bolus_advection -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Y Overturning Mass Streamfunction due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude olevel basin time -out_name: msftyyzba -type: real -!---------------------------------- -! - -!============ -variable_entry: msftyrhozba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_y_overturning_mass_streamfunction_due_to_bolus_advection -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Ocean Y Overturning Mass Streamfunction due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude rho basin time -out_name: msftyrhozba -type: real -!---------------------------------- -! - -!============ -variable_entry: hfnorth -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport -units: W -cell_methods: time: mean -long_name: Northward Ocean Heat Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfnorth -type: real -!---------------------------------- -! - -!============ -variable_entry: hfnorthba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_bolus_advection -units: W -cell_methods: time: mean -long_name: Northward Ocean Heat Transport due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfnorthba -type: real -!---------------------------------- -! - -!============ -variable_entry: hfnorthdiff -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_diffusion -units: W -cell_methods: time: mean -long_name: Northward Ocean Heat Transport due to Diffusion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfnorthdiff -type: real -!---------------------------------- -! - -!============ -variable_entry: hfx -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_x_transport -units: W -cell_methods: time: mean -long_name: Ocean Heat X Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfx -type: real -!---------------------------------- -! - -!============ -variable_entry: hfy -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_y_transport -units: W -cell_methods: time: mean -long_name: Ocean Heat Y Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfy -type: real -!---------------------------------- -! - -!============ -variable_entry: hfyba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_y_transport_due_to_bolus_advection -units: W -cell_methods: time: mean -long_name: Ocean Heat Y Transport due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfyba -type: real -!---------------------------------- -! - -!============ -variable_entry: hfydiff -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_y_transport_due_to_diffusion -units: W -cell_methods: time: mean -long_name: Ocean Heat Y Transport due to Diffussion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfydiff -type: real -!---------------------------------- -! - -!============ -variable_entry: hfxba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_x_transport_due_to_bolus_advection -units: W -cell_methods: time: mean -long_name: Ocean Heat X Transport due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfxba -type: real -!---------------------------------- -! - -!============ -variable_entry: hfxdiff -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_heat_x_transport_due_to_diffusion -units: W -cell_methods: time: mean -long_name: Ocean Heat X Transport due to Diffusion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfxdiff -type: real -!---------------------------------- -! - -!============ -variable_entry: hfbasin -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport -units: W -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Heat Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: hfbasin -type: real -!---------------------------------- -! - -!============ -variable_entry: hfbasinba -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_bolus_advection -units: W -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Heat Transport due to Bolus Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: hfbasinba -type: real -!---------------------------------- -! - -!============ -variable_entry: hfbasindiff -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_diffusion -units: W -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Heat Transport due to Diffussion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: hfbasindiff -type: real -!---------------------------------- -! - -!============ -variable_entry: htovgyre -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_gyre -units: W -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Heat Transport due to Gyre -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: htovgyre -type: real -valid_min: -1.772e+15 -valid_max: 2.691e+15 -ok_min_mean_abs: 5.91e+13 -ok_max_mean_abs: 2.364e+14 -!---------------------------------- -! - -!============ -variable_entry: htovovrt -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_heat_transport_due_to_overturning -units: W -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Heat Transport due to Overturning -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: htovovrt -type: real -valid_min: -6.263e+15 -valid_max: 1.305e+16 -ok_min_mean_abs: 2.039e+14 -ok_max_mean_abs: 8.156e+14 -!---------------------------------- -! - -!============ -variable_entry: sltovgyre -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_salt_transport_due_to_gyre -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Salt Transport due to Gyre -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: sltovgyre -type: real -!---------------------------------- -! - -!============ -variable_entry: sltovovrt -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_ocean_salt_transport_due_to_overturning -units: kg s-1 -cell_methods: time: mean longitude: mean -long_name: Northward Ocean Salt Transport due to Overturning -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude basin time -out_name: sltovovrt -type: real -!---------------------------------- -! - -!============ -variable_entry: mfo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_transport_across_line -units: kg s-1 -cell_methods: time: mean -long_name: Sea Water Transport -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time oline -out_name: mfo -type: real -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: rainfall_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Rainfall Flux where Ice Free Ocean over Sea -comment: computed as the total mass of liquid water falling as liquid rain into the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pr -type: real -valid_min: 0 -valid_max: 0.001254 -ok_min_mean_abs: 2.156e-05 -ok_max_mean_abs: 3.215e-05 -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Snowfall Flux where Ice Free Ocean over Sea -comment: computed as the total mass per unit time of solid-phase precipitation falling into the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell. (Snowfall flux includes all types of solid-phase precipitation.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prsn -type: real -valid_min: 0 -valid_max: 0.0002987 -ok_min_mean_abs: 1.449e-06 -ok_max_mean_abs: 6.11e-06 -!---------------------------------- -! - -!============ -variable_entry: evs -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Water Evaporation Flux Where Ice Free Ocean over Sea -comment: computed as the total mass of water vapor evaporating from the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: evs -type: real -!---------------------------------- -! - -!============ -variable_entry: friver -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water_from_rivers -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux into Sea Water From Rivers -comment: computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: friver -type: real -!---------------------------------- -! - -!============ -variable_entry: ficeberg -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water_from_icebergs -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Water Flux into Sea Water From Icebergs -comment: computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: ficeberg -type: real -!---------------------------------- -! - -!============ -variable_entry: ficeberg2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water_from_icebergs -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux into Sea Water From Icebergs -comment: computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ficeberg -type: real -!---------------------------------- -! - -!============ -variable_entry: fsitherm -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water_due_to_sea_ice_thermodynamics -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux into Sea Water due to Sea Ice Thermodynamics -comment: computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fsitherm -type: real -!---------------------------------- -! - -!============ -variable_entry: wfo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux into Sea Water -comment: computed as the water flux into the ocean divided by the area of the ocean portion of the grid cell. This is the sum of the next two variables in this table. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wfo -type: real -valid_min: -0.005411 -valid_max: 0.03952 -ok_min_mean_abs: 1.831e-05 -ok_max_mean_abs: 6.051e-05 -!---------------------------------- -! - -!============ -variable_entry: wfonocorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_into_sea_water_without_flux_correction -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux into Sea Water Without Flux Correction -comment: computed as the water flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wfonocorr -type: real -!---------------------------------- -! - -!============ -variable_entry: wfcorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_flux_correction -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Water Flux Correction -comment: Positive flux implies correction adds water to ocean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wfcorr -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: vsfpr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_into_sea_water_due_to_rainfall -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux into Sea Water due to Rainfall -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsfpr -type: real -!---------------------------------- -! - -!============ -variable_entry: vsfevap -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_into_sea_water_due_to_evaporation -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux into Sea Water due to Evaporation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsfevap -type: real -!---------------------------------- -! - -!============ -variable_entry: vsfriver -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_into_sea_water_from_rivers -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux into Sea Water From Rivers -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsfriver -type: real -!---------------------------------- -! - -!============ -variable_entry: vsfsit -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics -comment: This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsfsit -type: real -!---------------------------------- -! - -!============ -variable_entry: vsf -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_into_sea_water -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux into Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsf -type: real -!---------------------------------- -! - -!============ -variable_entry: vsfcorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: virtual_salt_flux_correction -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Virtual Salt Flux Correction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsfcorr -type: real -!---------------------------------- -! - -!============ -variable_entry: sfdsi -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downward_sea_ice_basal_salt_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Downward Sea Ice Basal Salt Flux -comment: This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sfdsi -type: real -!---------------------------------- -! - -!============ -variable_entry: sfriver -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: salt_flux_into_sea_water_from_rivers -units: kg m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Salt Flux into Sea Water from Rivers -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sfriver -type: real -!---------------------------------- -! - -!============ -variable_entry: hfgeou -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upward_geothermal_heat_flux_at_sea_floor -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Upward Geothermal Heat Flux at Sea Floor -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfgeou -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfrainds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water -units: W m-2 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water -comment: This is defined as ""where ice_free_sea over sea""; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfrainds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: hfevapds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water -units: W m-2 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water -comment: "This is defined as ""where ice_free_sea over sea""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfevapds -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfrunoffds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: hfrunoffds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfrunoffds2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfrunoffds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsnthermds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_snow_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Heat Flux into Sea Water due to Snow Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: hfsnthermds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsnthermds2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_snow_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Heat Flux into Sea Water due to Snow Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfsnthermds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsifrazil -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_freezing_of_frazil_ice -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Heat Flux into Sea Water due to Frazil Ice Formation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: hfsifrazil -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsifrazil2d -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_freezing_of_frazil_ice -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Heat Flux into Sea Water due to Frazil Ice Formation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfsifrazil -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsithermds -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_sea_ice_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Heat Flux into Sea Water due to Sea Ice Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: hfsithermds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfsithermds2d -!============ -modeling_realm: ocean seaIce -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_sea_ice_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Heat Flux into Sea Water due to Sea Ice Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfsithermds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfibthermds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_iceberg_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Heat Flux into Sea Water due to Iceberg Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: hfibthermds -type: real -!---------------------------------- -! - -!============ -variable_entry: hfibthermds2d -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_into_sea_water_due_to_iceberg_thermodynamics -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Heat Flux into Sea Water due to Iceberg Thermodynamics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfibthermds -type: real -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_net_downward_longwave_flux -units: W m-2 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Surface Net Downward Longwave Radiation -comment: "This is defined as ""where ice_free_sea over sea""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlds -type: real -positive: down -valid_min: 30.71 -valid_max: 520.5 -ok_min_mean_abs: 271.2 -ok_max_mean_abs: 323.6 -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_latent_heat_flux -units: W m-2 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Surface Downward Latent Heat Flux -comment: "This is defined as ""where ice_free_sea over sea""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfls -type: real -positive: down -valid_min: -76.77 -valid_max: 790.7 -ok_min_mean_abs: 50.39 -ok_max_mean_abs: 73.2 -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean area: mean where ice_free_sea over sea -cell_measures: area: areacello -long_name: Surface Downward Sensible Heat Flux -comment: "This is defined as ""where ice_free_sea over sea""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfss -type: real -positive: down -valid_min: -264.5 -valid_max: 844.8 -ok_min_mean_abs: 10.7 -ok_max_mean_abs: 34.84 -!---------------------------------- -! - -!============ -variable_entry: rsntds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_downward_shortwave_flux_at_sea_water_surface -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Net Downward Shortwave Radiation at Sea Water Surface -comment: This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsntds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_sea_water -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Downwelling Shortwave Radiation in Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: rsds -type: real -positive: down -valid_min: -0.002946 -valid_max: 524.4 -ok_min_mean_abs: 143.9 -ok_max_mean_abs: 181.6 -!---------------------------------- -! - -!============ -variable_entry: hfcorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: heat_flux_correction -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Heat Flux Correction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfcorr -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: hfds -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_heat_flux_in_sea_water -units: W m-2 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Downward Heat Flux at Sea Water Surface -comment: "This is the net flux of heat entering the liquid water column through its upper surface (excluding any ""flux adjustment"") ." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauuo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_x_stress -units: N m-2 -cell_methods: time: mean area: mean where sea -long_name: Surface Downward X Stress -comment: This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauuo -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauvo -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_y_stress -units: N m-2 -cell_methods: time: mean area: mean where sea -long_name: Surface Downward Y Stress -comment: This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauvo -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauucorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_x_stress_correction -units: N m-2 -cell_methods: time: mean area: mean where sea -long_name: Surface Downward X Stress Correction -comment: This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauucorr -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauvcorr -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_y_stress_correction -units: N m-2 -cell_methods: time: mean area: mean where sea -long_name: Surface Downward Y Stress Correction -comment: This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tauvcorr -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: zfull -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Depth Below Geoid of Ocean Layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zfull -type: real -!---------------------------------- -! - -!============ -variable_entry: zhalf -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Depth Below Geoid of Interfaces Between Ocean Layers -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zhalf -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oyr b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oyr deleted file mode 100644 index 98cba4f62b..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_Oyr +++ /dev/null @@ -1,2120 +0,0 @@ -table_id: Table Oyr -modeling_realm: ocean - -frequency: yr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 365.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: olevel - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: depth_coord -!============ -! -! This vertical coordinate is used in z-coordinate models -! The units are meters (m), and it has a value of 0. at the surface -! and becomes more and more positive with depth. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z -positive: down -long_name: ocean depth coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0. -valid_max: 12000. -!---------------------------------- -! -!============ -axis_entry: olev -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: generic ocean level -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! -!============ -axis_entry: ocean_double_sigma -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_double_sigma -axis: Z -positive: up -long_name: ocean double sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= k_c:\n z= sigma*f \n for k > k_c:\n z= f + (sigma-1)*(depth-f) \n f= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth-href)) -z_factors: sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c -z_bounds_factors: sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma_z -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_z -axis: Z -long_name: ocean sigma over z coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= nsigma: z = eta + sigma*(min(depth_c,depth)+eta) ; for k > nsigma: z = zlev -z_factors: sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev -z_bounds_factors: sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds -!---------------------------------- -! -!============ -axis_entry: ocean_s -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of s, which appears in the formula below, should be stored as ocean_s. -! Note that in the netCDF file the variable will be named "lev", not ocean_s. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_s_coordinate -axis: Z -positive: up -long_name: ocean s-coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta*(1+s) + depth_c*s + (depth-depth_c)*C \n where \n C=(1-b)*sinh(a*s)/sinh(a) +\n b*(tanh(a*(s+0.5))/(2*tanh(0.5*a)) - 0.5) -z_factors: s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c -z_bounds_factors: s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of sigma, which appears in the formula below, should be stored as ocean_sigma. -! Note that in the netCDF file the variable will be named "lev", not ocean_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_coordinate -axis: Z -positive: up -long_name: ocean sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta + sigma*(depth+eta) -z_factors: sigma: lev eta: eta depth: depth -z_bounds_factors: sigma: lev_bnds eta: eta depth: depth -!---------------------------------- -! -! -! *************************************************************** -! -! Vertical coordinate formula_terms: -! -! *************************************************************** -! -!============ -variable_entry: eta -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -cell_methods: time: mean -long_name: Sea Surface Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -!---------------------------------- -! -! -!============ -variable_entry: depth -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -long_name: Sea Floor Depth -comment: Ocean bathymetry. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: depth -type: real -valid_min: 0. -valid_max: 12000. -ok_min_mean_abs: 2000. -ok_max_mean_abs: 5000. -!---------------------------------- -! -! -!============ -variable_entry: sigma -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: sigma_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -! -!============ -variable_entry: depth_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: depth_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: a -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient a -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient b -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: nsigma -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: nsigma -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! -!============ -variable_entry: z1 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z1 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: z2 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z2 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: href -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: href -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: k_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: k_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! - -!============ -variable_entry: dissic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_inorganic_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Inorganic Carbon Concentration -comment: Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dissic -type: real -!---------------------------------- -! - -!============ -variable_entry: dissoc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_organic_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Organic Carbon Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dissoc -type: real -!---------------------------------- -! - -!============ -variable_entry: phyc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Carbon Concentration -comment: sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., ""Diatom Carbon Concentration"" and ""Non-Diatom Phytoplankton Carbon Concentration"" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phyc -type: real -!---------------------------------- -! - -!============ -variable_entry: zooc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Zooplankton Carbon Concentration -comment: sum of zooplankton carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zooc -type: real -!---------------------------------- -! - -!============ -variable_entry: bacc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Bacterial Carbon Concentration -comment: sum of bacterial carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bacc -type: real -!---------------------------------- -! - -!============ -variable_entry: detoc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Detrital Organic Carbon Concentration -comment: sum of detrital organic carbon component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: detoc -type: real -!---------------------------------- -! - -!============ -variable_entry: calc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcite_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Calcite Concentration -comment: sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: calc -type: real -!---------------------------------- -! - -!============ -variable_entry: arag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Aragonite Concentration -comment: sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: arag -type: real -!---------------------------------- -! - -!============ -variable_entry: phydiat -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Diatoms expressed as Carbon in Sea Water -comment: carbon from the diatom phytoplankton component concentration alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phydiat -type: real -!---------------------------------- -! - -!============ -variable_entry: phydiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water -comment: carbon concentration from the diazotrophic phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phydiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: phycalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water -comment: carbon concentration from calcareous (calcite-producing) phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phycalc -type: real -!---------------------------------- -! - -!============ -variable_entry: phypico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water -comment: carbon concentration from the picophytoplankton (<2 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phypico -type: real -!---------------------------------- -! - -!============ -variable_entry: phymisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water -comment: carbon concentration from additional phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phymisc -type: real -!---------------------------------- -! - -!============ -variable_entry: zmicro -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Microzooplankton expressed as Carbon in Sea Water -comment: carbon concentration from the microzooplankton (<20 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zmicro -type: real -!---------------------------------- -! - -!============ -variable_entry: zmeso -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water -comment: carbon concentration from mesozooplankton (20-200 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zmeso -type: real -!---------------------------------- -! - -!============ -variable_entry: zoocmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Other Zooplankton Carbon Concentration -comment: carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zoocmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: talk -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_alkalinity_expressed_as_mole_equivalent -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Total Alkalinity -comment: total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: talk -type: real -!---------------------------------- -! - -!============ -variable_entry: ph -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_water_ph_reported_on_total_scale -units: 1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: pH -comment: negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: ph -type: real -!---------------------------------- -! - -!============ -variable_entry: o2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_molecular_oxygen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Oxygen Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: o2 -type: real -!---------------------------------- -! - -!============ -variable_entry: no3 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_nitrate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Nitrate Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: no3 -type: real -!---------------------------------- -! - -!============ -variable_entry: nh4 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_ammonium_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Ammonium Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: nh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: po4 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phosphate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Phosphate Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: po4 -type: real -!---------------------------------- -! - -!============ -variable_entry: dfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dissolved_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Iron Concentration -comment: dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dfe -type: real -!---------------------------------- -! - -!============ -variable_entry: si -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_silicate_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dissolved Silicate Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: si -type: real -!---------------------------------- -! - -!============ -variable_entry: chl -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Total Chlorophyll Mass Concentration -comment: sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of ""Diatom Chlorophyll Mass Concentration"" plus ""Other Phytoplankton Chlorophyll Mass Concentration"" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chl -type: real -!---------------------------------- -! - -!============ -variable_entry: chldiat -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Diatom Chlorophyll Mass Concentration -comment: chlorophyll from diatom phytoplankton component concentration alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chldiat -type: real -!---------------------------------- -! - -!============ -variable_entry: chldiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water -comment: chlorophyll concentration from the diazotrophic phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chldiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: chlcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water -comment: chlorophyll concentration from the calcite-producing phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chlcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: chlpico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water -comment: chlorophyll concentration from the picophytoplankton (<2 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chlpico -type: real -!---------------------------------- -! - -!============ -variable_entry: chlmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water -units: kg m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Other Phytoplankton Chlorophyll Mass Concentration -comment: chlorophyll from additional phytoplankton component concentrations alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: chlmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: pon -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Organic Nitrogen Concentration -comment: sum of particulate organic nitrogen component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pon -type: real -!---------------------------------- -! - -!============ -variable_entry: pop -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Organic Phosphorus Concentration -comment: sum of particulate organic phosphorus component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pop -type: real -!---------------------------------- -! - -!============ -variable_entry: bfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Biogenic Iron Concentration -comment: sum of particulate organic iron component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bfe -type: real -!---------------------------------- -! - -!============ -variable_entry: bsi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particulate Biogenic Silica Concentration -comment: sum of particulate silica component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bsi -type: real -!---------------------------------- -! - -!============ -variable_entry: phyn -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Nitrogen Concentration -comment: sum of phytoplankton nitrogen component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phyn -type: real -!---------------------------------- -! - -!============ -variable_entry: phyp -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Phosphorus Concentration -comment: sum of phytoplankton phosphorus components -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phyp -type: real -!---------------------------------- -! - -!============ -variable_entry: phyfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Iron Concentration -comment: sum of phytoplankton iron component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phyfe -type: real -!---------------------------------- -! - -!============ -variable_entry: physi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Phytoplankton Silica Concentration -comment: sum of phytoplankton silica component concentrations -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: physi -type: real -!---------------------------------- -! - -!============ -variable_entry: dms -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_dimethyl_sulfide_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Dimethyl Sulphide Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dms -type: real -!---------------------------------- -! - -!============ -variable_entry: co3 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Carbonate expressed as Carbon in Sea Water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: co3 -type: real -!---------------------------------- -! - -!============ -variable_entry: co3satcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_at_saturation -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Calcite expressed as Carbon in Sea Water at Saturation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: co3satcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: co3satarag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_at_saturation -units: mol m-3 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Mole Concentration of Aragonite expressed as Carbon in Sea Water at Saturation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: co3satarag -type: real -!---------------------------------- -! - -!============ -variable_entry: pp -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Primary Carbon Production by Phytoplankton -comment: total primary (organic carbon) production by phytoplankton -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pp -type: real -!---------------------------------- -! - -!============ -variable_entry: pnitrate -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Primary Carbon Production by Phytoplankton due to Nitrate Uptake Alone -comment: Primary (organic carbon) production by phytoplankton due to nitrate uptake alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pnitrate -type: real -!---------------------------------- -! - -!============ -variable_entry: pbfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Biogenic Iron Production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pbfe -type: real -!---------------------------------- -! - -!============ -variable_entry: pbsi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Biogenic Silica Production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pbsi -type: real -!---------------------------------- -! - -!============ -variable_entry: pcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Calcite Production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: parag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Aragonite Production -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: parag -type: real -!---------------------------------- -! - -!============ -variable_entry: expc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Sinking Particulate Organic Carbon Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expc -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: expn -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Sinking Particulate Organic Nitrogen Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expn -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: expp -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -long_name: Sinking Particulate Organic Phosphorus Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expp -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: expcfe -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_iron_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -long_name: Sinking Particulate Iron Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expcfe -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: expsi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_particulate_silicon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Sinking Particulate Silica Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expsi -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: expcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Sinking Calcite Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: expcalc -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: exparag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water -units: mol m-2 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Sinking Aragonite Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: exparag -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: dcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Calcite Dissolution -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: darag -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_dissolution -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Aragonite Dissolution -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: darag -type: real -!---------------------------------- -! - -!============ -variable_entry: pdi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Diatom Primary Carbon Production -comment: Primary (organic carbon) production by the diatom component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: pdi -type: real -!---------------------------------- -! - -!============ -variable_entry: dpocdtdiaz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Diazotrophs -comment: Primary (organic carbon) production by the diazotrophic phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dpocdtdiaz -type: real -!---------------------------------- -! - -!============ -variable_entry: dpocdtcalc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Calcareous Phytoplankton -comment: Primary (organic carbon) production by the calcite-producing phytoplankton component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dpocdtcalc -type: real -!---------------------------------- -! - -!============ -variable_entry: dpocdtpico -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Picophytoplankton -comment: Primary (organic carbon) production by the picophytoplankton (<2 um) component alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: dpocdtpico -type: real -!---------------------------------- -! - -!============ -variable_entry: phypmisc -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Other Phytoplankton Carbon Production -comment: Primary (organic carbon) production by other phytoplankton components alone -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: phypmisc -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtdic -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Dissolved Inorganic Carbon due to Biological Activity -comment: Net of biological terms in time rate of change of dissolved inorganic carbon -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtdic -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtdin -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Nitrogen Nutrient due to Biological Activity -comment: Net of biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtdin -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtdip -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_inorganic_phosphate_in_sea_water_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Dissolved Phosphate due to Biological Activity -comment: Net of biological terms in time rate of change of dissolved phosphate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtdip -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtdife -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Dissolved Inorganic Iron due to Biological Activity -comment: Net of biological terms in time rate of change of dissolved inorganic iron -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtdife -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtdisi -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_inorganic_silicate_in_sea_water_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Dissolved Inorganic Silicate due to Biological Activity -comment: Net of biological terms in time rate of change of dissolved inorganic silicate -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtdisi -type: real -!---------------------------------- -! - -!============ -variable_entry: bddtalk -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Rate of Change of Alkalinity due to Biological Activity -comment: Net of biological terms in time rate of change of alkalinity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: bddtalk -type: real -!---------------------------------- -! - -!============ -variable_entry: fescav -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Nonbiogenic Iron Scavenging -comment: Dissolved Fe removed through nonbiogenic scavenging onto particles -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: fescav -type: real -!---------------------------------- -! - -!============ -variable_entry: fediss -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Particle Source of Dissolved Iron -comment: Dissolution, remineralization and desorption of iron back to the dissolved phase -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: fediss -type: real -!---------------------------------- -! - -!============ -variable_entry: graz -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_grazing_of_phytoplankton -units: mol m-3 s-1 -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello volume: volcello -long_name: Total Grazing of Phytoplankton by Zooplankton -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: graz -type: real -!---------------------------------- -! - -!============ -variable_entry: zfull -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Depth Below Geoid of Ocean Layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zfull -type: real -!---------------------------------- -! - -!============ -variable_entry: zhalf -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: depth_below_geoid -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Depth Below Geoid of Interfaces Between Ocean Layers -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel time -out_name: zhalf -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_aero b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_aero deleted file mode 100644 index 6871d12c89..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_aero +++ /dev/null @@ -1,2223 +0,0 @@ -table_id: Table aero -modeling_realm: atmos - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel alev1 - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! -! -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: mean -long_name: Surface Air Pressure -comment: not, in general, the same as mean sea-level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ps -type: real -! - -!============ -variable_entry: od550aer -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_ambient_aerosol -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Optical Thickness at 550 nm -comment: AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: od550aer -type: real -!---------------------------------- -! - -!============ -variable_entry: od550lt1aer -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_pm1_ambient_aerosol -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Fine Aerosol Optical Thickness at 550 nm -comment: od550 due to particles with wet diameter less than 1 um (""ambient"" means ""wetted""). When models do not include explicit size information, it can be assumed that all anthropogenic aerosols and natural secondary aerosols have diameter less than 1 um. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: od550lt1aer -type: real -!---------------------------------- -! - -!============ -variable_entry: abs550aer -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_absorption_optical_thickness_due_to_ambient_aerosol -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Absorption Optical Thickness at 550 nm -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: abs550aer -type: real -!---------------------------------- -! - -!============ -variable_entry: od870aer -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_ambient_aerosol -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Optical Thickness at 870 nm -comment: AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: od870aer -type: real -!---------------------------------- -! - -!============ -variable_entry: emioa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production_and_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Rate of Emission and Production of Dry Aerosol Total Organic Matter -comment: tendency of atmosphere mass content of organic matter dry aerosol due to net production and emission. This is the sum of total emission of POA and total production of SOA (see next two entries). ""Mass"" refers to the mass of organic matter, not mass of organic carbon alone. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emioa -type: real -!---------------------------------- -! - -!============ -variable_entry: emipoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Emission Rate of Dry Aerosol Primary Organic Matter -comment: tendency of atmosphere mass content of primary organic aerosol due to emission: ""mass"" refers to the mass of primary organic matter, not mass of organic carbon alone. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emipoa -type: real -!---------------------------------- -! - -!============ -variable_entry: chepsoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Production Rate of Dry Aerosol Secondary Organic Matter -comment: tendency of atmosphere mass content of secondary organic matter_dry aerosol due to net production: If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as POA emissions. ""mass"" refers to the mass of primary organic matter, not mass of organic carbon alone. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: chepsoa -type: real -!---------------------------------- -! - -!============ -variable_entry: emibc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Emission Rate of Black Carbon Aerosol Mass -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emibc -type: real -!---------------------------------- -! - -!============ -variable_entry: dryoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Dry Aerosol Organic Matter -comment: tendency of atmosphere mass content of organic dry aerosol due to dry deposition: This is the sum of dry deposition of POA and dry deposition of SOA (see next two entries). ""Mass"" refers to the mass of organic matter, not mass of organic carbon alone. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dryoa -type: real -!---------------------------------- -! - -!============ -variable_entry: drypoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Dry Aerosol Primary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drypoa -type: real -!---------------------------------- -! - -!============ -variable_entry: drysoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Dry Aerosol Secondary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drysoa -type: real -!---------------------------------- -! - -!============ -variable_entry: drybc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Black Carbon Aerosol Mass -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drybc -type: real -!---------------------------------- -! - -!============ -variable_entry: wetoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Dry Aerosol Organic Matter -comment: tendency of atmosphere mass content of organic matter dry aerosols due to wet deposition: This is the sum of wet deposition of POA and wet deposition of SOA (see next two entries). ""Mass"" refers to the mass of organic matter, not mass of organic carbon alone. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetoa -type: real -!---------------------------------- -! - -!============ -variable_entry: wetpoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Dry Aerosol Primary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetpoa -type: real -!---------------------------------- -! - -!============ -variable_entry: wetsoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Dry Aerosol Secondary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetsoa -type: real -!---------------------------------- -! - -!============ -variable_entry: wetbc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Black Carbon Aerosol Mass -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetbc -type: real -!---------------------------------- -! - -!============ -variable_entry: emibb -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission of Primary Aerosol from Biomass Burning -comment: tendency of atmosphere mass content of primary organic matter dry aerosol due to emission: This does not include sources of secondary aerosols from biomass burning aerosols, such as SO2 or SOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emibb -type: real -!---------------------------------- -! - -!============ -variable_entry: emiso2 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission Rate of SO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emiso2 -type: real -!---------------------------------- -! - -!============ -variable_entry: emiso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Direct Emission Rate of SO4 -comment: expressed as a tendency of atmosphere mass content of SO4. Direct emission does not include secondary sulfate production. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emiso4 -type: real -!---------------------------------- -! - -!============ -variable_entry: emidms -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission Rate of DMS -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emidms -type: real -!---------------------------------- -! - -!============ -variable_entry: dryso2 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of SO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dryso2 -type: real -!---------------------------------- -! - -!============ -variable_entry: dryso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of SO4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dryso4 -type: real -!---------------------------------- -! - -!============ -variable_entry: drydms -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of DMS -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drydms -type: real -!---------------------------------- -! - -!============ -variable_entry: wetso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfate_expressed_as_sulfur_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of SO4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetso4 -type: real -!---------------------------------- -! - -!============ -variable_entry: wetso2 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of SO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetso2 -type: real -!---------------------------------- -! - -!============ -variable_entry: wetdms -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of DMS -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetdms -type: real -!---------------------------------- -! - -!============ -variable_entry: eminh3 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission Rate of NH3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: eminh3 -type: real -!---------------------------------- -! - -!============ -variable_entry: drynh3 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of NH3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drynh3 -type: real -!---------------------------------- -! - -!============ -variable_entry: drynh4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of NH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drynh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: wetnh4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of NH4+NH3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetnh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: emiss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission Rate of Seasalt -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emiss -type: real -!---------------------------------- -! - -!============ -variable_entry: dryss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Seasalt -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dryss -type: real -!---------------------------------- -! - -!============ -variable_entry: wetss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Seasalt -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetss -type: real -!---------------------------------- -! - -!============ -variable_entry: emidust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_emission -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Emission Rate of Dust -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: emidust -type: real -!---------------------------------- -! - -!============ -variable_entry: drydust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_dry_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Dry Deposition Rate of Dust -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: drydust -type: real -!---------------------------------- -! - -!============ -variable_entry: wetdust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_wet_deposition -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Wet Deposition Rate of Dust -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: wetdust -type: real -!---------------------------------- -! - -!============ -variable_entry: loadoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Dry Aerosol Organic Matter -comment: atmosphere dry organic content: This is the vertically integrated sum of atmosphere_primary_organic_content and atmosphere_secondary_organic_content (see next two table entries). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadoa -type: real -!---------------------------------- -! - -!============ -variable_entry: loadpoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Dry Aerosol Primary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadpoa -type: real -!---------------------------------- -! - -!============ -variable_entry: loadsoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Dry Aerosol Secondary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadsoa -type: real -!---------------------------------- -! - -!============ -variable_entry: loadbc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_black_carbon_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Black Carbon Aerosol -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadbc -type: real -!---------------------------------- -! - -!============ -variable_entry: loadso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_sulfate_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of SO4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadso4 -type: real -!---------------------------------- -! - -!============ -variable_entry: loaddust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_dust_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Dust -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loaddust -type: real -!---------------------------------- -! - -!============ -variable_entry: loadss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_seasalt_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of Seasalt -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadss -type: real -!---------------------------------- -! - -!============ -variable_entry: loadno3 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_nitrate_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of NO3 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadno3 -type: real -!---------------------------------- -! - -!============ -variable_entry: loadnh4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_mass_content_of_ammonium_dry_aerosol -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Load of NH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: loadnh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Dry Aerosol Organic Matter -comment: mass concentration of particulate organic matter dry aerosol in air in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcoa -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcpoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_primary_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Dry Aerosol Primary Organic Matter -comment: mass concentration of primary particulate organic matter dry aerosol in air in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcpoa -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcsoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_secondary_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Dry Aerosol Secondary Organic Matter -comment: mass concentration of secondary particulate organic matter dry aerosol in air in model lowest layer. If the model lumps SOA with POA, then their sum is reported as POA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcsoa -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcbc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_black_carbon_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Black Carbon Aerosol -comment: mass concentration of black carbon dry aerosol in air in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcbc -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_sulfate_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of SO4 -comment: mass concentration of sulfate dry aerosol in air in model lowest layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcso4 -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcdust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_dust_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Dust -comment: mass concentration of dust dry aerosol in air in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcdust -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_seasalt_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of Seasalt -comment: mass concentration of seasalt dry aerosol in air in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcss -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcno3 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_nitrate_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of NO3 -comment: Mass concentration in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcno3 -type: real -!---------------------------------- -! - -!============ -variable_entry: sconcnh4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_ammonium_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Concentration of NH4 -comment: Mass concentration in model lowest layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alev1 time -out_name: sconcnh4 -type: real -!---------------------------------- -! - -!============ -variable_entry: rsdsdiff -!============ -modeling_realm: aerosol land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_diffuse_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Diffuse Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdsdiff -type: real -!---------------------------------- -! - -!============ -variable_entry: rsdscsdiff -!============ -modeling_realm: aerosol land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Diffuse Downwelling Clear Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdscsdiff -type: real -!---------------------------------- -! - -!============ -variable_entry: reffclwtop -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Cloud-Top Effective Droplet Radius -comment: Droplets are liquid only. This is the effective radius ""as seen from space"" over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Reported values are weighted by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: reffclwtop -type: real -!---------------------------------- -! - -!============ -variable_entry: cldncl -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Cloud Droplet Number Concentration of Cloud Tops -comment: Droplets are liquid only. Report concentration ""as seen from space"" over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cldncl -type: real -!---------------------------------- -! - -!============ -variable_entry: cldnci -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_ice_crystals_in_air_at_ice_cloud_top -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ice Crystal Number Concentration of Cloud Tops -comment: concentration ""as seen from space"" over ice-cloud portion of grid cell. This is the value from uppermost model layer with ice cloud or, if available, it is the sum over all ice cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total ice cloud top fraction (as seen from TOA) of each time sample when computing monthly mean. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cldnci -type: real -!---------------------------------- -! - -!============ -variable_entry: cldnvi -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_number_content_of_cloud_droplets -units: m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Column Integrated Cloud Droplet Number -comment: Droplets are liquid only. Values are weighted by liquid cloud fraction in each layer when vertically integrating, and for monthly means the samples are weighted by total liquid cloud fraction (as seen from TOA). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cldnvi -type: real -!---------------------------------- -! - -!============ -variable_entry: ec550aer -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: volume_extinction_coefficient_in_air_due_to_ambient_aerosol -units: m-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Extinction at 550 nm -comment: """ambient"" means ""wetted"". " -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: ec550aer -!---------------------------------- -! - -!============ -variable_entry: concoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Dry Aerosol Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concoa -!---------------------------------- -! - -!============ -variable_entry: concpoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_primary_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Dry Aerosol Primary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concpoa -!---------------------------------- -! - -!============ -variable_entry: concsoa -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_secondary_particulate_organic_matter_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Dry Aerosol Secondary Organic Matter -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concsoa -!---------------------------------- -! - -!============ -variable_entry: concbb -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_biomass_burning_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Biomass Burning Aerosol -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concbb -!---------------------------------- -! - -!============ -variable_entry: concbc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_black_carbon_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Black Carbon Aerosol -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concbc -!---------------------------------- -! - -!============ -variable_entry: concaerh2o -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_water_in_ambient_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Aerosol Water -comment: """ambient"" means ""wetted""" -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concaerh2o -!---------------------------------- -! - -!============ -variable_entry: concso4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_sulfate_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of SO4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concso4 -!---------------------------------- -! - -!============ -variable_entry: concso2 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_sulfur_dioxide_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of SO2 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concso2 -!---------------------------------- -! - -!============ -variable_entry: concdms -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mole_fraction_of_dimethyl_sulfide_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mole Fraction of DMS -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concdms -!---------------------------------- -! - -!============ -variable_entry: concno3 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_nitrate_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of NO3 Aerosol -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concno3 -!---------------------------------- -! - -!============ -variable_entry: concnh4 -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_ammonium_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of NH4 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concnh4 -!---------------------------------- -! - -!============ -variable_entry: concss -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_seasalt_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Seasalt -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concss -!---------------------------------- -! - -!============ -variable_entry: concdust -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_concentration_of_dust_dry_aerosol_in_air -units: kg m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Concentration of Dust -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concdust -!---------------------------------- -! - -!============ -variable_entry: conccn -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_ambient_aerosol_in_air -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Aerosol Number Concentration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: conccn -!---------------------------------- -! - -!============ -variable_entry: concnmcn -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_nucleation_mode_ambient_aerosol_in_air -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Number Concentration of Nucleation Mode Aerosol -comment: includes all particles with diameter smaller than 3 nm -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: concnmcn -!---------------------------------- -! - -!============ -variable_entry: conccmcn -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_coarse_mode_ambient_aerosol_in_air -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Number Concentration Coarse Mode Aerosol -comment: includes all particles with diameter larger than 1 micron -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: conccmcn -!---------------------------------- -! - -!============ -variable_entry: reffclws -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_liquid_water_particle -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Stratiform Cloud Droplet Effective Radius -comment: Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: reffclws -!---------------------------------- -! - -!============ -variable_entry: reffclwc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_convective_cloud_liquid_water_particle -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Cloud Droplet Effective Radius -comment: Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: reffclwc -!---------------------------------- -! - -!============ -variable_entry: cdnc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_cloud_liquid_water_particles_in_air -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Cloud Droplet Number Concentration -comment: Cloud droplet number concentration in liquid clouds -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cdnc -!---------------------------------- -! - -!============ -variable_entry: inc -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: number_concentration_of_ice_crystals_in_air -units: m-3 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ice Crystal Number Concentration -comment: Ice Crystal number concentration in ice clouds -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: inc -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cf3hr b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cf3hr deleted file mode 100644 index 25020d2c71..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cf3hr +++ /dev/null @@ -1,2593 +0,0 @@ -table_id: Table cf3hr -modeling_realm: atmos - -frequency: 3hr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.125000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel alevhalf - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: p220 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 22000. ! of scalar (singleton) dimension -bounds_values: 44000. 0.0 ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p560 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 56000. ! of scalar (singleton) dimension -bounds_values: 68000. 44000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p840 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 84000. ! of scalar (singleton) dimension -bounds_values: 100000. 68000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: alt40 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: altitude -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: altitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: alt40 -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 240. 720. 1200. 1680. 2160. 2640. 3120. 3600. 4080. 4560. 5040. 5520. 6000. 6480. 6960. 7440. 7920. 8400. 8880. 9360. 9840. 10320. 10800. 11280. 11760. 12240. 12720. 13200. 13680. 14160. 14640. 15120. 15600. 16080. 16560. 17040. 17520. 18000. 18480. 18960. ! space-separated list of requested coordinates -requested_bounds: 0. 480. 480. 960. 960. 1440. 1440. 1920. 1920. 2400. 2400. 2880. 2880. 3360. 3360. 3840. 3840. 4320. 4320. 4800. 4800. 5280. 5280. 5760. 5760. 6240. 6240. 6720. 6720. 7200. 7200. 7680. 7680. 8160. 8160. 8640. 8640. 9120. 9120. 9600. 9600. 10080. 10080. 10560. 10560. 11040. 11040. 11520. 11520. 12000. 12000. 12480. 12480. 12960. 12960. 13440. 13440. 13920. 13920. 14400. 14400. 14880. 14880. 15360. 15360. 15840. 15840. 16320. 16320. 16800. 16800. 17280. 17280. 17760. 17760. 18240. 18240. 18720. 18720. 19200. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height2m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 10.0 -stored_direction: increasing -type: double -value: 2. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height10m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 30.0 -stored_direction: increasing -type: double -value: 10. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: scatratio -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: backscattering_ratio -units: 1 -long_name: lidar backscattering ratio -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: scatratio -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0.005 0.605 2.1 4. 6. 8.5 12.5 17.5 22.5 27.5 35. 45. 55. 70. 50040. ! space-separated list of requested coordinates -requested_bounds: 0. 0.01 0.01 1.2 1.2 3. 3. 5. 5. 7. 7. 10. 10. 15. 15. 20. 20. 25. 25. 30. 30. 40. 40. 50. 50. 60. 60. 80. 80. 100000. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: dbze -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: equivalent_reflectivity_factor -units: dBZ -long_name: CloudSat simulator equivalent radar reflectivity factor -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: dbze -stored_direction: increasing -tolerance: 0.001 -type: double -requested: -47.5 -42.5 -37.5 -32.5 -27.5 -22.5 -17.5 -12.5 -7.5 -2.5 2.5 7.5 12.5 17.5 22.5 ! space-separated list of requested coordinates -requested_bounds: -50. -45. -45. -40. -40. -35. -35. -30. -30. -25. -25. -20. -20. -15. -15. -10. -10. -5. -5. 0. 0. 5. 5. 10. 10. 15. 15. 20. 20. 25. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sza5 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: solar_zenith_angle -units: degree -long_name: solar zenith angle -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: sza -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0. 20. 40. 60. 80. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: location -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -long_name: location index -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: loc -stored_direction: increasing -type: integer -must_have_bounds: no -index_only: ok -must_call_cmor_grid: yes - -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! - -!============ -variable_entry: clcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: CALIPSO Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location alt40 time1 -out_name: clcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clcalipso2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: CALIPSO Cloud Fraction Undetected by CloudSat -comment: Clouds detected by CALIPSO but below the detectability threshold of CloudSat -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location alt40 time1 -out_name: clcalipso2 -type: real -!---------------------------------- -! - -!============ -variable_entry: cfadDbze94 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid -units: 1 -cell_methods: time: point -long_name: CloudSat Radar Reflectivity CFAD -comment: CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location alt40 dbze time1 -out_name: cfadDbze94 -type: real -!---------------------------------- -! - -!============ -variable_entry: cfadLidarsr532 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid -units: 1 -cell_methods: time: point -long_name: CALIPSO Scattering Ratio CFAD -comment: CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location alt40 scatratio time1 -out_name: cfadLidarsr532 -type: real -!---------------------------------- -! - -!============ -variable_entry: parasolRefl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_bidirectional_reflectance -units: 1 -cell_methods: time: point -long_name: PARASOL Reflectance -comment: Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location sza5 time1 -out_name: parasolRefl -type: real -!---------------------------------- -! - -!============ -variable_entry: cltcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: point -long_name: CALIPSO Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 -out_name: cltcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: cllcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: CALIPSO Low Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 p840 -out_name: cllcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clmcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: CALIPSO Mid Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 p560 -out_name: clmcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clhcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: CALIPSO High Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 p220 -out_name: clhcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: longitude -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -cell_methods: time: point -long_name: Longitude -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 -out_name: lon -type: real -valid_min: 0.0 -valid_max: 360.0 -!---------------------------------- -! - -!============ -variable_entry: latitude -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -cell_methods: time: point -long_name: Latitude -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 -out_name: lat -type: real -valid_min: -90.0 -valid_max: 90.0 -!---------------------------------- -! - -!============ -variable_entry: toffset -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: time -units: day -long_name: Offset Time -comment: "this ""offset time"" should be added to the value stored in the ""time dimension"" to get the actual time. This actual time is the time (UTC) of the corresponding point in the satellite orbit used to extract the model data." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: location time1 -out_name: toffset -type: real -!---------------------------------- -! - -!============ -variable_entry: tas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height2m -out_name: tas -type: real -!---------------------------------- -! - -!============ -variable_entry: ts -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Temperature -comment: ""skin"" temperature (i.e., SST for open ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ts -type: real -!---------------------------------- -! - -!============ -variable_entry: psl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Sea Level Pressure -comment: not, in general, the same as surface pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: psl -type: real -!---------------------------------- -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Air Pressure -comment: not, in general, the same as mean sea-level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ps -type: real -!---------------------------------- -! - -!============ -variable_entry: uas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: point -long_name: Eastward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height10m -out_name: uas -type: real -!---------------------------------- -! - -!============ -variable_entry: vas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: point -long_name: Northward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height10m -out_name: vas -type: real -!---------------------------------- -! - -!============ -variable_entry: sfcWind -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wind_speed -units: m s-1 -cell_methods: time: point -long_name: Near-Surface Wind Speed -comment: This is the mean of the speed, not the speed computed from the mean u and v components of wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height10m -out_name: sfcWind -type: real -!---------------------------------- -! - -!============ -variable_entry: hurs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height2m -out_name: hurs -type: real -!---------------------------------- -! - -!============ -variable_entry: huss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 height2m -out_name: huss -type: real -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Precipitation -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: pr -type: real -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Snowfall Flux -comment: at surface; includes precipitation of all forms of water in the solid phase -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: prsn -type: real -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Precipitation -comment: at surface; includes both liquid and solid phases. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: prc -type: real -!---------------------------------- -! - -!============ -variable_entry: evspsbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Evaporation -comment: at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: evspsbl -type: real -!---------------------------------- -! - -!============ -variable_entry: sbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_and_ice_sublimation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Snow and Ice Sublimation Flux -comment: The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: sbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tauu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_eastward_stress -units: Pa -cell_methods: time: point -long_name: Surface Downward Eastward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: tauu -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauv -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_northward_stress -units: Pa -cell_methods: time: point -long_name: Surface Downward Northward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: tauv -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -comment: includes both evaporation and sublimation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: hfls -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: hfss -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rlds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rlus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsdscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsdscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsuscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsuscs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rldscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_incoming_shortwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Incident Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsdt -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rlut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rlutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rsutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: prw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_water_vapor_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Water Vapor Path -comment: vertically integrated through the atmospheric column -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: prw -type: real -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: clt -type: real -!---------------------------------- -! - -!============ -variable_entry: clwvi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_condensed_water_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Condensed Water Path -comment: mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: clwvi -type: real -!---------------------------------- -! - -!============ -variable_entry: clivi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_ice_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Ice Water Path -comment: mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: clivi -type: real -!---------------------------------- -! - -!============ -variable_entry: rtmt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_downward_radiative_flux_at_top_of_atmosphere_model -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Net Downward Flux at Top of Model -comment: i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: rtmt -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: ccb -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_base -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Base -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ccb -type: real -!---------------------------------- -! - -!============ -variable_entry: cct -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_top -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Top -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: cct -type: real -!---------------------------------- -! - -!============ -variable_entry: ci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convection_time_fraction -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Fraction of Time Convection Occurs -comment: Fraction of time that convection occurs in the grid cell . -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: ci -type: real -!---------------------------------- -! - -!============ -variable_entry: sci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: shallow_convection_time_fraction -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Fraction of Time Shallow Convection Occurs -comment: Fraction of time that shallow convection occurs in the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: sci -type: real -!---------------------------------- -! - -!============ -variable_entry: fco2antt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2 -comment: This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: fco2antt -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2fos -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2 -comment: This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: fco2fos -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2nat -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources -comment: This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ""net ecosystem biospheric productivity"", for land, and ""air to sea CO2 flux"", for ocean.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: fco2nat -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: cltc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_cloud_area_fraction -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes only convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time1 -out_name: cltc -type: real -valid_min: 0.0 -valid_max: 100.0 -!---------------------------------- -! - -!============ -variable_entry: zfull -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: height_above_reference_ellipsoid -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Altitude of Model Full-Levels -comment: This is actual height above mean sea level, not geopotential height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: zfull -type: real -!---------------------------------- -! - -!============ -variable_entry: zhalf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: height_above_reference_ellipsoid -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Altitude of Model Half-Levels -comment: This is actual height above mean sea level, not geopotential height. This is actual height above mean sea level, not geopotential height. Includes both the top of the model atmosphere and surface levels. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: zhalf -type: real -!---------------------------------- -! - -!============ -variable_entry: pfull -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Pressure at Model Full-Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: pfull -type: real -!---------------------------------- -! - -!============ -variable_entry: phalf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Pressure at Model Half-Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: phalf -type: real -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: ta -type: real -!---------------------------------- -! - -!============ -variable_entry: h2o -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_water_in_air -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Mass Fraction of Water -comment: includes all phases of water -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: h2o -type: real -!---------------------------------- -! - -!============ -variable_entry: clws -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_stratiform_cloud_liquid_water_in_air -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Mass Fraction of Stratiform Cloud Liquid Water -comment: Calculated as the mass of stratiform cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: clws -type: real -!---------------------------------- -! - -!============ -variable_entry: clis -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_stratiform_cloud_ice_in_air -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Mass Fraction of Stratiform Cloud Ice -comment: Calculate as the mass of stratiform cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. Include precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: clis -type: real -!---------------------------------- -! - -!============ -variable_entry: clwc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_convective_cloud_liquid_water_in_air -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Mass Fraction of Convective Cloud Liquid Water -comment: Calculated as the mass of convective cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: clwc -type: real -!---------------------------------- -! - -!============ -variable_entry: clic -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_convective_cloud_ice_in_air -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Mass Fraction of Convective Cloud Ice -comment: Calculated as the mass of convective cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: clic -type: real -!---------------------------------- -! - -!============ -variable_entry: reffclws -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_liquid_water_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Stratiform Cloud Liquid Water -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffclws -type: real -!---------------------------------- -! - -!============ -variable_entry: reffclis -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_ice_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Stratiform Cloud Ice -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffclis -type: real -!---------------------------------- -! - -!============ -variable_entry: reffclwc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_convective_cloud_liquid_water_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Convective Cloud Liquid Water -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffclwc -type: real -!---------------------------------- -! - -!============ -variable_entry: reffclic -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_convective_cloud_ice_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Convective Cloud Ice -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffclic -type: real -!---------------------------------- -! - -!============ -variable_entry: grpllsprof -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: large_scale_graupel_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Graupel Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: grpllsprof -type: real -!---------------------------------- -! - -!============ -variable_entry: prcprof -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_rainfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Rainfall Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: prcprof -type: real -!---------------------------------- -! - -!============ -variable_entry: prlsprof -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: large_scale_rainfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Rainfall Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: prlsprof -type: real -!---------------------------------- -! - -!============ -variable_entry: prsnc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_snowfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Snowfall Flux -comment: convective precipitation of all forms of water in the solid phase. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: prsnc -type: real -!---------------------------------- -! - -!============ -variable_entry: prlsns -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: large_scale_snowfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Snowfall Flux -comment: large-scale precipitation of all forms of water in the solid phase. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time1 -out_name: prlsns -type: real -!---------------------------------- -! - -!============ -variable_entry: reffgrpls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_graupel_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Stratiform Graupel -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffgrpls -type: real -!---------------------------------- -! - -!============ -variable_entry: reffrainc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_convective_cloud_rain_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Convective Rainfall -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffrainc -type: real -!---------------------------------- -! - -!============ -variable_entry: reffrains -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_rain_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Stratiform Rainfall -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffrains -type: real -!---------------------------------- -! - -!============ -variable_entry: reffsnowc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_convective_cloud_snow_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Convective Snowfall -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffsnowc -type: real -!---------------------------------- -! - -!============ -variable_entry: reffsnows -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: effective_radius_of_stratiform_cloud_snow_particle -units: m -cell_methods: time: point -cell_measures: area: areacella -long_name: Hydrometeor Effective Radius of Stratiform Snowfall -comment: This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: reffsnows -type: real -!---------------------------------- -! - -!============ -variable_entry: dtaus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_stratiform_cloud -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Cloud Optical Depth -comment: This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: dtaus -type: real -!---------------------------------- -! - -!============ -variable_entry: dtauc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_convective_cloud -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Cloud Optical Depth -comment: This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: dtauc -type: real -!---------------------------------- -! - -!============ -variable_entry: dems -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: stratiform_cloud_longwave_emissivity -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Cloud Emissivity -comment: This is the in-cloud emissivity obtained by considering only the cloudy portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: dems -type: real -!---------------------------------- -! - -!============ -variable_entry: demc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_cloud_longwave_emissivity -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Cloud Emissivity -comment: This is the in-cloud emissivity obtained by considering only the cloudy portion of the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: demc -type: real -!---------------------------------- -! - -!============ -variable_entry: clc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: clc -type: real -!---------------------------------- -! - -!============ -variable_entry: cls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: stratiform_cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Stratiform Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time1 -out_name: cls -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfDay b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfDay deleted file mode 100644 index aba44f9c0a..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfDay +++ /dev/null @@ -1,1623 +0,0 @@ -table_id: Table cfDay -modeling_realm: atmos - -frequency: day - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 1.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel alevhalf - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: plev7 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -tolerance: 0.001 -type: double -requested: 90000. 74000. 62000. 50000. 37500. 24500. 9000. ! space-separated list of requested coordinates -requested_bounds: 100000. 80000. 80000. 68000. 68000. 56000. 56000. 44000. 44000. 31000. 31000. 18000. 18000. 0. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: p500 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 50000. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p700 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 70000. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: alt40 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: altitude -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: altitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: alt40 -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 240. 720. 1200. 1680. 2160. 2640. 3120. 3600. 4080. 4560. 5040. 5520. 6000. 6480. 6960. 7440. 7920. 8400. 8880. 9360. 9840. 10320. 10800. 11280. 11760. 12240. 12720. 13200. 13680. 14160. 14640. 15120. 15600. 16080. 16560. 17040. 17520. 18000. 18480. 18960. ! space-separated list of requested coordinates -requested_bounds: 0. 480. 480. 960. 960. 1440. 1440. 1920. 1920. 2400. 2400. 2880. 2880. 3360. 3360. 3840. 3840. 4320. 4320. 4800. 4800. 5280. 5280. 5760. 5760. 6240. 6240. 6720. 6720. 7200. 7200. 7680. 7680. 8160. 8160. 8640. 8640. 9120. 9120. 9600. 9600. 10080. 10080. 10560. 10560. 11040. 11040. 11520. 11520. 12000. 12000. 12480. 12480. 12960. 12960. 13440. 13440. 13920. 13920. 14400. 14400. 14880. 14880. 15360. 15360. 15840. 15840. 16320. 16320. 16800. 16800. 17280. 17280. 17760. 17760. 18240. 18240. 18720. 18720. 19200. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: tau -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_cloud -units: 1 -long_name: cloud optical thickness -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: tau -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0.15 0.8 2.45 6.5 16.2 41.5 100. ! space-separated list of requested coordinates -requested_bounds: 0.0 0.3 0.3 1.3 1.3 3.6 3.6 9.4 9.4 23.0 23.0 60.0 60.0 100000. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sza5 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: solar_zenith_angle -units: degree -long_name: solar zenith angle -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: sza -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0. 20. 40. 60. 80. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Air Pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ps -type: real -!---------------------------------- -! - -!============ -variable_entry: rsdt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_incoming_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Incident Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdt -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsdscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsdscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsuscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsuscs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rldscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clt -type: real -!---------------------------------- -! - -!============ -variable_entry: clwvi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_condensed_water_content -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Condensed Water Path -comment: calculate mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clwvi -type: real -!---------------------------------- -! - -!============ -variable_entry: clivi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_ice_content -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ice Water Path -comment: calculate 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). This includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clivi -type: real -!---------------------------------- -! - -!============ -variable_entry: wap500 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -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: at 500 hPa level; commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p500 -out_name: wap500 -type: real -!---------------------------------- -! - -!============ -variable_entry: ta700 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p700 -out_name: ta700 -type: real -!---------------------------------- -! - -!============ -variable_entry: ccb -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_base -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Base -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ccb -type: real -!---------------------------------- -! - -!============ -variable_entry: cct -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_top -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Top -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cct -type: real -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Precipitation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prc -type: real -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfls -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfss -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: cltisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Total Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: albisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_albedo -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Mean Cloud Albedo -comment: time-means are weighted by the ISCCP Total Cloud Fraction - see http://cfmip.metoffice.com/COSP.html -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: albisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: pctisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_cloud_top -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Mean Cloud Top Pressure -comment: time-means are weighted by the ISCCP Total Cloud Fraction - see http://cfmip.metoffice.com/COSP.html -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pctisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: parasolRefl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_bidirectional_reflectance -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: PARASOL Reflectance -comment: Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude sza5 time -out_name: parasolRefl -type: real -!---------------------------------- -! - -!============ -variable_entry: cltcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: cllcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Low Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cllcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clmcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Mid Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clmcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clhcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO High Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clhcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: mean -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: ua -type: real -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: mean -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: va -type: real -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: ta -type: real -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: hus -type: real -!---------------------------------- -! - -!============ -variable_entry: wap -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -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: commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: wap -type: real -!---------------------------------- -! - -!============ -variable_entry: zg -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: geopotential_height -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Geopotential Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: zg -type: real -!---------------------------------- -! - -!============ -variable_entry: hur -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: hur -type: real -!---------------------------------- -! - -!============ -variable_entry: cl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Cloud Area Fraction in Atmosphere Layer -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cl -type: real -!---------------------------------- -! - -!============ -variable_entry: clw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_liquid_water_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Cloud Liquid Water -comment: Calculated 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 cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clw -type: real -!---------------------------------- -! - -!============ -variable_entry: cli -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_ice_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Cloud Ice -comment: 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. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cli -type: real -!---------------------------------- -! - -!============ -variable_entry: mc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_net_upward_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Mass Flux -comment: The net mass flux should represent the difference between the updraft and downdraft components. This is calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: mc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: clcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 time -out_name: clcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev7 tau time -out_name: clisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: pfull -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Pressure on Model Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: pfull -type: real -!---------------------------------- -! - -!============ -variable_entry: phalf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Pressure on Model Half-Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: phalf -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfMon b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfMon deleted file mode 100644 index 5a16f24d42..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfMon +++ /dev/null @@ -1,2776 +0,0 @@ -table_id: Table cfMon -modeling_realm: atmos - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: alevel alevhalf - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: plev7 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -tolerance: 0.001 -type: double -requested: 90000. 74000. 62000. 50000. 37500. 24500. 9000. ! space-separated list of requested coordinates -requested_bounds: 100000. 80000. 80000. 68000. 68000. 56000. 56000. 44000. 44000. 31000. 31000. 18000. 18000. 0. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: p220 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 22000. ! of scalar (singleton) dimension -bounds_values: 44000. 0.0 ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p560 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 56000. ! of scalar (singleton) dimension -bounds_values: 68000. 44000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p840 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 84000. ! of scalar (singleton) dimension -bounds_values: 100000. 68000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: alt40 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: altitude -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: altitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: alt40 -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 240. 720. 1200. 1680. 2160. 2640. 3120. 3600. 4080. 4560. 5040. 5520. 6000. 6480. 6960. 7440. 7920. 8400. 8880. 9360. 9840. 10320. 10800. 11280. 11760. 12240. 12720. 13200. 13680. 14160. 14640. 15120. 15600. 16080. 16560. 17040. 17520. 18000. 18480. 18960. ! space-separated list of requested coordinates -requested_bounds: 0. 480. 480. 960. 960. 1440. 1440. 1920. 1920. 2400. 2400. 2880. 2880. 3360. 3360. 3840. 3840. 4320. 4320. 4800. 4800. 5280. 5280. 5760. 5760. 6240. 6240. 6720. 6720. 7200. 7200. 7680. 7680. 8160. 8160. 8640. 8640. 9120. 9120. 9600. 9600. 10080. 10080. 10560. 10560. 11040. 11040. 11520. 11520. 12000. 12000. 12480. 12480. 12960. 12960. 13440. 13440. 13920. 13920. 14400. 14400. 14880. 14880. 15360. 15360. 15840. 15840. 16320. 16320. 16800. 16800. 17280. 17280. 17760. 17760. 18240. 18240. 18720. 18720. 19200. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: tau -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_cloud -units: 1 -long_name: cloud optical thickness -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: tau -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0.15 0.8 2.45 6.5 16.2 41.5 100. ! space-separated list of requested coordinates -requested_bounds: 0.0 0.3 0.3 1.3 1.3 3.6 3.6 9.4 9.4 23.0 23.0 60.0 60.0 100000. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sza5 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: solar_zenith_angle -units: degree -long_name: solar zenith angle -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: sza -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0. 20. 40. 60. 80. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! -! -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: mean -long_name: Surface Air Pressure -comment: not, in general, the same as mean sea-level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: ps -type: real -! - -!============ -variable_entry: rlu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Longwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rlu -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Shortwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsu -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rld -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Longwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rld -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Shortwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsd -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlucs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Clear-Sky Longwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rlucs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsucs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Clear-Sky Shortwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsucs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Clear-Sky Longwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rldcs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Clear-Sky Shortwave Radiation -comment: Includes also the fluxes at the surface and TOA. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsdcs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: ta -type: real -valid_min: 157.1 -valid_max: 336.3 -ok_min_mean_abs: 194.3 -ok_max_mean_abs: 299.8 -!---------------------------------- -! - -!============ -variable_entry: tnt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnt -type: real -!---------------------------------- -! - -!============ -variable_entry: tnta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_advection -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnta -type: real -!---------------------------------- -! - -!============ -variable_entry: tntmp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_model_physics -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature due to Diabatic Processes -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tntmp -type: real -!---------------------------------- -! - -!============ -variable_entry: tntscpbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tntscpbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tntr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_radiative_heating -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature due to Radiative Heating -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tntr -type: real -!---------------------------------- -! - -!============ -variable_entry: tntc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_convection -units: K s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Air Temperature due to Moist Convection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tntc -type: real -!---------------------------------- -! - -!============ -variable_entry: hur -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Relative Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: hur -type: real -valid_min: -2.642 -valid_max: 135.7 -ok_min_mean_abs: -10.31 -ok_max_mean_abs: 97 -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: hus -type: real -valid_min: -0.000299 -valid_max: 0.02841 -ok_min_mean_abs: -0.0003539 -ok_max_mean_abs: 0.01041 -!---------------------------------- -! - -!============ -variable_entry: tnhus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhus -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusa -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_advection -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhusa -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_convection -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity due to Convection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhusc -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_diffusion -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity due to Diffusion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhusd -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusscpbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity due to Stratiform Cloud Condensation and Evaporation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhusscpbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusmp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_model_physics -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Specific Humidity due to Model Physics -comment: This includes sources and sinks from parametrized physics (e.g. convection, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics and diffusion. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnhusmp -type: real -!---------------------------------- -! - -!============ -variable_entry: eviscu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_momentum_diffusivity -units: m2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Eddy Viscosity Coefficients for Momentum -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: eviscu -type: real -!---------------------------------- -! - -!============ -variable_entry: evisct -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_heat_diffusivity -units: m2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Eddy Diffusivity Coefficients for Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: evisct -type: real -!---------------------------------- -! - -!============ -variable_entry: clc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clc -type: real -!---------------------------------- -! - -!============ -variable_entry: clwc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_convective_cloud_liquid_water_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Convective Cloud Liquid Water -comment: Calculated as the mass of convective cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clwc -type: real -!---------------------------------- -! - -!============ -variable_entry: clic -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_convective_cloud_ice_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Convective Cloud Ice -comment: Calculated as the mass of convective cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clic -type: real -!---------------------------------- -! - -!============ -variable_entry: cls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: stratiform_cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Stratiform Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: cls -type: real -!---------------------------------- -! - -!============ -variable_entry: clws -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_stratiform_cloud_liquid_water_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Stratiform Cloud Liquid Water -comment: Calculated as the mass of stratiform cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clws -type: real -!---------------------------------- -! - -!============ -variable_entry: clis -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_stratiform_cloud_ice_in_air -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Mass Fraction of Stratiform Cloud Ice -comment: Calculated as the mass of stratiform cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: clis -type: real -!---------------------------------- -! - -!============ -variable_entry: mcu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_updraft_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Updraft Convective Mass Flux -comment: Calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: mcu -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: mcd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_downdraft_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downdraft Convective Mass Flux -comment: Calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: mcd -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: smc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_net_upward_shallow_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Shallow Convective Mass Flux -comment: The net mass flux represents the difference between the updraft and downdraft components. For models with a distinct shallow convection scheme, this is calculated as convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: smc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: dmc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_net_upward_deep_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Deep Convective Mass Flux -comment: The net mass flux represents the difference between the updraft and downdraft components. This is calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: dmc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: tnsclw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclw -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwcm -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_cloud_microphysics -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Cloud Microphysics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwcm -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_boundary_layer_mixing -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Boundary Layer Mixing -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwbfpcli -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_bergeron_findeisen_process_to_cloud_ice -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Bergeron Findeisen Process To Cloud Ice -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwbfpcli -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwce -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_condensation_and_evaporation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Condensation and Evaporation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwce -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwcd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_convective_detrainment -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water Due to Convective Detrainment -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwcd -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwhon -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_homogeneous_nucleation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Homogeneous Nucleation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwhon -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwhen -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_heterogeneous_nucleation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Heterogeneous Nucleation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwhen -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwri -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_riming -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Riming -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwri -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwar -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_accretion_to_rain -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Accretion to Rain -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwar -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_accretion_to_snow -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Accretion to Snow -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwas -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwmi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_melting_from_cloud_ice -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Melting From Cloud Ice -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwmi -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwac -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_autoconversion -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Autoconversion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwac -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclwa -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_advection -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclwa -type: real -!---------------------------------- -! - -!============ -variable_entry: tnscli -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice In Air -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnscli -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclicm -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_cloud_microphysics -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Cloud Microphysics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclicm -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclibl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_boundary_layer_mixing -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Boundary Layer Mixing -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclibl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclibfpcl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_bergeron_findeisen_process_from_cloud_liquid -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Bergeron Findeisen Process from Cloud Liquid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclibfpcl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclicd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_convective_detrainment -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice Due Convective Detrainment -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclicd -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclihon -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_homogeneous_nucleation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Homogeneous Nucleation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclihon -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclihencl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_heterogeneous_nucleation_from_cloud_liquid_water -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Heterogeneous Nucleation From Cloud Liquid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclihencl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclihenv -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_heterogeneous_nucleation_from_water_vapor -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Heterogeneous Nucleation From Water Vapor -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclihenv -type: real -!---------------------------------- -! - -!============ -variable_entry: tnscliricl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_riming_from_cloud_liquid_water -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Riming From Cloud Liquid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnscliricl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclirir -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_riming_from_rain -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Riming From Rain -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclirir -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclids -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_deposition_and_sublimation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Deposition and Sublimation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclids -type: real -!---------------------------------- -! - -!============ -variable_entry: tnscliag -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_aggregation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Aggregation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnscliag -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclias -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_accretion_to_snow -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Accretion to Snow -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclias -type: real -!---------------------------------- -! - -!============ -variable_entry: tnscliemi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_evaporation_of_melting_ice -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Evaporation of Melting Ice -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnscliemi -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclimr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_melting_to_rain -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Melting to Rain -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclimr -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclimcl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_melting_to_cloud_liquid_water -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Melting to Cloud Liquid -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclimcl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnscliif -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_icefall -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Icefall -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnscliif -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsclia -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_advection -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Ice due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsclia -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccw -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwcm -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_cloud_microphysics -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air Due To Cloud Microphysics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwcm -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_boundary_layer_mixing -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air Due To Boundary Layer Mixing -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwce -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_condensation_and_evaporation -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Condensation and Evaporation -comment: condensed water includes both liquid and ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwce -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwacr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_autoconversion_to_rain -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Autoconversion to Rain -comment: condensed water includes both liquid and ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwacr -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwacs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_autoconversion_to_snow -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Autoconversion to Snow -comment: condensed water includes both liquid and ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwacs -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwif -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_icefall -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Icefall -comment: condensed water includes both liquid and ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwif -type: real -!---------------------------------- -! - -!============ -variable_entry: tnsccwa -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_advection -units: s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Advection -comment: condensed water includes both liquid and ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevel time -out_name: tnsccwa -type: real -!---------------------------------- -! - -!============ -variable_entry: rsut4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation in 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsut4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlut4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlut4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsutcs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsutcs4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlutcs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlutcs4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlu4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rlu4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsu4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Shortwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsu4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rld4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rld4co2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsd4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Shortwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsd4co2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlucs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rlucs4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsucs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Upwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsucs4co2 -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldcs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rldcs4co2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdcs4co2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Downwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alevhalf time -out_name: rsdcs4co2 -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: cltisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: albisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_albedo -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Mean Cloud Albedo -comment: time-means weighted by the ISCCP Total Cloud Fraction - see http://cfmip.metoffice.com/COSP.html -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: albisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: pctisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_cloud_top -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Mean Cloud Top Pressure -comment: time-means weighted by the ISCCP Total Cloud Fraction - see http://cfmip.metoffice.com/COSP.html -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pctisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: clisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: isccp_cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev7 tau time -out_name: clisccp -type: real -!---------------------------------- -! - -!============ -variable_entry: cltcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: cllcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Low Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p840 -out_name: cllcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clmcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Mid Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p560 -out_name: clmcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clhcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO High Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p220 -out_name: clhcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 time -out_name: clcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: parasolRefl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_bidirectional_reflectance -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: PARASOL Reflectance -comment: This is reflectance as seen at the top of the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude sza5 time -out_name: parasolRefl -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfOff b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfOff deleted file mode 100644 index 106cca4b61..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfOff +++ /dev/null @@ -1,488 +0,0 @@ -table_id: Table cfOff -modeling_realm: atmos - -frequency: mon - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 30.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: p220 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 22000. ! of scalar (singleton) dimension -bounds_values: 44000. 0.0 ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p560 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 56000. ! of scalar (singleton) dimension -bounds_values: 68000. 44000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: p840 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -type: double -value: 84000. ! of scalar (singleton) dimension -bounds_values: 100000. 68000. ! of scalar (singleton) dimension bounds -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: alt40 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: altitude -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: altitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: alt40 -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 240. 720. 1200. 1680. 2160. 2640. 3120. 3600. 4080. 4560. 5040. 5520. 6000. 6480. 6960. 7440. 7920. 8400. 8880. 9360. 9840. 10320. 10800. 11280. 11760. 12240. 12720. 13200. 13680. 14160. 14640. 15120. 15600. 16080. 16560. 17040. 17520. 18000. 18480. 18960. ! space-separated list of requested coordinates -requested_bounds: 0. 480. 480. 960. 960. 1440. 1440. 1920. 1920. 2400. 2400. 2880. 2880. 3360. 3360. 3840. 3840. 4320. 4320. 4800. 4800. 5280. 5280. 5760. 5760. 6240. 6240. 6720. 6720. 7200. 7200. 7680. 7680. 8160. 8160. 8640. 8640. 9120. 9120. 9600. 9600. 10080. 10080. 10560. 10560. 11040. 11040. 11520. 11520. 12000. 12000. 12480. 12480. 12960. 12960. 13440. 13440. 13920. 13920. 14400. 14400. 14880. 14880. 15360. 15360. 15840. 15840. 16320. 16320. 16800. 16800. 17280. 17280. 17760. 17760. 18240. 18240. 18720. 18720. 19200. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: scatratio -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: backscattering_ratio -units: 1 -long_name: lidar backscattering ratio -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: scatratio -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0.005 0.605 2.1 4. 6. 8.5 12.5 17.5 22.5 27.5 35. 45. 55. 70. 50040. ! space-separated list of requested coordinates -requested_bounds: 0. 0.01 0.01 1.2 1.2 3. 3. 5. 5. 7. 7. 10. 10. 15. 15. 20. 20. 25. 25. 30. 30. 40. 40. 50. 50. 60. 60. 80. 80. 100000. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: dbze -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: equivalent_reflectivity_factor -units: dBZ -long_name: CloudSat simulator equivalent radar reflectivity factor -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: dbze -stored_direction: increasing -tolerance: 0.001 -type: double -requested: -47.5 -42.5 -37.5 -32.5 -27.5 -22.5 -17.5 -12.5 -7.5 -2.5 2.5 7.5 12.5 17.5 22.5 ! space-separated list of requested coordinates -requested_bounds: -50. -45. -45. -40. -40. -35. -35. -30. -30. -25. -25. -20. -20. -15. -15. -10. -10. -5. -5. 0. 0. 5. 5. 10. 10. 15. 15. 20. 20. 25. ! space-separated list of requested coordinate bounds -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: sza5 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: solar_zenith_angle -units: degree -long_name: solar zenith angle -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: sza -stored_direction: increasing -tolerance: 0.001 -type: double -requested: 0. 20. 40. 60. 80. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - -!============ -variable_entry: clcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 time -out_name: clcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clcalipso2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Cloud Fraction Undetected by CloudSat -comment: Clouds detected by CALIPSO but below the detectability threshold of CloudSat -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 time -out_name: clcalipso2 -type: real -!---------------------------------- -! - -!============ -variable_entry: cfadDbze94 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: CloudSat Radar Reflectivity -comment: CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions . -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 dbze time -out_name: cfadDbze94 -type: real -!---------------------------------- -! - -!============ -variable_entry: cfadLidarsr532 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Scattering Ratio -comment: CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude alt40 scatratio time -out_name: cfadLidarsr532 -type: real -!---------------------------------- -! - -!============ -variable_entry: parasolRefl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_bidirectional_reflectance -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: PARASOL Reflectance -comment: Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude sza5 time -out_name: parasolRefl -type: real -!---------------------------------- -! - -!============ -variable_entry: cltcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Total Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: cllcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Low Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p840 -out_name: cllcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clmcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO Mid Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p560 -out_name: clmcalipso -type: real -!---------------------------------- -! - -!============ -variable_entry: clhcalipso -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: CALIPSO High Level Cloud Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time p220 -out_name: clhcalipso -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfSites b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfSites deleted file mode 100644 index afe49d3977..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_cfSites +++ /dev/null @@ -1,2200 +0,0 @@ -table_id: Table cfSites -! -! WARNING: Although this table define variables as function of longitude and latitude -! the user MUST use a 'grid' (using the 'site' index in CMIP5_grids) -! in order to define correctly the location of each site. -! -modeling_realm: atmos - -frequency: subhr - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.017361 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. -approx_interval_warning: 0.25 ! Level at which a warning is issued because the time axis values are too far appart from the official interval -approx_interval_error: 0.75 ! Level at which an error is issued because the time axis values are too far appart from the official interval - -generic_levels: alevel alevhalf - -!============ -axis_entry: time1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height2m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 10.0 -stored_direction: increasing -type: double -value: 2. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height10m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 30.0 -stored_direction: increasing -type: double -value: 10. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: site -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -long_name: site index -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: site -type: integer -must_have_bounds: no -index_only: ok -must_call_cmor_grid: yes - -!---------------------------------- -! - -!============ -axis_entry: smooth_level -!============ -! -! This coordinate is a hybrid height coordinate with units of meters (m). -! It increases upward. -! The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. -! Note that in the netCDF file the variable will be named "lev", not smooth_level. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sleve_coordinate -units: m -axis: Z -positive: up -long_name: atmosphere smooth level vertical (SLEVE) coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: -200. -valid_max: 800000. -formula: z = a*ztop + b1*zsurf1 + b2*zsurf2 -z_factors: a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2 -!---------------------------------- -! -!============ -axis_entry: natural_log_pressure -!============ -! -!This coordinate is dimensionless and varies from near 0 at the surface and increases upward. -! The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure. -! Note that in the netCDF file the variable will be named "lev", not natural_log_pressure. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_ln_pressure_coordinate -axis: Z -long_name: atmosphere natural log pressure coordinate -positive: down -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 20. -formula: p = p0 * exp(-lev) -z_factors: p0: p0 lev: lev -z_bounds_factors: p0: p0 lev: lev_bnds -!---------------------------------- -! -!============ -axis_entry: standard_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface. -! The values of sigma(k), which appears in the formula below, should be stored as standard_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_sigma_coordinate -axis: Z -positive: down -long_name: sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ptop + sigma*(ps - ptop) -z_factors: ptop: ptop sigma: lev ps: ps -z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: standard_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of a+ b, which appear in the formula below, should be stored as standard_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma. -! -!--------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = a*p0 + b*ps -z_factors: p0: p0 a: a b: b ps: ps -z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: alternate_hybrid_sigma -!============ -! -! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface. -! The values of ap/p0 + b, which appear in the formula below, should be stored as alternate_hybrid_sigma. -! Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_sigma_pressure_coordinate -units: 1 -axis: Z -positive: down -long_name: hybrid sigma pressure coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: 0.0 -valid_max: 1.0 -formula: p = ap + b*ps -z_factors: ap: ap b: b ps: ps -z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps -!---------------------------------- -! -! -!============ -axis_entry: hybrid_height -!============ -! -! This coordinate has dimension of meters (m) and increases upward. -! The values of a which appear in the formula below, should be stored as hybrid_height. -! Note that in the netCDF file the variable will be named "lev", not hybrid_height. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_hybrid_height_coordinate -units: m -axis: Z -positive: up -long_name: hybrid height coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0.0 -formula: z = a + b*orog -z_factors: a: lev b: b orog: orog -z_bounds_factors: a: lev_bnds b: b_bnds orog: orog -!---------------------------------- -! -! *************************************************************** -! -! Vertical coordinate formula terms: -! -! *************************************************************** -! -! -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Report here the height above the present-day geoid. Over ocean, report as 0.0 -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site -out_name: orog -type: real -valid_min: -700 -valid_max: 1.00E+04 -!---------------------------------- -! -! -!============ -variable_entry: p0 -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: reference pressure -units: Pa -!---------------------------------- -! -! -!============ -variable_entry: ptop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: pressure at top of model -units: Pa -!---------------------------------- -! -! -! -!============ -variable_entry: a -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: a_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: a(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: b_bnds -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: b(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ap_bnds -!============ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: ap(k+1/2) -units: Pa -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: alevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: ztop -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: height of top of model -units: m -!---------------------------------- -! -! -! - -!============ -variable_entry: tas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height2m -out_name: tas -type: real -!---------------------------------- -! - -!============ -variable_entry: ts -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Temperature -comment: ""skin"" temperature (i.e., SST for open ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: ts -type: real -!---------------------------------- -! - -!============ -variable_entry: psl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Sea Level Pressure -comment: not, in general, the same as surface pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: psl -type: real -!---------------------------------- -! - -!============ -variable_entry: ps -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_air_pressure -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Air Pressure -comment: not, in general, the same as mean sea-level pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: ps -type: real -!---------------------------------- -! - -!============ -variable_entry: uas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: point -long_name: Eastward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height10m -out_name: uas -type: real -!---------------------------------- -! - -!============ -variable_entry: vas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: point -long_name: Northward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height10m -out_name: vas -type: real -!---------------------------------- -! - -!============ -variable_entry: sfcWind -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wind_speed -units: m s-1 -cell_methods: time: point -long_name: Near-Surface Wind Speed -comment: This is the mean of the speed, not the speed computed from the mean u and v components of wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height10m -out_name: sfcWind -type: real -!---------------------------------- -! - -!============ -variable_entry: hurs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height2m -out_name: hurs -type: real -!---------------------------------- -! - -!============ -variable_entry: huss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Near-Surface Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 height2m -out_name: huss -type: real -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Precipitation -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: pr -type: real -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Snowfall Flux -comment: at surface; includes precipitation of all forms of water in the solid phase -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: prsn -type: real -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Convective Precipitation -comment: at surface; includes both liquid and solid phases. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: prc -type: real -!---------------------------------- -! - -!============ -variable_entry: evspsbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: water_evaporation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Evaporation -comment: at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: evspsbl -type: real -!---------------------------------- -! - -!============ -variable_entry: sbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_and_ice_sublimation_flux -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Snow and Ice Sublimation Flux -comment: The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: sbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tauu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_eastward_stress -units: Pa -cell_methods: time: point -long_name: Surface Downward Eastward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: tauu -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tauv -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downward_northward_stress -units: Pa -cell_methods: time: point -long_name: Surface Downward Northward Wind Stress -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: tauv -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -comment: includes both evaporation and sublimation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: hfls -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: hfss -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rlds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rlus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsdscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsdscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsuscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsuscs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Downwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rldscs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_incoming_shortwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Incident Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsdt -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rlut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rlutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rsutcs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: prw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_water_vapor_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Water Vapor Path -comment: vertically integrated through the atmospheric column -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: prw -type: real -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: point -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: clt -type: real -!---------------------------------- -! - -!============ -variable_entry: clwvi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_condensed_water_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Condensed Water Path -comment: mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: clwvi -type: real -!---------------------------------- -! - -!============ -variable_entry: clivi -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_cloud_ice_content -units: kg m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Ice Water Path -comment: mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: clivi -type: real -!---------------------------------- -! - -!============ -variable_entry: rtmt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: net_downward_radiative_flux_at_top_of_atmosphere_model -units: W m-2 -cell_methods: time: point -cell_measures: area: areacella -long_name: Net Downward Flux at Top of Model -comment: i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: rtmt -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: ccb -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_base -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Base -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: ccb -type: real -!---------------------------------- -! - -!============ -variable_entry: cct -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_convective_cloud_top -units: Pa -cell_methods: time: point -cell_measures: area: areacella -long_name: Air Pressure at Convective Cloud Top -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: cct -type: real -!---------------------------------- -! - -!============ -variable_entry: ci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convection_time_fraction -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Fraction of Time Convection Occurs -comment: Fraction of time that convection occurs in the grid cell . -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: ci -type: real -!---------------------------------- -! - -!============ -variable_entry: sci -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: shallow_convection_time_fraction -units: 1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Fraction of Time Shallow Convection Occurs -comment: Fraction of time that shallow convection occurs in the grid cell. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: sci -type: real -!---------------------------------- -! - -!============ -variable_entry: fco2antt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2 -comment: This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: fco2antt -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2fos -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2 -comment: This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: fco2fos -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: fco2nat -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources -units: kg m-2 s-1 -cell_methods: time: point -cell_measures: area: areacella -long_name: Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources -comment: This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ""net ecosystem biospheric productivity"", for land, and ""air to sea CO2 flux"", for ocean.) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site time1 -out_name: fco2nat -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: cl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction_in_atmosphere_layer -units: % -cell_methods: time: point -long_name: Cloud Area Fraction -comment: Includes both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: cl -type: real -!---------------------------------- -! - -!============ -variable_entry: clw -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_liquid_water_in_air -units: 1 -cell_methods: time: point -long_name: Mass Fraction of Cloud Liquid Water -comment: Includes both large-scale and convective cloud. This is 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 cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: clw -type: real -!---------------------------------- -! - -!============ -variable_entry: cli -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: mass_fraction_of_cloud_ice_in_air -units: 1 -cell_methods: time: point -long_name: Mass Fraction of Cloud Ice -comment: Includes both large-scale and convective cloud. This is 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. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: cli -type: real -!---------------------------------- -! - -!============ -variable_entry: mc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_net_upward_convective_mass_flux -units: kg m-2 s-1 -cell_methods: time: point -long_name: Convective Mass Flux -comment: The net mass flux should represent the difference between the updraft and downdraft components. This is calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the updrafts). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: mc -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: point -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: ta -type: real -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: point -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: ua -type: real -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: point -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: va -type: real -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: point -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: hus -type: real -!---------------------------------- -! - -!============ -variable_entry: hur -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: point -long_name: Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: hur -type: real -!---------------------------------- -! - -!============ -variable_entry: wap -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: lagrangian_tendency_of_air_pressure -units: Pa s-1 -cell_methods: time: point -long_name: omega (=dp/dt) -comment: commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: wap -type: real -!---------------------------------- -! - -!============ -variable_entry: zg -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: geopotential_height -units: m -cell_methods: time: point -long_name: Geopotential Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: zg -type: real -!---------------------------------- -! - -!============ -variable_entry: rlu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -long_name: Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rlu -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -long_name: Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rsu -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rld -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: point -long_name: Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rld -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: point -long_name: Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rsd -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlucs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -long_name: Upwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rlucs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsucs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -long_name: Upwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rsucs -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rldcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_longwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -long_name: Downwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rldcs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsdcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: downwelling_shortwave_flux_in_air_assuming_clear_sky -units: W m-2 -cell_methods: time: point -long_name: Downwelling Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: rsdcs -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: tnt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnt -type: real -!---------------------------------- -! - -!============ -variable_entry: tnta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_advection -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnta -type: real -!---------------------------------- -! - -!============ -variable_entry: tntmp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_model_physics -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature due to Diabatic Processes -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tntmp -type: real -!---------------------------------- -! - -!============ -variable_entry: tntscpbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature due to Stratiform Cloud Condensation and Evaporation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tntscpbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tntr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_radiative_heating -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature due to Radiative Heating -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tntr -type: real -!---------------------------------- -! - -!============ -variable_entry: tntc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_air_temperature_due_to_convection -units: K s-1 -cell_methods: time: point -long_name: Tendency of Air Temperature due to Moist Convection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tntc -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhus -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusa -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_advection -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity due to Advection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhusa -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_convection -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity due to Convection -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhusc -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusd -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_diffusion -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity due to Diffusion -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhusd -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusscpbl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity due to Stratiform Cloud Condensation and Evaporation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhusscpbl -type: real -!---------------------------------- -! - -!============ -variable_entry: tnhusmp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: tendency_of_specific_humidity_due_to_model_physics -units: s-1 -cell_methods: time: point -long_name: Tendency of Specific Humidity due to Model Physics -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: tnhusmp -type: real -!---------------------------------- -! - -!============ -variable_entry: evu -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_momentum_diffusivity -units: m2 s-1 -cell_methods: time: point -long_name: Eddy Viscosity Coefficient for Momentum Variables -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: evu -type: real -!---------------------------------- -! - -!============ -variable_entry: edt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: atmosphere_heat_diffusivity -units: m2 s-1 -cell_methods: time: point -long_name: Eddy Diffusivity Coefficient for Temperature Variable -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: edt -type: real -!---------------------------------- -! - -!============ -variable_entry: pfull -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: point -long_name: Pressure on Model Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevel site time1 -out_name: pfull -type: real -!---------------------------------- -! - -!============ -variable_entry: phalf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -cell_methods: time: point -long_name: Pressure on Model Half-Levels -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: alevhalf site time1 -out_name: phalf -type: real -!---------------------------------- -! - -!============ -variable_entry: longitude -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -long_name: Longitude -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site -out_name: lon -type: real -valid_min: 0.0 -valid_max: 360.0 -!---------------------------------- -! - -!============ -variable_entry: latitude -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -long_name: Latitude -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: site -out_name: lat -type: real -valid_min: -90.0 -valid_max: 90.0 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_day b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_day deleted file mode 100644 index 88a568109f..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_day +++ /dev/null @@ -1,1131 +0,0 @@ -table_id: Table day -modeling_realm: atmos - -frequency: day - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 1.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: plev8 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -stored_direction: decreasing -tolerance: 0.001 -type: double -requested: 100000. 85000. 70000. 50000. 25000. 10000. 5000. 1000. ! space-separated list of requested coordinates -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: height2m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 10.0 -stored_direction: increasing -type: double -value: 2. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: height10m -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: height -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: up ! up or down (default: undeclared) -long_name: height -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: height -valid_min: 1.0 -valid_max: 30.0 -stored_direction: increasing -type: double -value: 10. ! of scalar (singleton) dimension -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: sdepth1 -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: depth -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: depth -valid_min: 0.0 -valid_max: 0.2 -stored_direction: increasing -type: double -value: 0.05 ! of scalar (singleton) dimension -bounds_values: 0.0 0.1 ! of scalar (singleton) dimension bounds -must_have_bounds: yes -!---------------------------------- -! - -!============ -variable_entry: huss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: huss -type: real -!---------------------------------- -! - -!============ -variable_entry: tasmin -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: minimum -cell_measures: area: areacella -long_name: Daily Minimum Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tasmin -type: real -!---------------------------------- -! - -!============ -variable_entry: tasmax -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: maximum -cell_measures: area: areacella -long_name: Daily Maximum Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tasmax -type: real -!---------------------------------- -! - -!============ -variable_entry: tas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: tas -type: real -!---------------------------------- -! - -!============ -variable_entry: pr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Precipitation -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: pr -type: real -!---------------------------------- -! - -!============ -variable_entry: psl -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_pressure_at_sea_level -units: Pa -cell_methods: time: mean -cell_measures: area: areacella -long_name: Sea Level Pressure -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: psl -type: real -!---------------------------------- -! - -!============ -variable_entry: sfcWind -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wind_speed -units: m s-1 -cell_methods: time: mean -long_name: Daily-Mean Near-Surface Wind Speed -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: sfcWind -type: real -!---------------------------------- -! - -!============ -variable_entry: tossq -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: square_of_sea_surface_temperature -units: K2 -cell_methods: time:mean -cell_measures: area: areacello -long_name: Square of Sea Surface Temperature -comment: square of temperature of liquid ocean, averaged over the day. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tossq -type: real -!---------------------------------- -! - -!============ -variable_entry: tos -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Surface Temperature -comment: temperature of liquid ocean. Note that the correct standard_name for this variable is ""sea_surface_temperature"", not ""surface_temperature"", but this was discovered too late to correct. To maintain consistency across CMIP5 models, the wrong standard_name will continue to be used. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tos -type: real -!---------------------------------- -! - -!============ -variable_entry: omldamax -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_mixed_layer_thickness_defined_by_mixing_scheme -units: m -cell_methods: time: maximum -cell_measures: area: areacello -long_name: Daily Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: omldamax -type: real -!---------------------------------- -! - -!============ -variable_entry: mrsos -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: moisture_content_of_soil_layer -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Moisture in Upper Portion of Soil Column -comment: the mass of water in all phases in a thin surface soil layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time sdepth1 -out_name: mrsos -type: real -!---------------------------------- -! - -!============ -variable_entry: rhs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: rhs -type: real -!---------------------------------- -! - -!============ -variable_entry: rhsmin -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: minimum -cell_measures: area: areacella -long_name: Surface Daily Minimum Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: rhsmin -type: real -!---------------------------------- -! - -!============ -variable_entry: rhsmax -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: maximum -cell_measures: area: areacella -long_name: Surface Daily Maximum Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height2m -out_name: rhsmax -type: real -!---------------------------------- -! - -!============ -variable_entry: snc -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Snow Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snc -type: real -!---------------------------------- -! - -!============ -variable_entry: clt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cloud_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Cloud Fraction -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: clt -type: real -!---------------------------------- -! - -!============ -variable_entry: tslsi -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Temperature Where Land or Sea Ice -comment: """skin"" temperature of all surfaces except open ocean. " -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tslsi -type: real -!---------------------------------- -! - -!============ -variable_entry: snw -!============ -modeling_realm: landIce land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_snow_amount -units: kg m-2 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Surface Snow Amount -comment: the mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as 0.0 where the land fraction is 0; excludes snow on vegetation canopy or on sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: snw -type: real -!---------------------------------- -! - -!============ -variable_entry: prc -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: convective_precipitation_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Convective Precipitation -comment: at surface; includes both liquid and solid phases. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prc -type: real -!---------------------------------- -! - -!============ -variable_entry: prsn -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: snowfall_flux -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Snowfall Flux -comment: at surface; includes precipitation of all forms of water in the solid phase -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prsn -type: real -!---------------------------------- -! - -!============ -variable_entry: mrro -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: runoff_flux -units: kg m-2 s-1 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Total Runoff -comment: "computed as the total runoff (including ""drainage"" through the base of the soil model) leaving the land portion of the grid cell divided by the land area in the grid cell." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: mrro -type: real -!---------------------------------- -! - -!============ -variable_entry: uas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: mean -long_name: Eastward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: uas -type: real -!---------------------------------- -! - -!============ -variable_entry: vas -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: mean -long_name: Northward Near-Surface Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: vas -type: real -!---------------------------------- -! - -!============ -variable_entry: sfcWindmax -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: wind_speed -units: m s-1 -cell_methods: time: maximum -long_name: Daily Maximum Near-Surface Wind Speed -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time height10m -out_name: sfcWindmax -type: real -!---------------------------------- -! - -!============ -variable_entry: hfls -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_latent_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Latent Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfls -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: hfss -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upward_sensible_heat_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upward Sensible Heat Flux -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: hfss -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rlus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_longwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rsds -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_downwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Downwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsds -type: real -positive: down -!---------------------------------- -! - -!============ -variable_entry: rsus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_upwelling_shortwave_flux_in_air -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsus -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -comment: at the top of the atmosphere. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlut -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: usi -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_x_velocity -units: m s-1 -cell_methods: time: mean -long_name: X-Component of Sea Ice Velocity -comment: "Reported as ""missing"" in regions free of sea ice." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: usi -type: real -!---------------------------------- -! - -!============ -variable_entry: vsi -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_y_velocity -units: m s-1 -cell_methods: time: mean -long_name: Y-Component of Sea Ice Velocity -comment: "Reported as ""missing"" in regions free of sea ice." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: vsi -type: real -!---------------------------------- -! - -!============ -variable_entry: sic -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_area_fraction -units: % -cell_methods: time: mean -cell_measures: area: areacello -long_name: Sea Ice Area Fraction -comment: fraction of grid cell covered by sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sic -type: real -!---------------------------------- -! - -!============ -variable_entry: sit -!============ -modeling_realm: seaIce ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_ice_thickness -units: m -cell_methods: time: mean area: mean where sea -cell_measures: area: areacello -long_name: Sea Ice Thickness -comment: the mean thickness of sea ice in the ocean portion of the grid cell (averaging over the entire ocean portion, including the ice-free fraction). Reported as 0.0 in regions free of sea ice. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sit -type: real -!---------------------------------- -! - -!============ -variable_entry: ta -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: air_temperature -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Air Temperature -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: ta -type: real -!---------------------------------- -! - -!============ -variable_entry: hur -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: relative_humidity -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Relative Humidity -comment: This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: hur -type: real -!---------------------------------- -! - -!============ -variable_entry: hus -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: specific_humidity -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Specific Humidity -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: hus -type: real -!---------------------------------- -! - -!============ -variable_entry: wap -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -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: commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: wap -type: real -!---------------------------------- -! - -!============ -variable_entry: va -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: northward_wind -units: m s-1 -cell_methods: time: mean -long_name: Northward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: va -type: real -!---------------------------------- -! - -!============ -variable_entry: ua -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: eastward_wind -units: m s-1 -cell_methods: time: mean -long_name: Eastward Wind -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: ua -type: real -!---------------------------------- -! - -!============ -variable_entry: zg -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: geopotential_height -units: m -cell_methods: time: mean -cell_measures: area: areacella -long_name: Geopotential Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plev8 time -out_name: zg -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_fx b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_fx deleted file mode 100644 index 58c8296b3d..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_fx +++ /dev/null @@ -1,811 +0,0 @@ -table_id: Table fx -modeling_realm: atmos - -frequency: fx - -cmor_version: 2.6 ! minimum version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 17 July 2013 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -approx_interval: 0.000000 ! approximate spacing between successive time - ! samples (in units of the output time - ! coordinate. - -generic_levels: olevel - -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: depth_coord -!============ -! -! This vertical coordinate is used in z-coordinate models -! The units are meters (m), and it has a value of 0. at the surface -! and becomes more and more positive with depth. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: depth -units: m -axis: Z -positive: down -long_name: ocean depth coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: increasing -valid_min: 0. -valid_max: 12000. -!---------------------------------- -! -!============ -axis_entry: olev -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down ! up or down (default: undeclared) -long_name: generic ocean level -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lev -stored_direction: increasing -type: double -must_have_bounds: no -!---------------------------------- -! -!============ -axis_entry: ocean_double_sigma -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_double_sigma -axis: Z -positive: up -long_name: ocean double sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= k_c:\n z= sigma*f \n for k > k_c:\n z= f + (sigma-1)*(depth-f) \n f= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth-href)) -z_factors: sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c -z_bounds_factors: sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma_z -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_z -axis: Z -long_name: ocean sigma over z coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -formula: for k <= nsigma: z = eta + sigma*(min(depth_c,depth)+eta) ; for k > nsigma: z = zlev -z_factors: sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev -z_bounds_factors: sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds -!---------------------------------- -! -!============ -axis_entry: ocean_s -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of s, which appears in the formula below, should be stored as ocean_s. -! Note that in the netCDF file the variable will be named "lev", not ocean_s. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_s_coordinate -axis: Z -positive: up -long_name: ocean s-coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta*(1+s) + depth_c*s + (depth-depth_c)*C \n where \n C=(1-b)*sinh(a*s)/sinh(a) +\n b*(tanh(a*(s+0.5))/(2*tanh(0.5*a)) - 0.5) -z_factors: s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c -z_bounds_factors: s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c -!---------------------------------- -! -!============ -axis_entry: ocean_sigma -!============ -! -! This coordinate is dimensionless and varies from 0 at the surface to -1. at the ocean floor. -! The values of sigma, which appears in the formula below, should be stored as ocean_sigma. -! Note that in the netCDF file the variable will be named "lev", not ocean_sigma. -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: ocean_sigma_coordinate -axis: Z -positive: up -long_name: ocean sigma coordinate -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lev -must_have_bounds: yes -stored_direction: decreasing -valid_min: -1. -valid_max: 0. -formula: z = eta + sigma*(depth+eta) -z_factors: sigma: lev eta: eta depth: depth -z_bounds_factors: sigma: lev_bnds eta: eta depth: depth -!---------------------------------- -! -! -! *************************************************************** -! -! Vertical coordinate formula_terms: -! -! *************************************************************** -! -!============ -variable_entry: eta -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -long_name: Sea Surface Height -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -type: real -!---------------------------------- -! -! -!============ -variable_entry: depth -!============ -!---------------------------------- -! Variable attributes: -!---------------------------------- -units: m -long_name: Sea Floor Depth -comment: Ocean bathymetry. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: depth -type: real -valid_min: 0. -valid_max: 12000. -ok_min_mean_abs: 2000. -ok_max_mean_abs: 5000. -!---------------------------------- -! -! -!============ -variable_entry: sigma -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: sigma_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: sigma(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -!============ -variable_entry: zlev_bnds -!============ -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: zlev(k+1/2) -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -dimensions: olevel -type: double -!---------------------------------- -! -! -! -!============ -variable_entry: depth_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: depth_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: a -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient a -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: b -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: coefficient b -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: nsigma -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: nsigma -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! -!============ -variable_entry: z1 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z1 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: z2 -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: z2 -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: href -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: href -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: double -!---------------------------------- -! -! -!============ -variable_entry: k_c -!============ -! -!------------ -! -! Variable attributes: -!---------------------------------- -long_name: vertical coordinate formula term: k_c -!---------------------------------- -! -! Additional variable information: -!---------------------------------- -type: integer -!---------------------------------- -! -! - -!============ -variable_entry: areacella -!============ -modeling_realm: atmos land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cell_area -units: m2 -long_name: Atmosphere Grid-Cell Area -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: areacella -type: real -valid_min: 100000.0 -valid_max: 1e+12 -ok_min_mean_abs: 100000.0 -ok_max_mean_abs: 1e+12 -!---------------------------------- -! - -!============ -variable_entry: orog -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: surface_altitude -units: m -cell_measures: area: areacella -long_name: Surface Altitude -comment: height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean). Reported here is the height above the present-day geoid (0.0 over ocean). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: orog -type: real -valid_min: -700.0 -valid_max: 10000.0 -!---------------------------------- -! - -!============ -variable_entry: sftlf -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: land_area_fraction -units: % -cell_measures: area: areacella -long_name: Land Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: sftlf -type: real -valid_min: 0.0 -valid_max: 100.0 -!---------------------------------- -! - -!============ -variable_entry: sftgif -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: land_ice_area_fraction -units: % -cell_measures: area: areacella -long_name: Fraction of Grid Cell Covered with Glacier -comment: fraction of grid cell occupied by ""permanent"" ice (i.e., glaciers). -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: sftgif -type: real -valid_min: 0.0 -valid_max: 100.0 -!---------------------------------- -! - -!============ -variable_entry: mrsofc -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: soil_moisture_content_at_field_capacity -units: kg m-2 -cell_measures: area: areacella -long_name: Capacity of Soil to Store Water -comment: "reported ""where land"": divide the total water holding capacity of all the soil in the grid cell by the land area in the grid cell; reported as ""missing"" where the land fraction is 0." -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: mrsofc -type: real -!---------------------------------- -! - -!============ -variable_entry: rootd -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: root_depth -units: m -cell_measures: area: areacella -long_name: Maximum Root Depth -comment: report the maximum soil depth reachable by plant roots (if defined in model), i.e., the maximum soil depth from which they can extract moisture; report as ""missing"" where the land fraction is 0. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: rootd -type: real -valid_min: 0.0 -valid_max: 30.0 -!---------------------------------- -! - -!============ -variable_entry: deptho -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_floor_depth_below_geoid -units: m -cell_measures: area: areacello -long_name: Sea Floor Depth -comment: Ocean bathymetry. Reported here is the sea floor depth for present day. Reported as missing for land grid cells. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: deptho -type: real -valid_min: 0.0 -valid_max: 10000.0 -ok_min_mean_abs: 2000.0 -ok_max_mean_abs: 5000.0 -!---------------------------------- -! - -!============ -variable_entry: volcello -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: ocean_volume -units: m3 -long_name: Ocean Grid-Cell Volume -comment: grid-cell volume ca. 2000. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel -out_name: volcello -type: real -valid_min: 0.0 -valid_max: 1e+15 -ok_min_mean_abs: 0.0 -ok_max_mean_abs: 1e+15 -!---------------------------------- -! - -!============ -variable_entry: areacello -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cell_area -units: m2 -long_name: Ocean Grid-Cell Area -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: areacello -type: real -valid_min: 0.0 -valid_max: 1e+12 -ok_min_mean_abs: 0.0 -ok_max_mean_abs: 1e+12 -!---------------------------------- -! - -!============ -variable_entry: sftof -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: sea_area_fraction -units: % -cell_measures: area: areacello -long_name: Sea Area Fraction -comment: This is the area fraction at the ocean surface. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: sftof -type: real -valid_min: 0.0 -valid_max: 100.0 -!---------------------------------- -! - -!============ -variable_entry: basin -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: region -units: 1 -cell_measures: area: areacello -long_name: Region Selection Index -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: basin -type: integer -valid_min: 0.0 -valid_max: 10.0 -flag_values: 0 1 2 3 4 5 6 7 8 9 10 -flag_meanings: global_land southern_ocean atlantic_ocean pacific_ocean arctic_ocean indian_ocean mediterranean_sea black_sea hudson_bay baltic_sea red_sea - -!---------------------------------- -! - -!============ -variable_entry: hfgeou -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: upward_geothermal_heat_flux_at_sea_floor -units: W m-2 -cell_methods: area: mean where sea -cell_measures: area: areacello -long_name: Upward Geothermal Heat Flux at Sea Floor -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude -out_name: hfgeou -type: real -positive: up -!---------------------------------- -! - -!============ -variable_entry: thkcello -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: cell_thickness -units: m -cell_methods: time: mean -cell_measures: area: areacello volume: volcello -long_name: Ocean Model Cell Thickness -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude olevel -out_name: thkcello -type: real -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_grids b/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_grids deleted file mode 100644 index 649bd1bfa1..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/CMIP5_grids +++ /dev/null @@ -1,287 +0,0 @@ -table_id: Table grids - - -cmor_version: 2.0 ! version of CMOR that can read this table -cf_version: 1.4 ! version of CF that output conforms to -project_id: CMIP5 ! project id -table_date: 11 April 2011 ! date this table was constructed - -missing_value: 1.e20 ! value used to indicate a missing value - ! in arrays output by netCDF as 32-bit IEEE - ! floating-point numbers (float or real) - -baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation -product: output - -required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id parent_experiment_rip branch_time contact institute_id ! space separated required global attribute - -forcings: N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA - -expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' -expt_id_ok: 'volcano-free hindcast initialized in year XXXX' 'noVolcXXXX' -expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010' -expt_id_ok: 'pre-industrial control' 'piControl' -expt_id_ok: 'historical' 'historical' -expt_id_ok: 'historical extension' 'historicalExt' -expt_id_ok: 'other historical forcing' 'historicalMisc' -expt_id_ok: 'mid-Holocene' 'midHolocene' -expt_id_ok: 'last glacial maximum' 'lgm' -expt_id_ok: 'last millennium' 'past1000' -expt_id_ok: 'RCP4.5' 'rcp45' -expt_id_ok: 'RCP8.5' 'rcp85' -expt_id_ok: 'RCP2.6' 'rcp26' -expt_id_ok: 'RCP6' 'rcp60' -expt_id_ok: 'ESM pre-industrial control' 'esmControl' -expt_id_ok: 'ESM historical' 'esmHistorical' -expt_id_ok: 'ESM RCP8.5' 'esmrcp85' -expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1' -expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2' -expt_id_ok: 'ESM feedback 1' 'esmFdbk1' -expt_id_ok: 'ESM feedback 2' 'esmFdbk2' -expt_id_ok: '1 percent per year CO2' '1pctCO2' -expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2' -expt_id_ok: 'natural-only' 'historicalNat' -expt_id_ok: 'GHG-only' 'historicalGHG' -expt_id_ok: 'AMIP' 'amip' -expt_id_ok: '2030 time-slice' 'sst2030' -expt_id_ok: 'control SST climatology' 'sstClim' -expt_id_ok: 'CO2 forcing' 'sstClim4xCO2' -expt_id_ok: 'all aerosol forcing' 'sstClimAerosol' -expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate' -expt_id_ok: '4xCO2 AMIP' 'amip4xCO2' -expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture' -expt_id_ok: 'aqua planet control' 'aquaControl' -expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2' -expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K' -expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K' - - -! -! -!============ -mapping_entry: sample_user_mapping -!============ -parameter: false_easting -parameter: false_northing -coordinates: rlon rlat -! -!============ -axis_entry: i_index -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -out_name: i -units: 1 -long_name: cell index along first dimension -type: integer -!---------------------------------- -! -! -!============ -axis_entry: j_index -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -out_name: j -units: 1 -long_name: cell index along second dimension -type: integer -!---------------------------------- -! -! -!============ -axis_entry: k_index -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -out_name: k -units: 1 -long_name: cell index along third dimension -type: integer -!---------------------------------- -! -!============ -axis_entry: l_index -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -out_name: l -units: 1 -long_name: cell index along fourth dimension -type: integer -!---------------------------------- -! -!============ -axis_entry: m_index -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -out_name: m -units: 1 -long_name: cell index along fifth dimension -type: integer -!---------------------------------- -! -!============ -axis_entry: x -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: projection_x_coordinate -units: m -long_name: x coordinate of projection -axis: X -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -! -!============ -axis_entry: y -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: projection_y_coordinate -units: m -long_name: y coordinate of projection -axis: Y -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -! -!============ -axis_entry: grid_latitude -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: grid_latitude -units: degrees -long_name: latitude in rotated pole grid -axis: Y -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: rlat -! -!============ -axis_entry: grid_longitude -!============ -! -!------------ -! -! Axis attributes: -!---------------------------------- -standard_name: grid_longitude -units: degrees -long_name: longitude in rotated pole grid -axis: X -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: rlon -! -!============ -axis_entry: vertices -!============ -! -!------------ -! -!============ -variable_entry: longitude -!============ -!---------------------------------- -standard_name: longitude -units: degrees_east -long_name: longitude coordinate -dimensions: longitude latitude -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0. ! CMOR will add n*360 to input values - ! (where n is an integer) to ensure - ! longitudes are in proper range. -valid_max: 360. ! see above comment. -!---------------------------------- -! -! -!============ -variable_entry: latitude -!============ -!---------------------------------- -standard_name: latitude -units: degrees_north -long_name: latitude coordinate -dimensions: longitude latitude -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90. -valid_max: 90. -!---------------------------------- -! -! -!============ -variable_entry: vertices_longitude -!============ -!---------------------------------- -units: degrees_east -dimensions: vertices longitude latitude -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lon_vertices -valid_min: 0. ! CMOR will add n*360 to input values - ! (where n is an integer) to ensure - ! longitudes are in proper range. -valid_max: 360. ! see above comment. -!---------------------------------- -! -! -!============ -variable_entry: vertices_latitude -!============ -!---------------------------------- -units: degrees_north -dimensions: vertices longitude latitude -!---------------------------------- -! -! Additional axis information: -!---------------------------------- -out_name: lat_vertices -valid_min: -90. -valid_max: 90. -!---------------------------------- -! -! diff --git a/esmvaltool/cmor/tables/cmip5/Tables/md5s b/esmvaltool/cmor/tables/cmip5/Tables/md5s deleted file mode 100644 index 9016fe4984..0000000000 --- a/esmvaltool/cmor/tables/cmip5/Tables/md5s +++ /dev/null @@ -1 +0,0 @@ -{'CMIP5': {'cfSites': {'11 May 2010': '80506c07ed63befd33f9f727b78bde55', '17 September 2010': '7876f3c8b9f817348f45af63226af05e', '19 October 2010': '80264b0dd9e203ce916542fa15c6d272', '24 May 2010': 'bf9e8c5576fd70aa92d11fe3d4317e9b', '28 March 2011': 'f7c44d2b2fe147eef790f3a294a137b9', '12 May 2010': '0ebecf85ba30b2223360a29ece880be4', '26 July 2011': '76cc5a96989ebb70010fcab14f04de43', '09 June 2010': '569fd7b653d4aa55cd229227caa67822', '22 March 2010': 'fe60fd7cfbaccc08c75a91dc67a68b99', '15 November 2010': '635f0e6676162c743b15d824033afb04', '23 August 2010': '4a2774cbbde4d5f69c9541e6b6248d00', '01 June 2010': '2eb2e9a6a1db0e18dac73e04e0dfbe47', '02 April 2010': '650c6032a9cbeedb142a41b923e85f22', '11 April 2011': 'd4bd92f600f09b1599927f929db7fe5d', '26 April 2010': '6fe91d86689e2fa1faa2fe7164876ace', '17 July 2013': '0c3bd83f7fb976f5861fee1e40460ab2', '01 July 2010': '96628b3875e74a8a515d0a1e500710d8', '11 November 2010': '6be9b509f02f6118bfd2b0062f27df9a', '14 September 2010': 'e7d36b34ba0a0142e8c24a0c43c6b15a', '12 March 2010': '192f07ba869af3794494ea0dc3a72a54', '29 April 2010': '27c4a93f80a4282ef69f23391c699f01', '22 March 2012': 'b8ab2ebe43833b25972010a3c1fe6ba6', '31 January 2011': 'c9db4a770f497b3f6f236135b0921377', '07 July 2010': 'e0d03c9f9ab6151b27e5af641a6ac00d', '25 October 2010': 'ff381193c4e025bda3c315dc7018ea08', '12 January 2012': 'f58ba903857b8191662180a8128ca975', '30 November 2010': '52a050381cb8b1aae0169e8c09b402cf', '06 January 2011': '24b9cf8db6e0e01f0a2f25d40bdfa706', '02 August 2010': '2c97faef852f74429882098d038c7b96', '27 April 2011': 'a150c803ba8e2ec673209e9f613ca78d', '08 July 2010': '3d8a12a9970f8c0c8a0ff108451df3e2', '12 November 2010': '9c695f150db16c9cade9ef273014b4bc', '26 January 2011': 'a8ccf7099e95a4352a6fdd5364e390bc', '10 June 2010': '7aeea92e38f9ca3fccf5e92f9cbbbeee', '28 May 2010': '7eea57df7c12c4d8524da28aa78fbe94', '22 October 2010': '74a468c3cce5927e1c2ce35238df2146'}, 'cf3hr': {'11 May 2010': 'a59ca1270ff3036d417a7f2217598266', '25 October 2010': '0411f9fce5f7d46c64135ce1ac2b3f6a', '19 October 2010': '8b5c2f197b70a103393838ebd4075c6c', '24 May 2010': '61693a46b06627dcd6ffe8ceff288ef0', '28 March 2011': '0a6cd0a3490ef913de1603e050028d9a', '09 June 2010': '8aad2bf8bea26504a0e247c1737ea4a0', '26 July 2011': '9bddc0ef2f3853878612f91e4b88a6e0', '12 May 2010': '905f7ccdd5a31cb71e2a6e3b339cd0e1', '31 January 2011': 'e4778a751fab1c990cdde28a1692e6f6', '23 August 2010': '5ccea11a7c3d165c76df3d9eede395d0', '01 June 2010': '619aa3c816bc25a53335589698e64968', '02 April 2010': '3394448440a54597570cc877dcbaca7d', '11 April 2011': 'c39107ec4994d0b31572fc740afe1879', '26 April 2010': 'b0d0de6ac8d5ef997347610ea6a51d6d', '01 July 2010': 'c0fe9e92115d75292f5009e13761cb4b', '06 January 2011': '3f683b01939f2813f355252e984e6ae8', '11 November 2010': '35a8e11c7f57f3128517d21d177a8204', '14 September 2010': '1669750f2919391d83f949de05a1bfcd', '12 March 2010': 'ae9a82f01824d9012aa0657cd7896a9a', '17 July 2013': '4fe020dcfff962e5f57f4b269a155b59', '22 March 2012': '2b1f0a7bd8dbcc045731096548540bc8', '22 March 2010': '712cd14ab6a28116da828ff555e00c4d', '07 July 2010': '27949d438b4c04d481ff1d9790cff60f', '17 September 2010': 'b71b239f5fac1e0588d0b15bc4d34ed8', '12 January 2012': '61ea8d1c6dccd52fb03cb4a8c8e4164b', '30 November 2010': 'c415aa249713c89ca88d3ca8dd143566', '29 April 2010': 'fdc4fb38dd4cfb7f066329ed43a9e805', '02 August 2010': '9a94c257c8aebe1b834631c067728357', '27 April 2011': 'b445fcb96291160f776669301c94153d', '08 July 2010': 'a52efa3fc3fa9464cf3378e936320f55', '12 November 2010': '7aa138929397042fe2db914c2e9c0d22', '26 January 2011': 'f356796dc38b7aa7533426a4d1335067', '10 June 2010': 'f70ed019bca338b2d73296e1924f3df4', '28 May 2010': 'f6e966842fed498f0921365983918119', '22 October 2010': '6b3fd20804f1306fc7413997cd478a23'}, '3hr': {'11 May 2010': '9f293a2c84001fbaa5aef7357ea2828c', '25 October 2010': '021eb679fe02596b994f03a8b201a11c', '19 October 2010': '8295c191b254ca0795e974d7f140b72b', '24 May 2010': 'af8b1d3d63376942a55d779d0fb9f504', '28 March 2011': '56599fcaeafb7e8496723e994b913888', '09 June 2010': '27eb969c4cd719b0622bc828d6b9a445', '26 July 2011': '13ce66e026f3c89a1df978a80552114e', '12 May 2010': 'c8ebc04b6487634d9719f4974265fd64', '31 January 2011': 'f92c4fdcc9ed1cb63c48f839379e34a5', '23 August 2010': 'f211766ca746969943a9fe6b4bd45694', '01 June 2010': 'acf6e6c17995a9b0f4d7ecd93f1ffb35', '02 April 2010': '1e9df4873834764950e7cdd1f545541e', '11 April 2011': '07c5faef1d2f64f2bfa5d41b0fc678cc', '26 April 2010': 'dfae3d259acdbe58fd8b4e3f535f02f1', '01 July 2010': '9ff56e4d1df9199fafe41bbe78c5502c', '06 January 2011': '2ba744b01bebca11b2e0417581a433e8', '11 November 2010': 'c4fecc3b0c095cf96b1f7d5a3f6979c4', '14 September 2010': '0dbd5efb8e7cb9b30f06c0ba15c1ee2b', '12 March 2010': '8249007b0a473d19554b47efaff87a39', '17 July 2013': '09fc6805844997a47b81e14e64eed4d3', '22 March 2012': '592c2053b1820bab4b6995650094789a', '22 March 2010': '7e3989c1ac5dd2455892cd25b8fd2a1a', '07 July 2010': 'f07a287d8f310a7eb22b5753ec9c192b', '17 September 2010': '0f0060d0f895564e19189bfea3fb9a8a', '12 January 2012': '7eb57b250935fac136ab277443a9144f', '30 November 2010': 'f3c8c88995990f639ba5898e97d106fd', '29 April 2010': '7ca1dc5009cca6779717dd557e5edc27', '02 August 2010': '110a779349596be375d3b7fecabd338b', '27 April 2011': '39e893709ceee185aecd8e45fdce32f2', '08 July 2010': '82f5befb7bd5f11945e13f5c774ca0b8', '12 November 2010': '3d0f50f5c03069b9f45573283964f1d4', '26 January 2011': '0428e8c76592261adfc0ba1761637b5c', '10 June 2010': 'e53cdb81ec9f7088198133ee086fc966', '28 May 2010': 'f4f7421bc9b4563952bad7edd9e787b0', '22 October 2010': '505fd7eeeedf85127677d8407b23980d'}, 'cfOff': {'11 May 2010': 'aee3517609f9c24b48d210742be22bfc', '25 October 2010': 'b9c19aae50935a3999ac38838ca64546', '19 October 2010': '471f86bd5adea0a5547086e61f7f9228', '24 May 2010': '5d3f4b6daef653409aac76439c534778', '28 March 2011': 'b6bf5cbc84b415fcb17d676aefb31fd4', '09 June 2010': 'c77f28ff0fe2252d8a20169ca802a8f4', '26 July 2011': '7c82288b193cfac9b94f5503f27a3609', '12 May 2010': '3079982b07452f20df2a26f924065f32', '31 January 2011': '2b1166728ba414bed031b0f73c0e093a', '23 August 2010': '00dcdaad4b4040b70ce901f28a6f43b8', '01 June 2010': '0db2ab6935aad13a6227a20e63c6c486', '02 April 2010': '23a2c16a166a9b9bc6d51769375becd2', '11 April 2011': 'f1e7cfbcd61fd57cde19b7fec2bbedce', '26 April 2010': '8ef2dee6b9ac93c654d67562d01316f9', '01 July 2010': '77b45b1f470d649d696953a53c9afb2e', '06 January 2011': '961c6d5204a46be6c497618dce9e1e30', '11 November 2010': '3aa27d69912d316e9423102ab2952992', '14 September 2010': '18b0ee56491ce281ace46ec2cd4c0f8c', '12 March 2010': 'a573ebe565340a61697e7deced82b9c7', '17 July 2013': 'f0cde494dcf95c6ed427a6b6375f8608', '22 March 2012': 'af07a0cf2e935fcbeeef2683e458c20d', '22 March 2010': '4f62827e7661dd79a7bf4df1068b45b8', '07 July 2010': '1725cf6068006e9d7a8e77ffe60510af', '17 September 2010': 'b933cdc8d9cf48c16e4f3216562a9f8c', '12 January 2012': '330de8d8d53517a651d730f978dd645b', '30 November 2010': '6f096714493a821b5d015cc5fd569584', '29 April 2010': 'b022d0d8359dfd8549dcecb4a440459b', '02 August 2010': 'e8819e0496e8210bb00f72f4f97bd58a', '27 April 2011': '6fd2e599aaa4fa5170857b37ce96cc6b', '08 July 2010': '1d97433ef9df7b3a452a2fbbeb6b3641', '12 November 2010': '3f738ba57136d65b96fdc78db9e20c0e', '26 January 2011': '6b5f202e8287d3d173f2e69a76ee4e9d', '10 June 2010': '4311ce8f83ceec96ed2f3ec7a6fad034', '28 May 2010': 'dfff9394b235db3fa52960418a7286f7', '22 October 2010': '9046a88d2097af032a322fa63cdb0d86'}, 'Amon': {'11 May 2010': 'e4e4554008c52abcd8fcea09f7f93f8d', '25 October 2010': 'e40cd150c9c2a3a06ded4ee92e84b461', '19 October 2010': '81f2d61a443bfcc780c9ec2dd27fb4a1', '24 May 2010': 'abf08fbc54eeceb061e588f017462dc4', '28 March 2011': '0afcb2d7f190557bfb8b993eeabc39c9', '09 June 2010': '382b999448888cee3660598699a724c3', '26 July 2011': '976b7fd1d9e1be31dddd28f5dc79b7a1', '12 May 2010': '12e195f2fdc87c907b38b38e15851337', '31 January 2011': '53b766a395ac41696af40aab76a49ae5', '23 August 2010': '045d668827988440ad3ba59116110304', '01 June 2010': '34d587239da7376dd1f3e366a50cf500', '02 April 2010': 'b6f8bea7bf003b2bcd493ad037bf7f24', '11 April 2011': '1cfdc7322cf2f4a32614826fab42c1ab', '26 April 2010': '9f677ce2bf23f4e1d622feef2ca3f434', '01 July 2010': '9b2907adc97564335ea86d81ae46df81', '06 January 2011': '085e3f5c098d203b2fd5d296226f41b3', '11 November 2010': 'dca41799988c6420df70af862b30f492', '14 September 2010': '6f10603fbd99e766f4c6c3ac3152f294', '12 March 2010': 'b0b2c52562fa80a556684fb6195ab135', '17 July 2013': '97d3bd8711883aca8d9e383a7e664afa', '22 March 2012': 'c7ff6fab815d2450728885f7e379f6b2', '22 March 2010': '95e9123f238c2b42fe8cf8d69e35d139', '07 July 2010': '2447c62949c32aade1316c738861f76e', '17 September 2010': '2bcb9818a4f88c67db40ebf7d5df7ad1', '12 January 2012': '95a8ac1233784682d425311ca986756b', '30 November 2010': '525cb891c7d82657304f61cb0d785a19', '29 April 2010': 'a57cdc538f256caa6815604210dc22b3', '02 August 2010': '0b3faa1f662bbee372fe931cb6d1b943', '27 April 2011': 'a5a1c518f52ae340313ba0aada03f862', '08 July 2010': '0f29d14a72ad86a2466d830072657eac', '12 November 2010': '6e535ddfacb41fb7a252f4862fdc5766', '26 January 2011': 'f518a4407dd3ee205d7cabfb6891c7c1', '10 June 2010': '5d6844585631dd2c048b26e8c27a36ec', '28 May 2010': '0dfec5986fd66a2f70900ae5266c4a87', '22 October 2010': '3754c1ca774f699c4d7f7f24fc4c5d0d'}, 'cfMon': {'11 May 2010': 'dbefad89e3fa487ade7986825d6fe7d4', '25 October 2010': '1e157f1f973aaccb1b977d21d70ae051', '19 October 2010': 'c08d10d30c76c5e6df184d820430db4e', '24 May 2010': '1224cca03c126a0b1207f86b1ccbbd5e', '28 March 2011': '90645c050f8bbac5e5413e119b89daad', '09 June 2010': 'e1db34fcdd19c785857fc7626225862e', '26 July 2011': '22fb4760ba7f5845955919d42bf45731', '12 May 2010': '03de0e6784d9468d5c3b21a708a410bc', '31 January 2011': '17a583b65f38f7208006836881ecd5c6', '23 August 2010': '4163799d7e6ca9ed6702f92bceb4a83f', '01 June 2010': 'be7cc61031cc4576cb79127b3341a599', '02 April 2010': '9fcc3f2ebe69dbc949642ecb88e1194d', '11 April 2011': '521b84c0e9e74ab41a36bc59fe6d64e7', '26 April 2010': '93d04dd9aa241cc63a84ff5a9d8c61b0', '01 July 2010': '80c97d7c98abc2f485bb402dd3b7e915', '06 January 2011': '568dd0f54df98a4177c4a5939531c8e9', '11 November 2010': 'eecec4e0c8934eecefa5618e92a4912a', '14 September 2010': '5e2cffb7cc4dbac6079b751a6517b870', '12 March 2010': '4e734968f407cb120679ae76cbabd19f', '17 July 2013': 'bcd907c6aed0db845ee1cd0f79d3324b', '22 March 2012': 'f5df5c23c7fa35287e070beaa07b08fe', '22 March 2010': '27a6c2c3f3eefd64643850e42b29ae95', '07 July 2010': 'ddb3a708296e483988d1fbc98becfc4c', '17 September 2010': '01afab053639ea0c2460f0b62fb84692', '12 January 2012': 'c4968da7d23d1e404cc4605109e953b9', '30 November 2010': '65b7963f47c0b3f0120f2a9778c8eac8', '29 April 2010': '1e18a3180c49a801bb0a3763473d61d0', '02 August 2010': '56a4d049c4461e85febd902424950b81', '27 April 2011': '9dbcef024b332923d92f3d4ed1bb88f7', '08 July 2010': 'f348eaec1ca7e1bdce8f3fa41c4e4304', '12 November 2010': '1d41e779e2782143a255b88ebcecafe8', '26 January 2011': 'd69493ba9f03dee6dca7087b23b00cd6', '10 June 2010': '0e6868e4fe53670680b3d896e197f58f', '28 May 2010': 'c37adda1fb6d9fd8a88b7854f3318ab0', '22 October 2010': 'a4f6136f20c75e957b49a39dbd390e4a'}, '6hrLev': {'11 May 2010': '563f7b4b9db1587890c35a6feb4d9a83', '25 October 2010': '9222efc9a5a8679d8859aab6cd440b05', '19 October 2010': 'e5ae7a9855e4413deea8289e31aaaa21', '24 May 2010': '7a13cf3cf200cff92cbb106c3b0a95db', '28 March 2011': '581a244c03c6226a7b266fdcf0d501b7', '09 June 2010': '2656efcc5cf61affffb263effde97ede', '26 July 2011': 'dbe016edfd11d267710827810cf47b1d', '12 May 2010': '1e643249424bd620052d216950785b83', '31 January 2011': '028ca192fe560aa8f3f610dda5fdd7bc', '23 August 2010': '235242a4410e9b772307262dc755a17b', '01 June 2010': '0567c616eb71663592476f1f10b6a51d', '02 April 2010': 'd1b5ce14b3978b8665d576c2a6abc849', '11 April 2011': '583cb2bb254a9bc7ec5a7bb9cf07ce44', '26 April 2010': 'f4ed7d449df633b1c4924aa17a0f033f', '01 July 2010': 'edd7380c5c773cb9e72f37e76ea1c410', '06 January 2011': '55769dd1af97f1b1f79b595ba7cea34f', '11 November 2010': 'e77e0be5bccb0fd442b55a28cfad40dd', '14 September 2010': '964e5834724585c32ccf0290f64d7e18', '12 March 2010': '814a04ab21f7928f22728ca338e6a9bf', '17 July 2013': 'ac564db88efb927ad44351aaad6c2571', '22 March 2012': 'c1ae9c4865bd9ddac19664f4a3d0410d', '22 March 2010': '1b4de02ae5ce7f94e33a344101ebc85c', '07 July 2010': '19b8d901370b7beff6ec1ba2ba5f00f6', '17 September 2010': '93f88b74ffd53270c9cab6f6b0790fd9', '12 January 2012': '54e40e46bec20b1806d1f9da1742e5d8', '30 November 2010': '6c116423753a0c320c0cf3e31acd51b9', '29 April 2010': 'c71c8d10849d8a3759a2883858a0e723', '02 August 2010': '3a2153ad4b60e08ec681d434df327d9f', '27 April 2011': 'cf08abb8c40d2c5d1c95297b569db0e6', '08 July 2010': '6cc537fbd876969a1ceb125007ab7201', '12 November 2010': 'a6a60e3da21ccf69878be490a922015a', '26 January 2011': 'f028b6b367a03ddc18069ebbfff2231f', '10 June 2010': '5d2d178a4887ca16583c4500fcc2cbbe', '28 May 2010': '5649b5e565aaf90725e52923473237c4', '22 October 2010': '911f4c35b73178e7efb493cd6b96a415'}, 'fx': {'11 May 2010': 'ceee73b67736e0209632cbf0565f3016', '25 October 2010': 'd45f6af57ce4d1698fca7b5843cb9cbf', '19 October 2010': '4c78280a37dcd13557f43dd9cc70de91', '24 May 2010': 'bd6e3e0a5c82a46d84e40acee850a1fb', '28 March 2011': 'c046d0887aeb2bb7ed34d63897d7de8f', '09 June 2010': '14bda3afa90252a7e380250bb89ed909', '26 July 2011': '491518982c8d8b607a58ba740689ea09', '12 May 2010': '7a982ebca5c07d348561e23b056b678c', '31 January 2011': 'dd5903eb1b6f5aa24d6d6dd1679cef9d', '23 August 2010': '8fe1e359662d7edb809672e8ecd20026', '01 June 2010': 'eeedbe523773ea8145bd98134ce63cd7', '02 April 2010': 'ddb926db39ca9dff4b15cd19c7bffe68', '11 April 2011': '36427dbe3a79c7b7000fa59642973ea6', '26 April 2010': '36573de4231a9ab2e1e6dd06fdc332b3', '01 July 2010': 'a7ac4b51593af19085d34f3ddf41b323', '06 January 2011': '514d549dc247532e9dbc96e31906b6e7', '11 November 2010': '1899417a056ed59f2a5dbb05b7b782f7', '14 September 2010': '0ab4232d370f07b82b35568c03a0b4a4', '12 March 2010': '71beb3105440a206cccee47d4ca11e02', '17 July 2013': '3b0d4cb42c006e5b8c33b07e6b313255', '22 March 2012': 'ac5e2c418e5380cabbd90eb83fa6f8c8', '22 March 2010': '23d6a606a08f77d5e0efa2f553792184', '07 July 2010': '6be37421f818e25809dc8a217808ddf9', '17 September 2010': '6e811c03861e5ac05887000cb22824bb', '12 January 2012': '31f8e82ffa2e23ae0de67d9bcd483d93', '30 November 2010': '06cbf82706b95557ab73b5e815db061b', '29 April 2010': 'aed062cea93bf59cea4c089e45f88ea6', '02 August 2010': 'c7b7caf02dbad550bb6a29dffb520758', '27 April 2011': '10d4516edb0202bf85e1ae7cf0b86691', '08 July 2010': '2004b4a855b365fc68fac3f089c5707e', '12 November 2010': 'a3fb4d54ac41c92268e3d1d5bb59e4cf', '26 January 2011': '85fb18111a7f2909da2f8932b7628164', '10 June 2010': '6ace20d389ab3d1fbf7d68c8ddce4c8a', '28 May 2010': '064b1fa83c0626981f62638cad0cd6b6', '22 October 2010': '52e52e2710c778c0ab547c98192dce74'}, 'Omon': {'11 May 2010': '2d0ccdf5de652f1580245657b2cb6e2f', '17 September 2010': '7f1e239986a653271514846dec436895', '19 October 2010': '1a1bab09ac4772abec59bb3f364b2046', '24 May 2010': '9fd8559b31592d9a516bb7cafdf55105', '28 March 2011': 'd71862c6fdafa47720d8a402f39c8864', '12 May 2010': '5bbbf780fbcc32ecae95ec75e5925c2e', '26 July 2011': '25bb94a0408beca44c0f5b601258a94e', '09 June 2010': '9c3676570b53a7eacf0da4ccb132e1e2', '31 January 2011': 'd2d6beec2b8fea5bbed33920a6e08bbe', '28 May 2010': '0dcb11bfa3ed2e44be7dbc4a65b04b34', '23 August 2010': '32568fef98f13d8e600460194429ea64', '01 June 2010': 'c45d87b668792d8b44753f9bd52980ab', '02 April 2010': '28927d3487d4bb87c77b50d495980d21', '11 April 2011': 'eaf2e961aec11e7c91bc5e7a112703ba', '01 July 2010': 'ce70d7a18026d46eaac72ab9ed627cba', '11 November 2010': '8c7016c14989d5917aab04b07185f72f', '14 September 2010': '103bf8b76c901eb92e396008ae4e130b', '12 March 2010': '32e7e5c693ba7fa59697ce93603cafee', '17 July 2013': 'bb12d1e7a6569b8f76441393defe6986', '22 March 2012': '06bfa836151fd3ddc4a5bb32763568f9', '22 March 2010': '8d88ed317135c24d6a01f056ac09ca2f', '07 July 2010': '30b0147d4c08f78266a680e4dba5f05b', '25 October 2010': '857563b97888e34bf4efb95a31201037', '12 January 2012': 'c17931a1bad4e38015cbd162d50c56e5', '30 November 2010': 'fca219c0b072504597d99baa42649e74', '06 January 2011': '14b99a9dc80e3563f771f91e03ca1f4f', '02 August 2010': 'e05ca2ab73fa7930953fa1b5ffb08239', '27 April 2011': '340eddd4fd838d90fa9ffe1345ecbd73', '08 July 2010': '141295f2779d3084924ae119f2fe4bbc', '12 November 2010': '21c7ac8643c73502f98cf73d716ab773', '26 January 2011': '72be8ec9fdc47984987a4d051070143e', '10 June 2010': '5d379ef8f72f147aa6a4d76d8e25d299', '17 November 2010': '8c07c4b31d2d11d879a9723a9e781e4a', '22 October 2010': '459b64863ea0cddb1a3ff6bd38575ffb'}, 'Oyr': {'11 May 2010': '527d920054556b540145ca03f4929ffd', '25 October 2010': '7dac94270ddeebaffde40607e94a50a9', '19 October 2010': '6ab6fc52c1822e96b436ce1c9384255c', '24 May 2010': 'f814cbfe0580345a85c091ef1b54bdaf', '28 March 2011': 'f612fdbbb78488dfa94e4308c5ddfde2', '09 June 2010': 'ceaef2c58732dd8093737b23e2f9f99d', '26 July 2011': '4a4fa20f3a3627af555d7528b7e23347', '12 May 2010': 'b8fbd4fc69d1742f5eff475df79f192e', '31 January 2011': 'e5b82c4a1077c44b150ff43f0c5fdb34', '23 August 2010': '88a495d04230e0093e563463a31ca931', '01 June 2010': 'bb68fb7b1f66ca226cd108ccf20047fa', '02 April 2010': 'e828a0a6190fbdea02bde73cd4db994c', '11 April 2011': '824c95535c8e3f74f440cb97120988f0', '26 April 2010': 'e26c6428fb49ad822e20ee1a7f4c3ac4', '01 July 2010': 'b774f001ee806c9eb932698faf4e15bf', '06 January 2011': 'de99a58102bd40e65b71f6ba739334b0', '11 November 2010': 'cc9ca9c8af0ed8d03d30214564816136', '14 September 2010': '06da4397beb9d242952a57b778fa3bf1', '12 March 2010': '9718b877ea7f6374e7bb7561d01af98b', '17 July 2013': 'e210696796104a790f072bb3718780a1', '22 March 2012': '603a712b9349d896b5459e44322908b3', '22 March 2010': '1ad84e2b17655de2c4ceb95e05cc1e35', '07 July 2010': '5225d811469f0ed452c307eacb71e0c8', '17 September 2010': '62867ce71757c9ddd57389aee731a17b', '12 January 2012': 'a072b2c38f3787d5e6cdf938e23b9658', '30 November 2010': '03db314a71c33cc16ed91f4817170afc', '29 April 2010': '1651b65e299b6aaabef92845dea6692a', '02 August 2010': '4e67cd5378788aee1de2384725a41a89', '27 April 2011': 'a816306750f284585dc77210f193f7bb', '08 July 2010': '8e0c140b20425419299e555a90ab15bd', '12 November 2010': '6f645331f36ab31e48e34d413c782f57', '26 January 2011': 'eeb4ea17162d4c127238678c72573374', '10 June 2010': '73653956328160bb946f229189fbce5f', '28 May 2010': 'e2a6acf84cdec51f0c542111d66e7d9e', '22 October 2010': '18a745403ae5095d532db2c2b1905d32'}, 'grids': {'12 March 2010': 'd2a03433140cb366e0009d5e8b064e34', '19 October 2010': 'ca01dcb5f14d9a7286135fb740550ee2', '12 November 2010': 'bf68c67ba77793dadceef7d115c7ffe5', '11 April 2011': '42e3515b68890b8cb3121c78239fa9b5', '11 August 2010': '3dddd7959e11a27723ec5339306d1120', '20 September 2010': '35ff89deab99c5469dcc89ebc4b4f442', '28 March 2012': '560c2e182080b0940a45127a6570eda0', '19 September 2010': '426154be8fcbdc0c1d6c188858131577'}, 'da': {'11 March 2010': '6e0a7e19df94506d06091b43082677dc'}, 'cfDay': {'11 May 2010': '378455467d0ecbaabd8d93db9855bd1f', '25 October 2010': 'e230b25242e9f7a6aa2acfa9eb195ab8', '19 October 2010': 'd87662b52af1386bd95c7651dc97c237', '24 May 2010': 'eed1d3cda3e535039bb6e0c5f9b9d6c3', '28 March 2011': '5f1d5ffff5512cc4ba5ace386ba17b0e', '09 June 2010': '78bcd978d11b5b2435b4bc85969ba9b3', '26 July 2011': '15b8dceaf565629fdf801247cdfe3200', '12 May 2010': '2bbfcf8d253f38b550e68b0d7b242a13', '31 January 2011': 'f16985ac83c91f13f72a654fb8ba186f', '23 August 2010': '20a096eaaa3c5c140c8dde15bd8f8e76', '01 June 2010': '04af05cd53dabdc5052a962bf28c1607', '02 April 2010': 'f0eab40e698a4b26949da066639897b1', '11 April 2011': '5b428ba8235636d1c2424025b9d1beca', '26 April 2010': '3771e19a505af7b1e007eac78670f4ab', '01 July 2010': '37843ebcfa1862c12ee904e355e86cbc', '06 January 2011': '4ba6967e3ae7fb4fa48f098cd852562d', '11 November 2010': '007645be3e4788db8bb05397c174b1ba', '14 September 2010': '20e6c21202c6cc4fcbc6b85ef5688998', '12 March 2010': '6ab7019daf928d9f1ceda58323b1749e', '17 July 2013': '9473d972c59e82c2d153125fa8485af9', '22 March 2012': '1a384a56b92ab4fe4499c489a1044653', '22 March 2010': 'cfe9075ba940032f9d18707d10bd4d1f', '07 July 2010': '595ca1266fa7ac469bd54d810d7d2d5b', '17 September 2010': 'f86ba023f81f75f89faaf1c8c0a45a81', '12 January 2012': '1a526bb689806f1754130e313dcd1bd9', '30 November 2010': '8ca80f3746d7324f8eece2bea63355d4', '29 April 2010': 'f92a346a102778aa4caaf3804bec2c7e', '02 August 2010': 'e8cc7c2d334a49efbe5c044b74dd7d6c', '27 April 2011': 'cfad94c06919b669836005cf56cbb78f', '08 July 2010': 'c2dc1c9036c53971505b892fa3a3764e', '12 November 2010': '35a022f3d4c503ad7748557a3814d64c', '26 January 2011': '86d15743738df4da68ed2605521d041a', '10 June 2010': '872bcd0c18771af5672bf35454019e86', '28 May 2010': '49b6cd8183be7acaf580984961d0bffc', '22 October 2010': '0f54a4f4776262946481393eb211cac0'}, '6hrPlev': {'11 May 2010': 'b8d13f7aaa2296af505a68dc6608c665', '25 October 2010': '8e14c5beaeea6185824908626ca399cc', '19 October 2010': '8359621ab81242b8b891194e7b1a8006', '24 May 2010': '867a083d0dd5807e2bbd057c1f84e572', '28 March 2011': 'a6f5845a8465f9a3193614237a247f3e', '09 June 2010': 'c8a7205bc95fda5d97160a4727cb5433', '26 July 2011': 'cce5a250b13747b7af5d1cddcc61873d', '12 May 2010': '3d79c767038805af92b29f0d35ed3181', '31 January 2011': '2486865d573b5e4add809e0c04e17345', '23 August 2010': 'a0cf4faa32d6d70f32d5691d1df835e2', '01 June 2010': '9593abe01052c91403fcda79896635e1', '02 April 2010': '2df2ba0c09cc65a054ca529812e96ebc', '11 April 2011': '0fa8c0083b4da4cef7570b2f8384d0df', '26 April 2010': 'e73240fb5cc142534cfb1dfd68a2c581', '01 July 2010': '7d2d2d81c44c69bd1b752b1e5853da51', '06 January 2011': '396e106ee90e4a2df14465e90a6f8cb3', '11 November 2010': '0b0cde80deef0a0149ee87334bc9b915', '14 September 2010': 'c8249d3d4a79b79444c4b31f9d1f880f', '12 March 2010': 'd9cd927f52f494b19cbae19ab80812d9', '17 July 2013': '0fabcdcfc2b9485d07289a2e7c4d5e0e', '22 March 2012': 'b00113e7ed9a58eda8fbe3f5a7ce789f', '22 March 2010': 'e01082cc0a5a732cc62f612abb9b9985', '07 July 2010': 'fd2e3a860e08582a7d091b8d76780b51', '17 September 2010': 'fb420cd690a8dce494fe881d55dd12d3', '12 January 2012': '13256f969b96b7fefa7af694084eaa4f', '30 November 2010': '8b07705b7830b417c025e58d2d147699', '29 April 2010': '340e7ecdf04ee54bc4d41a8ea57b2793', '02 August 2010': '97a7eb1583bf9a816b2bd7d84b762f9a', '27 April 2011': '00b465eee32d6d11a7e57f5cc8e067f8', '08 July 2010': 'a49f3b6ecde9e2dcb76f9b99d770a4a8', '12 November 2010': 'b8a45259fa23a628ff56429905b29431', '26 January 2011': 'aedc18aa6a011480b128b9370335955a', '10 June 2010': 'b0a75f15ace1c8a7dea30ecf4644b202', '28 May 2010': 'c1644081c2dbc4d8dfd85f1e46ea9608', '22 October 2010': 'f7aefdc7bcab370905d2ba572576c147'}, 'Lmon': {'11 May 2010': '3bdcaebc6b08a7cf84415feeebed8b9c', '25 October 2010': '4bcce5e25736cea8e87a0cf8df09d34b', '19 October 2010': '8708d6b811ce32c5ac3e719701b14ce4', '24 May 2010': '2d93d785985c4d6c29da2f33368f61e5', '28 March 2011': '7e3724f7ab2d03605f40c6a3b60612fc', '09 June 2010': '24235e017983479779ba51d8187fe0d9', '26 July 2011': '07f3ab0937f49f401723ad1417906100', '12 May 2010': 'cde39468cd5a720342c94322249adf63', '31 January 2011': 'a84ae296f75bb85ff61668fac8fcf090', '23 August 2010': '3adb2b84ff9e8210239a898e53f5389e', '01 June 2010': 'c48b42eebfd300346db30ce97f70737a', '02 April 2010': 'ac27db67ef68191b5d710de35ca2d6b1', '11 April 2011': '738e0f61cb381d2b73d949ee76b893de', '26 April 2010': '6ca0347f544e3cbdb6f036f7f78b1669', '01 July 2010': 'cb7918fa6a401588ea5b194aaa1f481f', '06 January 2011': 'da7a3c5988b6174b05e36686be3cafb6', '11 November 2010': 'aff8b007563b8c83aec4d731b21835d1', '14 September 2010': 'c7a5c6fae283b7a4ae764a8b0a6cf6b0', '12 March 2010': '5f1e824244e15c318d61f9c0e539f8c2', '17 July 2013': '3f17a25f6a4bcd4bb2ac6986db9359fc', '22 March 2012': 'cdd8311a8ac03848f31b8b5ec9736d78', '22 March 2010': 'a268b38f8737db32cf38be9b5f997dbc', '07 July 2010': '8d8da76e0dcfadd9cad44cb4a187c4fb', '17 September 2010': 'ceb4ec55b9ad65c6f8d4ef3aff1b8ca1', '12 January 2012': '02d5e7d546567ffd5638e5a7d7215fd5', '30 November 2010': '09ab215e1245c7bd2d3fe9c53b1fa861', '29 April 2010': '486b93eeab6a8793a42b2ba233079b6a', '02 August 2010': 'ba5be640353d2ba4bac20188c9438474', '27 April 2011': 'c4244dce0826a43bb0b259f293e2f742', '08 July 2010': '5aaeda289feb0bee3496e285042f6b72', '12 November 2010': '4e65f23a1cd47b3cbe702ff175acc8f6', '26 January 2011': '7c33b644f9e48e2fd9eda21d7240c1c4', '10 June 2010': '53a27e7c52ace60c3bfa0bfd66c0fe4a', '28 May 2010': 'abfd32f1054e75241246b8a4449b0eba', '22 October 2010': '1e6fa7d06912c4884f3f72cea9eb2492'}, 'LImon': {'11 May 2010': '2c39ed63325a36eb52e9425cb4a16a1f', '25 October 2010': '713e2174b2678f385bb233cb63467945', '19 October 2010': 'df91f6e721af3fc4d1d8358b1c709255', '24 May 2010': '81451608bae8fbaa0ef31578b83718cb', '28 March 2011': 'a1fb39be5c00cd06608993110cee9005', '09 June 2010': 'b11403de802f1788fc788ed12f22b548', '26 July 2011': '8dd5995fc9b4340cea492b7027b31c57', '12 May 2010': '2e68c69013fe51ec2c3850361ff39732', '31 January 2011': '6f05b7e5f64aaa34bcac127ca47ac655', '23 August 2010': 'e8b5f402770c03fbec87cb26f4c1c3cc', '01 June 2010': 'd0621fc868ff7c9b891e9780b9ab510e', '02 April 2010': 'ab39191bfac44f43ab9f50e330e20bf1', '11 April 2011': 'b51a5c08cdf6593edd03c7b1c311d305', '26 April 2010': '2ea85da118570c7aa0de9b33671eb302', '01 July 2010': '4a435e63edd293e2638156647a8d7d7e', '06 January 2011': '2dbb6147ef54c3e854307e67cdd5ae5e', '11 November 2010': '89a033f5ceb8d6f13b7ef728dbf738fa', '14 September 2010': '85b01c51d739c91b9796720d36bf1abd', '12 March 2010': 'bc6b4c7356aac811cc5712a1f10c17ee', '17 July 2013': '06603759dd6e0093c7e59c0984656013', '22 March 2012': '8d4296ff4ac0853292ed3be722dc81b8', '22 March 2010': '031807f20998b0c51a8047d3ceb12262', '07 July 2010': 'b2c497d9da0a240d17b56ed376c0ae88', '17 September 2010': 'a58d1ba22107a26336ab73b6d712339d', '12 January 2012': '429410275cb5466e41180ad9466db1bf', '30 November 2010': '95db1553ea05869663d3b9cc833406f6', '29 April 2010': 'ced6aa36efacd3afc3f2ce7255b30ae5', '02 August 2010': '87e81cbc9bc41adce07f59e9e416e975', '27 April 2011': '5a70adac85c24b52fe62c758c1dca0e5', '08 July 2010': '964bf6217e86c6fa7f0d047fa688bca6', '12 November 2010': 'b770dc951b9dfd10cb4402dcaa33c989', '26 January 2011': '9b9f13ba37c3bdbd0ad1cc784ad600a6', '10 June 2010': 'b1a9cedd3e8f0e05132021c71e9d7b1e', '28 May 2010': 'df3676a657c1b1822899320d91cdd45e', '22 October 2010': '43760bb3c90e35316e52f690cf7c9c8b'}, 'Oclim': {'11 May 2010': 'ea596ac32110c9af6ad049df23cf79d7', '25 October 2010': '278f8f457d03aaf9668f931e1d7f3ab1', '19 October 2010': '4351865a4833758c697babe4d68c255b', '24 May 2010': 'a2a559c2dc85db5701276e96d5325eaf', '28 March 2011': 'af155c646b8f0d87c769270d6e0a119c', '09 June 2010': 'e758cabca10ef3eba914e702a82cbc8d', '26 July 2011': '80851943347ebbdf69f69e0ea94c1061', '12 May 2010': '1e672f0814f4ff3b51a56b02efa6c223', '31 January 2011': '760664bb5b8e6901a5c0f3e14486c01a', '23 August 2010': '41857f0b51401b5b692a61b8fe73db7c', '01 June 2010': '821d9f0558ee9f605382e04e48313832', '02 April 2010': '626aa1883608cf471a97824c56d0295a', '11 April 2011': '02c858e13f41cc2d92dde421ff54f504', '26 April 2010': 'c4d9d68f7579b2d83fad74076410d9e3', '01 July 2010': 'cf37d4050f491b3054ce3aff355f325a', '06 January 2011': 'd60ad4b93a87f0b999e24e93901360ff', '11 November 2010': 'a0c992659e5ed596fdc3f814123e5ef7', '14 September 2010': 'a85f9e014db585172e9ae6d20947fa18', '12 March 2010': '66bbb3618539b3bd9720ee049ac3f8d4', '17 July 2013': '347d8e8b26687a88462b5ed71c4ef21f', '22 March 2012': 'cf6def352e089b3109600d2305498370', '22 March 2010': 'af94edbc6cbef78448bfbf205ff53b04', '07 July 2010': 'dbdbcab9408bccebb9f03f59f9b253bc', '17 September 2010': '0bb5e199da1eea041c2411395e6c29d4', '12 January 2012': '6af43a186515f2dc603ea7cfced6f0c7', '30 November 2010': '3faf830a70da60f6064baa497b0ed3d4', '29 April 2010': 'da5cdaae6606be02175b87f4cc73cd1c', '02 August 2010': 'cc1bd091f0b33b35672f656805035da2', '27 April 2011': '5145db518d4d2958d20716b09139a8e3', '08 July 2010': '5a1650d13a86a83443fff681c7303707', '12 November 2010': '840d91afdad624b8241f7ff38de44adb', '26 January 2011': '984ef37481065dfe0c3214c5ce6999d9', '10 June 2010': '48d6fa0d97b3a6159cf039f2a5e41803', '28 May 2010': 'cce203c9dbc5d1cdd4f8639feb11757e', '22 October 2010': 'f0995bb3540918248642d83f676b8c83'}, 'aero': {'11 May 2010': 'f3f04dd2803fd9f09378d1e070386238', '25 October 2010': '202ffc3995132adb3bd2385b89cc3f66', '19 October 2010': 'a83891905bd34dee25925aa6d27471ce', '24 May 2010': '9c14b6368899a609bddcdf4f2c6a87e0', '28 March 2011': '3c35c0cf88f2412e83111f76f85a34de', '09 June 2010': 'fc8c961ac56217ed234bcbd462febb39', '26 July 2011': 'aa8461434060b130391069fa7489bcec', '12 May 2010': 'c0414e2be70762db35f57263b0db6bfc', '31 January 2011': '5ccd9f8dcb6eecb7eb87cd2da96d71b1', '23 August 2010': '2b6afd9f307ba2e81eb0484a12cc6781', '01 June 2010': '889c4d971b1cdceaa0192ba2f19e68a5', '02 April 2010': '7dfe8b88ec6d4469f73fda3656878961', '11 April 2011': '7af7735a90e67d75062719e436036922', '26 April 2010': '6cf1c533eac9c1498e31bf2f7b428257', '01 July 2010': '4e6c9a559b9cabfc3c6edc2c75fe05de', '06 January 2011': '45095d017de4a205937f47f05d4301ea', '11 November 2010': '1c4fdbbe285eb1db3f496cd94c016c06', '14 September 2010': 'dbf204fe4bbe08dd65650b4b35fcc0e2', '12 March 2010': '311409dd6ec2f6ca3570883eaf4031d9', '17 July 2013': '67d8080f36b1421b5a728ca4384c497f', '22 March 2012': 'fcf23342589381a14766bade9347b431', '22 March 2010': '6334a63f2189bb96a76f901ca28adee8', '07 July 2010': '65234a982c7456d02ce35e21066079e0', '17 September 2010': 'd60806d6e45693c33aa75b72553b4cdb', '12 January 2012': '7b038f25485fcf0c3b600236a3ca00b8', '30 November 2010': 'c17c102d70e3579b0b30f8bcef04fa5b', '29 April 2010': '5820b48505bc340af3edb4c0c42157b6', '02 August 2010': 'cd16909cd1f10eefe3237b99ff2ad51a', '27 April 2011': '10c8207daaf67434c6a62c0879b6672f', '08 July 2010': 'f0c9067404749b76ac2b4088578fc843', '12 November 2010': '93f59c16ecbdc49c1ee4dee99777a956', '26 January 2011': 'db143dcb89dfd4f3158cd6adfe0808f4', '10 June 2010': '8fc5f354376074baa9ce77627428c311', '28 May 2010': '8feb21a197cb526881cc9657bdab9330', '22 October 2010': 'bd0d2155a9d5243191ba6b17d5fbbefe'}, 'OImon': {'11 May 2010': '103618d145733750a056304043dea567', '25 October 2010': '1c15b894e8ddf35db73d9419d0d26f7f', '19 October 2010': 'd46e90e0e0a75aa139767038c5f740ad', '24 May 2010': '1beefee61a3bfec498239b121bb53683', '28 March 2011': '4119f48afb28286f0bd4482bd27bbeda', '09 June 2010': '6a5c5c35499a211826b799b52f8e7950', '26 July 2011': 'b40ae6f6b2a738f91076c512dcfee1a5', '12 May 2010': '9acf9f47257b510743ffa661427ae56a', '31 January 2011': '7649fde668723a3e5dd328cc2399b364', '23 August 2010': '08b0e447c93c55277eb2a126b30787e4', '01 June 2010': '176270b2b413b0635e764722ec6d32ff', '02 April 2010': 'e29411ff7991e012460112cb6e56e995', '11 April 2011': 'c685058342b6615c12d34dc34a53e6fa', '26 April 2010': '09d3db3faf545ecab63cdf0570e167f7', '01 July 2010': 'eff1001750d564668899035e9c809daa', '06 January 2011': 'c9836f72f2207843e6503390f984a68a', '11 November 2010': '98ed8162e89fb01d26ac13193deff8de', '14 September 2010': '2005da0bafad21c45e5e407f81997e1e', '12 March 2010': '24030fd1d63ab32ff3cd30783a121b24', '17 July 2013': '284780dd070e05cf3b6d564becf53447', '22 March 2012': 'e0a98ec1a5ae3f27923f029258e5a8b6', '22 March 2010': 'fcc3c126b4bf370a4eeeb921a037a0ac', '07 July 2010': '23d2e048cf1a71560bf0f856e176cc85', '17 September 2010': '4d997579a4d1a4220ae40a424235f76d', '12 January 2012': 'e70c4c96670ab4edf2a973588de6b0a8', '30 November 2010': 'b52736bf3da66f7e8afb025a4e063254', '29 April 2010': '0dd76c65223b6e12650f856470bd0ad0', '02 August 2010': '7b23f2e63cbecae1f21891f8464ce96e', '27 April 2011': 'f04ba250f3acd5b9e847c21d5752eb85', '08 July 2010': 'c3b0fc073f2c782acec50aca801f8ad6', '12 November 2010': '03f02ea4095411dc669446a2cfbc3e79', '26 January 2011': '21cb2b8c4084754fe931ea77eedfd5e1', '10 June 2010': '22c644a4b828f6ef1662bc579cd89180', '28 May 2010': '0b99be09f2f5e979dbbe1044cf769788', '22 October 2010': '641db0e7174a9de9d31c7077b7e55f6a'}, 'day': {'11 May 2010': '097898d568f041c78a5762c3204741d1', '17 September 2010': '63c2ab71b595df5d8d61abc68f564361', '19 October 2010': 'ad573249f4be2751a5f15acdbd756053', '24 May 2010': '939277b33ceefa59d757386f19df3daf', '28 March 2011': 'f9d6cfec5981bb8be1801b35a81002f0', '12 May 2010': 'f130b8ed0705d49c749410c0519c50cb', '26 July 2011': 'f21c16b785432e6bd3f72e80f2cade49', '09 June 2010': 'd734c20e0247d5225e251a20e81ea334', '31 January 2011': 'c8f74e5cf93cc3c793fd594b88985924', '23 August 2010': '1b99baf1d84aa896f697fa1ae705df49', '01 June 2010': 'f6d5b1f45bf471d6bdbe263511650daa', '02 April 2010': 'a66b43262f9760ebcfed1cb559e9605b', '11 April 2011': 'ec52f6ea2595168e5458ad1b950fd49c', '26 April 2010': '12db04043a6cc43b26a6d867eb1e5d4c', '17 July 2013': 'd915e7f305fb050357c850dfe58d74f0', '01 July 2010': '45a083491108c94c715b099123340e9f', '11 November 2010': '02fff6a0b228e556b1acb03a9e553fa7', '14 September 2010': 'a4406d244d9b328488dc24529e0a4e22', '12 March 2010': '6bae9f270feeb5f2d2b5c84de2169d64', '29 April 2010': 'bb5cba05f7393acf99fb834fc54386aa', '22 March 2012': '68011aa0526272fcf0c7f6e7c169ce7d', '22 March 2010': '4d3286d18536c46089ed5dd49cfc0ea9', '07 July 2010': 'de282381d47617aa063a359b5f5724c3', '10 February 2011': '80e409bd73611e9d25d049ad2059c310', '25 October 2010': '783d839767ea9baa68394aefe0d77366', '12 January 2012': '7757d80c56ae0b9009f150afa4850c4e', '30 November 2010': '124740b2ad2bc003e05675678080dc82', '06 January 2011': '2e7604bce6801aa60f87ad347864339e', '02 August 2010': 'e4b6951c15b2bdba4ae7cb895c1dc807', '27 April 2011': '86d1558d99b6ed1e7a886ab3fd717b58', '08 July 2010': 'fbcb83f3874789bb7fbb8f47c97d9582', '12 November 2010': '53fa6f63b86081d1c644183416239052', '26 January 2011': '9a27ee7f81e496bab3c115387badb11e', '10 June 2010': 'f57b2364514d33637da41688a903add2', '28 May 2010': '71ced75543fdae82dd6bc69b91052690', '22 October 2010': 'fbf1870c17e4797ed126e747f182b660'}, 'cfDa': {'11 March 2010': 'dfc578ef208dab9572d445e4ca3834ed'}}} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/cmip6/README.md b/esmvaltool/cmor/tables/cmip6/README.md deleted file mode 100644 index 19d535de2c..0000000000 --- a/esmvaltool/cmor/tables/cmip6/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# cmip6-cmor-tables - -## Data Request 01.00.30 (March 11, 2019) - -Source is https://github.com/PCMDI/cmip6-cmor-tables - -- branch: 01.00.30 -- commit: c9089bf17e81d5dcc41a839e8299cee69da890d3 - diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_3hr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_3hr.json deleted file mode 100644 index d9eb7a6f6f..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_3hr.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table 3hr", - "realm": "atmos", - "frequency": "3hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.125000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "clt": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time1 height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrro": { - "modeling_realm": "land", - "standard_name": "runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Runoff", - "comment": "The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "mrro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsos": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Moisture in Upper Portion of Soil Column", - "comment": "The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions": "longitude latitude time1 sdepth1", - "out_name": "mrsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", - "comment": "Surface downwelling clear-sky longwave radiation", - "dimensions": "longitude latitude time", - "out_name": "rldscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", - "comment": "surface solar irradiance clear sky for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsdscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdsdiff": { - "modeling_realm": "atmos", - "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Diffuse Downwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsdsdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "longitude latitude time", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time1 height2m", - "out_name": "tas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tslsi": { - "modeling_realm": "land", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean (comment: over land and sea ice) time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature Where Land or Sea Ice", - "comment": "'skin' temperature of all surfaces except open ocean.", - "dimensions": "longitude latitude time1", - "out_name": "tslsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tso": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "K", - "cell_methods": "area: mean where sea time: point", - "cell_measures": "area: areacella", - "long_name": "Sea Surface Temperature", - "comment": "temperature of surface of open ocean, sampled synoptically.", - "dimensions": "longitude latitude time1", - "out_name": "tso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind Speed", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time1 height10m", - "out_name": "uas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind Speed", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time1 height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrLev.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrLev.json deleted file mode 100644 index e2ca5a56d6..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrLev.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table 6hrLev", - "realm": "atmos", - "frequency": "6hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.250000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "bs550aer": { - "modeling_realm": "aerosol", - "standard_name": "volume_lidar_backwards_scattering_coefficient_in_air_due_to_ambient_aerosol_particles", - "units": "m-1 sr-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Aerosol backscatter coefficient", - "comment": "Aerosol Backscatter @550nm @ 180 degrees, computed from extinction and lidar ratio", - "dimensions": "longitude latitude alevel time1", - "out_name": "bs550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ec550aer": { - "modeling_realm": "aerosol", - "standard_name": "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", - "units": "m-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Aerosol extinction coefficient", - "comment": "Aerosol Extinction @550nm", - "dimensions": "longitude latitude alevel time1", - "out_name": "ec550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pmlev": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure", - "comment": "The atmospheric pressure at the model layer midpoints for all times and levels in the associated output variables", - "dimensions": "longitude latitude alevel time", - "out_name": "pmlev", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude alevel time1", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: point", - "cell_measures": "--OPT", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: point", - "cell_measures": "--OPT", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlev.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlev.json deleted file mode 100644 index ec8a1fc662..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlev.json +++ /dev/null @@ -1,358 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table 6hrPlev", - "realm": "atmos", - "frequency": "6hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.250000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "bldep": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Boundary Layer Depth", - "comment": "Boundary layer depth", - "dimensions": "longitude latitude time", - "out_name": "bldep", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hurs": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude time height2m", - "out_name": "hurs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus4": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev4 time", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prhmax": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: mean within hours time: maximum over hours", - "cell_measures": "area: areacella", - "long_name": "Maximum Hourly Precipitation Rate", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prhmax", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rv850": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_relative_vorticity", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Relative Vorticity at 850 hPa", - "comment": "", - "dimensions": "longitude latitude time p850", - "out_name": "rv850", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua100m": { - "modeling_realm": "", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 100m", - "comment": "Zonal wind at 100m height", - "dimensions": "longitude latitude time height100m", - "out_name": "ua100m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua200": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 200hPa", - "comment": "Zonal wind (positive eastwards) at 200hPa", - "dimensions": "longitude latitude time p200", - "out_name": "ua200", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua850": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 850 hPa", - "comment": "Zonal wind on the 850 hPa surface", - "dimensions": "longitude latitude time p850", - "out_name": "ua850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time height10m", - "out_name": "uas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va100m": { - "modeling_realm": "", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind at 100m", - "comment": "Meridional wind at 100m above the surface.", - "dimensions": "longitude latitude time height100m", - "out_name": "va100m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va200": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "Northward component of the wind", - "dimensions": "longitude latitude time p200", - "out_name": "va200", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va850": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "Northward component of the wind at 850hPa", - "dimensions": "longitude latitude time p850", - "out_name": "va850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap4": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev4 time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wsgmax100m": { - "modeling_realm": "", - "standard_name": "wind_speed_of_gust", - "units": "m s-1", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Maximum Wind Speed of Gust at 100m", - "comment": "Wind speed gust maximum at 100m above surface", - "dimensions": "longitude latitude time height100m", - "out_name": "wsgmax100m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wsgmax10m": { - "modeling_realm": "", - "standard_name": "wind_speed_of_gust", - "units": "m s-1", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Maximum Wind Speed of Gust at 10m", - "comment": "Wind speed gust maximum at 10m above surface", - "dimensions": "longitude latitude time height10m", - "out_name": "wsgmax10m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg1000": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 1000 hPa", - "comment": "Geopotential height on the 1000 hPa surface", - "dimensions": "longitude latitude time p1000", - "out_name": "zg1000", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlevPt.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlevPt.json deleted file mode 100644 index fae0c042d5..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_6hrPlevPt.json +++ /dev/null @@ -1,681 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table 6hrPlevPt", - "realm": "atmos", - "frequency": "6hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "albsrfc": { - "modeling_realm": "aerosol", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "surface albedo", - "comment": "", - "dimensions": "longitude latitude time1", - "out_name": "albsrfc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldicemxrat27": { - "modeling_realm": "atmos", - "standard_name": "cloud_ice_mixing_ratio", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Cloud Ice Mixing Ratio", - "comment": "Cloud ice mixing ratio", - "dimensions": "longitude latitude plev27 time1", - "out_name": "cldicemxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldwatmxrat27": { - "modeling_realm": "atmos", - "standard_name": "cloud_liquid_water_mixing_ratio", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Cloud Water Mixing Ratio", - "comment": "Cloud water mixing ratio", - "dimensions": "longitude latitude plev27 time1", - "out_name": "cldwatmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtauc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_convective_cloud", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Optical Depth", - "comment": "This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell", - "dimensions": "longitude latitude time1", - "out_name": "dtauc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtaus": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_stratiform_cloud", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Cloud Optical Depth", - "comment": "This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell.", - "dimensions": "longitude latitude time1", - "out_name": "dtaus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grplmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_graupel_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Graupel Mixing Ratio", - "comment": "Graupel mixing ratio", - "dimensions": "longitude latitude plev27 time1", - "out_name": "grplmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus27": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev27 time1", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus7h": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time1 height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwsffluxaero": { - "modeling_realm": "atmos", - "standard_name": "longwave__flux__due_to_volcanic_aerosols_at_the_surface", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Longwave flux due to volcanic aerosols at the surface", - "comment": "downwelling longwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call", - "dimensions": "longitude latitude time1", - "out_name": "lwsffluxaero", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwtoafluxaerocs": { - "modeling_realm": "atmos", - "standard_name": "longwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Longwave flux due to volcanic aerosols at TOA under clear sky", - "comment": "downwelling longwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", - "dimensions": "longitude latitude time1", - "out_name": "lwtoafluxaerocs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrlsl": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Water Content of Soil Layer", - "comment": "The mass of water in all phases, including ice, in soil layers. Report as missing for grid cells with no land.", - "dimensions": "longitude latitude time1 sdepth1", - "out_name": "mrlsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsos": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Moisture in Upper Portion of Soil Column", - "comment": "The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions": "longitude latitude time1 sdepth1", - "out_name": "mrsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull27": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Levels", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude plev27 time1", - "out_name": "pfull", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time1", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rainmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_rain_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "rain_mixing_ratio", - "comment": "Rain mixing ratio", - "dimensions": "longitude latitude plev27 time1", - "out_name": "rainmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rv850": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_relative_vorticity", - "units": "s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Relative Vorticity at 850 hPa", - "comment": "", - "dimensions": "longitude latitude time1 p850", - "out_name": "rv850", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time1 height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snowmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_snow_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "snow_mixing_ratio", - "comment": "Snow mixing ratio", - "dimensions": "longitude latitude plev27 time1", - "out_name": "snowmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snw": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_amount", - "units": "kg m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Snow Amount", - "comment": "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.", - "dimensions": "longitude latitude time1", - "out_name": "snw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swsffluxaero": { - "modeling_realm": "atmos", - "standard_name": "shortwave__flux_due_to_volcanic_aerosols_at__the_surface", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Shortwave heating rate due to volcanic aerosols", - "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", - "dimensions": "longitude latitude time1", - "out_name": "swsffluxaero", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swtoafluxaerocs": { - "modeling_realm": "atmos", - "standard_name": "shortwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Shortwave flux due to volcanic aerosols at TOA under clear sky", - "comment": "downwelling shortwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", - "dimensions": "longitude latitude time1", - "out_name": "swtoafluxaerocs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev3 time1", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta27": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev27 time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta7h": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev7h time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time1 height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time1", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsl": { - "modeling_realm": "land", - "standard_name": "soil_temperature", - "units": "K", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", - "dimensions": "longitude latitude time1 sdepth1", - "out_name": "tsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev3 time1", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua7h": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time1 height10m", - "out_name": "uas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev3 time1", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va7h": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time1 height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vortmean": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_relative_vorticity", - "units": "s-1", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "atmosphere_relative_vorticity", - "comment": "Mean vorticity over 850,700,600 hPa", - "dimensions": "longitude latitude time1 pl700", - "out_name": "vortmean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wbptemp7h": { - "modeling_realm": "atmos", - "standard_name": "wet_bulb_potential_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "wet_bulb_potential_temperature", - "comment": "Wet bulb potential temperature", - "dimensions": "longitude latitude plev7h time1", - "out_name": "wbptemp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg27": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev27 time1", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg500": { - "modeling_realm": "aerosol", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 500 hPa", - "comment": "geopotential height on the 500 hPa surface", - "dimensions": "longitude latitude time1 p500", - "out_name": "zg500", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg7h": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERday.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERday.json deleted file mode 100644 index 99c62be838..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERday.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table AERday", - "realm": "aerosol", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "cod": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "cloud optical depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cod", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "maxpblz": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "maximum PBL height", - "comment": "maximum boundary layer height during the day (add cell_methods attribute: 'time: maximum')", - "dimensions": "longitude latitude time", - "out_name": "maxpblz", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "minpblz": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacella", - "long_name": "minimum PBL height", - "comment": "minimum boundary layer height during the day (add cell_methods attribute: 'time: minimum')", - "dimensions": "longitude latitude time", - "out_name": "minpblz", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol optical thickness at 550 nm", - "comment": "AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", - "dimensions": "longitude latitude time", - "out_name": "od550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfo3max": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "daily maximum O3 volume mixing ratio in lowest model layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sfo3max", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "toz": { - "modeling_realm": "aerosol", - "standard_name": "equivalent_thickness_at_stp_of_atmosphere_ozone_content", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Column Ozone", - "comment": "total ozone column in DU", - "dimensions": "longitude latitude time", - "out_name": "toz", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua10": { - "modeling_realm": "aerosol", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 10 hPa", - "comment": "Zonal wind on the 10 hPa surface", - "dimensions": "longitude latitude time p10", - "out_name": "ua10", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg10": { - "modeling_realm": "aerosol", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 10 hPa", - "comment": "Geopotential height on the 10 hPa surface", - "dimensions": "longitude latitude time p10", - "out_name": "zg10", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg100": { - "modeling_realm": "aerosol", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 100 hPa", - "comment": "Geopotential height on the 100 hPa surface", - "dimensions": "longitude latitude time p100", - "out_name": "zg100", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg1000": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 1000 hPa", - "comment": "Geopotential height on the 1000 hPa surface", - "dimensions": "longitude latitude time p1000", - "out_name": "zg1000", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg500": { - "modeling_realm": "aerosol", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height at 500 hPa", - "comment": "geopotential height on the 500 hPa surface", - "dimensions": "longitude latitude time p500", - "out_name": "zg500", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERhr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERhr.json deleted file mode 100644 index e8f32a625e..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERhr.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table AERhr", - "realm": "aerosol", - "frequency": "hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfno2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitrogen_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NO2 volume mixing ratio in lowest model layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sfno2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfo3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "O3 volume mixing ratio in lowest model layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sfo3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfpm25": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_pm2p5_ambient_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "PM2.5 mass mixing ratio in lowest model layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sfpm25", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmon.json deleted file mode 100644 index 5cd1dfb501..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmon.json +++ /dev/null @@ -1,2194 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table AERmon", - "realm": "aerosol", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "abs550aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol absorption optical thickness at 550 nm", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "abs550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "airmass": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_mass_of_air_per_unit_area", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Vertically integrated mass content of air in layer", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "airmass", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albs": { - "modeling_realm": "aerosol", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "planetary albedo", - "comment": "Grid cell average albedo for all wavelengths.", - "dimensions": "longitude latitude time", - "out_name": "albs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albsrfc": { - "modeling_realm": "aerosol", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "surface albedo", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "albsrfc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aoanh": { - "modeling_realm": "aerosol", - "standard_name": "tracer_lifetime", - "units": "yr", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tracer age of air Northern Hemisphere", - "comment": "Fixed surface layer mixing ratio over 30o-50oN (0 ppbv), uniform fixed source (at all levels) everywhere else (source is unspecified but must be constant in space and time and documented). Note that the source could be 1yr/yr, so the tracer concentration provides mean age in years. For method using linearly increasing tracer include a method attribute: 'linearly increasing tracer'For method using uniform source (1yr/yr) include a method attribute: 'uniform source'", - "dimensions": "longitude latitude alevel time", - "out_name": "aoanh", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bldep": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Boundary Layer Depth", - "comment": "Boundary layer depth", - "dimensions": "longitude latitude time", - "out_name": "bldep", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c2h2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ethyne_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "C2H2 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "c2h2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c2h6": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ethane_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "C2H6 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "c2h6", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c3h6": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_propene_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "C3H6 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "c3h6", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c3h8": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_propane_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "C3H8 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "c3h8", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ccn": { - "modeling_realm": "aerosol", - "standard_name": "number_concentration_of_cloud_condensation_nuclei_at_stp_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "cloud condensation nuclei concentration at liquid cloud top", - "comment": "proposed name: number_concentration_of_ambient_aerosol_in_air_at_liquid_water_cloud_top", - "dimensions": "longitude latitude time", - "out_name": "ccn", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cdnc": { - "modeling_realm": "aerosol", - "standard_name": "number_concentration_of_cloud_liquid_water_particles_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Liquid Droplet Number Concentration", - "comment": "Cloud Droplet Number Concentration in liquid water clouds.", - "dimensions": "longitude latitude alevel time", - "out_name": "cdnc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch3coch3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_acetone_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CH3COCH3 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "ch3coch3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CH4 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "ch4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cheaqpso4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_aqueous_phase_net_chemical_production", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aqueous-phase production rate of SO4", - "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_aqueous_phase_net_chemical_production", - "dimensions": "longitude latitude alevel time", - "out_name": "cheaqpso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chegpso4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_gaseous_phase_net_chemical_production", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Gas-phase production rate of SO4", - "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_gas_phase_net_chemical_production", - "dimensions": "longitude latitude alevel time", - "out_name": "chegpso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chepasoa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total net production of anthropogenic secondary organic aerosol", - "comment": "anthropogenic part of chepsoa", - "dimensions": "longitude latitude time", - "out_name": "chepasoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chepsoa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "chemical production of dry aerosol secondary organic matter", - "comment": "If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as OA emissions. ''mass'' refers to the mass of primary organic matter, not mass of organic carbon alone.", - "dimensions": "longitude latitude time", - "out_name": "chepsoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltc": { - "modeling_realm": "aerosol", - "standard_name": "convective_cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Area Fraction", - "comment": "Convective cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes only convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "cltc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_carbon_monoxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CO volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "co", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_carbon_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CO2 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "co2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cod": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "cloud optical depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cod", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dms": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "DMS volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "dms", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drybc": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of black carbon aerosol mass", - "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "drybc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drydust": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of dust", - "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "drydust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drynh3": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of nh3", - "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", - "dimensions": "longitude latitude time", - "out_name": "drynh3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drynh4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of nh4", - "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", - "dimensions": "longitude latitude time", - "out_name": "drynh4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drynoy": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of noy", - "comment": "NOy is the sum of all simulated oxidized nitrogen species out of NO, NO2, HNO3, HNO4, NO3aerosol, NO3(radical), N2O5, PAN, other organic nitrates. Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "drynoy", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dryo3": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of o3", - "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "dryo3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dryoa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of dry aerosol total organic matter", - "comment": "Tendency of atmosphere mass content of organic dry aerosol due to dry deposition: This is the sum of dry deposition of POA and dry deposition of SOA (see next two entries). 'Mass' refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Was called dry_pom in old ACCMIP Excel table. Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "dryoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dryso2": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of so2", - "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", - "dimensions": "longitude latitude time", - "out_name": "dryso2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dryso4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of so4", - "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", - "dimensions": "longitude latitude time", - "out_name": "dryso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dryss": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_dry_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dry deposition rate of seasalt", - "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", - "dimensions": "longitude latitude time", - "out_name": "dryss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiaco": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of anthropogenic co", - "comment": "anthrophogenic emission of CO", - "dimensions": "longitude latitude time", - "out_name": "emiaco", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emianox": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "anthropogenic emission rate of nox", - "comment": "Store flux as Nitrogen. Anthropogenic fraction. NOx=NO+NO2, Includes agricultural waste burning but no other biomass burning. Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emianox", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiaoa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production_and_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission of anthropogenic organic aerosol", - "comment": "anthropogenic part of emioa", - "dimensions": "longitude latitude time", - "out_name": "emiaoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emibc": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "emission rate of black carbon aerosol mass", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emibc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emibvoc": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_biogenic_nmvoc_expressed_as_carbon_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of biogenic nmvoc", - "comment": "Integrate 3D emission field vertically to 2d field._If_ fixed molecular weight of NMVOC is not available in model, please provide in units of kilomole m-2 s-1 (i.e. kg m-2 s-1 as if model NMVOC had molecular weight of 1) and add a comment to your file.", - "dimensions": "longitude latitude time", - "out_name": "emibvoc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emico": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of co", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emico", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emidms": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of dms", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emidms", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emidust": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of dust", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emidust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiisop": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_isoprene_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of isoprene", - "comment": "Integrate 3D emission field vertically to 2d field", - "dimensions": "longitude latitude time", - "out_name": "emiisop", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emilnox": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_moles_of_nox_expressed_as_nitrogen", - "units": "mol s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "layer-integrated lightning production of NOx", - "comment": "Integrate the NOx production for lightning over model layer. proposed name: tendency_of_atmosphere_mass_content_of_nox_from_lightning", - "dimensions": "longitude latitude alevel time", - "out_name": "emilnox", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "eminh3": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of nh3", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "eminh3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "eminox": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of nox", - "comment": "NOx=NO+NO2. Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "eminox", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emioa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_net_chemical_production_and_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "primary emission and chemical production of dry aerosol organic matter", - "comment": "This is the sum of total emission of POA and total production of SOA (emipoa+chepsoa). ''Mass'' refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Integrate 3D chemical production and emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emioa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiso2": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of so2", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emiso2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiso4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total direct emission rate of so4", - "comment": "Direct primary emission does not include secondary sulfate production. Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emiso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emiss": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of seasalt", - "comment": "Integrate 3D emission field vertically to 2d field.", - "dimensions": "longitude latitude time", - "out_name": "emiss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "emivoc": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_nmvoc_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total emission rate of nmvoc", - "comment": "Integrate 3D emission field vertically to 2d field. _If_ fixed molecular weight of NMVOC is not available in model, please provide in units of kilomole m-2 s-1 (i.e. kg m-2 s-1 as if model NMVOC had molecular weight of 1) and add a comment to your file.", - "dimensions": "longitude latitude time", - "out_name": "emivoc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "h2o": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Water vapour volume mixing ratio", - "comment": "includes all phases of water", - "dimensions": "longitude latitude alevel time", - "out_name": "h2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcho": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_formaldehyde_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Formaldehyde volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "hcho", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcl": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_hydrogen_chloride_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "HCl volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "hcl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hno3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitric_acid_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "HNO3 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "hno3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "isop": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_isoprene_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Isoprene volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "isop", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jno2": { - "modeling_realm": "aerosol", - "standard_name": "photolysis_rate_of_nitrogen_dioxide", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "photolysis rate of NO2", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "jno2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lossch4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mole_concentration_of_methane_due_to_chemical_destruction", - "units": "mol m-3 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Monthly Loss of atmospheric Methane", - "comment": "monthly averaged atmospheric loss", - "dimensions": "longitude latitude alevel time", - "out_name": "lossch4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lossco": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_of_mole_concentration_of_carbon_monoxide_due_to_chemical_destruction", - "units": "mol m-3 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Monthly Loss of atmospheric Carbon Monoxide", - "comment": "monthly averaged atmospheric loss", - "dimensions": "longitude latitude alevel time", - "out_name": "lossco", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lossn2o": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_of_mole_concentration_of_nitrous_oxide_due_to_chemical_destruction", - "units": "mol m-3 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Monthly Loss of atmospheric Nitrous Oxide", - "comment": "monthly averaged atmospheric loss", - "dimensions": "longitude latitude alevel time", - "out_name": "lossn2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwp": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_mass_content_of_cloud_liquid_water", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "liquid water path", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "lwp", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmraerh2o": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_water_in_ambient_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol water mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmraerh2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrbc": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Elemental carbon mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrbc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrdust": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_dust_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Dust aerosol mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrdust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrnh4": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_ammonium_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NH4 mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrnh4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrno3": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_nitrate_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NO3 aerosol mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrno3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmroa": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total organic aerosol mass mixing ratio", - "comment": "We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available.", - "dimensions": "longitude latitude alevel time", - "out_name": "mmroa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrpm1": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_pm1_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "PM1.0 mass mixing ratio", - "comment": "E.g. mass_fraction_of_pm1_aerosol_at_50_percent_relative_humidity_in_air. proposed name: mass_fraction_of_pm1_dry_aerosol_in_air", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrpm1", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrpm10": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_pm10_ambient_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "PM10 mass mixing ratio", - "comment": "E.g. mass_fraction_of_pm10_aerosol_at_50_percent_relative_humidity_in_air, proposed name: mass_fraction_of_pm10_dry_aerosol_in_air", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrpm10", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrpm2p5": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_pm2p5_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "PM2.5 mass mixing ratio", - "comment": "E.g. mass_fraction_of_pm2p5_aerosol_at_50_percent_relative_humidity_in_air, proposed_name: mass_fraction_of_pm2p5_dry_aerosol_in_air", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrpm2p5", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrso4": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_sulfate_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol sulfate mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrsoa": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_secondary_particulate_organic_matter_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Secondary organic aerosol mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrsoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrss": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_seasalt_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Salt mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "mmrss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2o": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "N2O volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "n2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh50": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_artificial_tracer_with_fixed_lifetime_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Artificial tracer with 50 day lifetime", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "nh50", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitrogen_monoxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NO volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "no", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitrogen_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NO2 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "no2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ozone volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "o3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3loss": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_destruction", - "units": "mol m-3 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "O3 destruction rate", - "comment": "ONLY provide the sum of the following reactions: (i) O(1D)+H2O; (ii) O3+HO2; (iii) O3+OH; (iv) O3+alkenes (isoprene, ethene,...)", - "dimensions": "longitude latitude alevel time", - "out_name": "o3loss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3prod": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mole_concentration_of_ozone_due_to_chemical_production", - "units": "mol m-3 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "O3 production rate", - "comment": "ONLY provide the sum of all the HO2/RO2 + NO reactions (as k*[HO2]*[NO])", - "dimensions": "longitude latitude alevel time", - "out_name": "o3prod", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3ste": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ozone volume mixing ratio", - "comment": "Ozone tracer intended to map out strat-trop exchange (STE) of ozone.", - "dimensions": "longitude latitude alevel time", - "out_name": "o3ste", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od440aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol optical thickness at 440 nm", - "comment": "AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 440 nm'", - "dimensions": "longitude latitude time", - "out_name": "od440aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol optical thickness at 550 nm", - "comment": "AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", - "dimensions": "longitude latitude time", - "out_name": "od550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550aerh2o": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "aerosol water aod@550nm", - "comment": "proposed name: atmosphere_optical_thickness_due_to_water_ambient_aerosol", - "dimensions": "longitude latitude time", - "out_name": "od550aerh2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550bb": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "bb aod@550nm", - "comment": "total organic aerosol AOD due to biomass burning (excluding so4, nitrate BB components)", - "dimensions": "longitude latitude time", - "out_name": "od550bb", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550bc": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "black carbon aod@550nm", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "od550bc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550csaer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol optical thickness at 550 nm", - "comment": "AOD from the ambient aerosols in clear skies if od550aer is for all-sky (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", - "dimensions": "longitude latitude time", - "out_name": "od550csaer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550dust": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "dust aod@550nm", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "od550dust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550lt1aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient fine mode aerosol optical thickness at 550 nm", - "comment": "od550 due to particles with wet diameter less than 1 um (ambient here means wetted). When models do not include explicit size information, it can be assumed that all anthropogenic aerosols and natural secondary aerosols have diameter less than 1 um.", - "dimensions": "longitude latitude time", - "out_name": "od550lt1aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550no3": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "nitrate aod@550nm", - "comment": "proposed name: atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", - "dimensions": "longitude latitude time", - "out_name": "od550no3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550oa": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "total organic aerosol aod@550nm", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "od550oa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550so4": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sulfate aod@550nm", - "comment": "proposed name: atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", - "dimensions": "longitude latitude time", - "out_name": "od550so4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550soa": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "soa aod@550nm", - "comment": "total organic aerosol AOD due to secondary aerosol formation", - "dimensions": "longitude latitude time", - "out_name": "od550soa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550ss": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea salt aod@550nm", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "od550ss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od870aer": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ambient aerosol optical thickness at 870 nm", - "comment": "AOD from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 870 nm'", - "dimensions": "longitude latitude time", - "out_name": "od870aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "oh": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_hydroxyl_radical_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "OH volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "oh", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pan": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_peroxyacetyl_nitrate_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "PAN volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "pan", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "modeling_realm": "aerosol", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time", - "out_name": "pfull", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "modeling_realm": "aerosol", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "air pressure at interfaces", - "comment": "Air pressure on model half-levels", - "dimensions": "longitude latitude alevel time", - "out_name": "phalf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "photo1d": { - "modeling_realm": "aerosol", - "standard_name": "photolysis_rate_of_ozone_to_1D_oxygen_atom", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "photolysis rate of O3 to O1d", - "comment": "proposed name: photolysis_rate_of_ozone_to_O1D", - "dimensions": "longitude latitude alevel time", - "out_name": "photo1d", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pod0": { - "modeling_realm": "aerosol", - "standard_name": "pending_CF_name", - "units": "mol m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Phytotoxic ozone dose", - "comment": "Accumulated stomatal ozone flux over the threshold of 0 mol m-2 s-1; Computation: Time Integral of (hourly above canopy ozone concentration * stomatal conductance * Rc/(Rb+Rc) )", - "dimensions": "longitude latitude time", - "out_name": "pod0", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ptp": { - "modeling_realm": "aerosol", - "standard_name": "tropopause_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tropopause Air Pressure", - "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", - "dimensions": "longitude latitude time", - "out_name": "ptp", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclwtop": { - "modeling_realm": "aerosol", - "standard_name": "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "cloud-top effective droplet radius", - "comment": "Droplets are liquid only. This is the effective radius as seen from space over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere.TOA) each time sample when computing monthly mean. Reported values are weighted by total liquid cloud top fraction of (as seen from", - "dimensions": "longitude latitude time", - "out_name": "reffclwtop", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutaf": { - "modeling_realm": "aerosol", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "toa outgoing longwave radiation", - "comment": "Flux corresponding to rlut resulting fom aerosol-free call to radiation, follwing Ghan (ACP, 2013)", - "dimensions": "longitude latitude time", - "out_name": "rlutaf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcsaf": { - "modeling_realm": "aerosol", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "toa outgoing clear-sky longwave radiation", - "comment": "Flux corresponding to rlutcs resulting fom aerosol-free call to radiation, follwing Ghan (ACP, 2013)", - "dimensions": "longitude latitude time", - "out_name": "rlutcsaf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutaf": { - "modeling_realm": "aerosol", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "toa outgoing shortwave radiation", - "comment": "Flux corresponding to rsut resulting fom aerosol-free call to radiation, following Ghan (ACP, 2013)", - "dimensions": "longitude latitude time", - "out_name": "rsutaf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcsaf": { - "modeling_realm": "aerosol", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "toa outgoing clear-sky shortwave radiation", - "comment": "Flux corresponding to rsutcs resulting fom aerosol-free call to radiation, following Ghan (ACP, 2013)", - "dimensions": "longitude latitude time", - "out_name": "rsutcsaf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "so2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_sulfur_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "SO2 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "so2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tatp": { - "modeling_realm": "aerosol", - "standard_name": "tropopause_air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tropopause Air Temperature", - "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", - "dimensions": "longitude latitude time", - "out_name": "tatp", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrl": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Longwave heating rate", - "comment": "Tendency of air temperature due to longwave radiative heating", - "dimensions": "longitude latitude alevel time", - "out_name": "tntrl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrs": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Shortwave heating rate", - "comment": "Tendency of air temperature due to shortwave radiative heating", - "dimensions": "longitude latitude alevel time", - "out_name": "tntrs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "toz": { - "modeling_realm": "aerosol", - "standard_name": "equivalent_thickness_at_stp_of_atmosphere_ozone_content", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Ozone Column", - "comment": "total ozone column in DU", - "dimensions": "longitude latitude time", - "out_name": "toz", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tropoz": { - "modeling_realm": "aerosol", - "standard_name": "equivalent_thickness_at_stp_of_atmosphere_ozone_content", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "tropospheric ozone column", - "comment": "tropospheric ozone column in DU, should be consistent with ptp definition of tropopause", - "dimensions": "longitude latitude time", - "out_name": "tropoz", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ttop": { - "modeling_realm": "aerosol", - "standard_name": "air_temperature_at_cloud_top", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "air temperature at cloud top", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "ttop", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "aerosol", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "ua", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "aerosol", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "va", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wa": { - "modeling_realm": "aerosol", - "standard_name": "upward_air_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upward Air Velocity", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "wa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetbc": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_elemental_carbon_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of black carbon aerosol mass", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetbc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetdust": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of dust", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetdust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetnh3": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of nh3", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetnh3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetnh4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of nh4", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetnh4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetnoy": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_noy_expressed_as_nitrogen_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition of noy incl aerosol nitrate", - "comment": "NOy is the sum of all simulated oxidized nitrogen species, out of NO, NO2, HNO3, HNO4, NO3aerosol, NO3(radical), N2O5, PAN, other organic nitrates.", - "dimensions": "longitude latitude time", - "out_name": "wetnoy", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetoa": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of dry aerosol total organic matter", - "comment": "tendency of atmosphere mass content of organic matter dry aerosols due to wet deposition: This is the sum of wet deposition of POA and wet deposition of SOA (see next two entries). Mass here refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Was called wet_pom in old ACCMIP Excel spreadsheet.", - "dimensions": "longitude latitude time", - "out_name": "wetoa", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetso2": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of so2", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetso2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetso4": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of so4", - "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", - "dimensions": "longitude latitude time", - "out_name": "wetso4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetss": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_particles_due_to_wet_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "wet deposition rate of seasalt", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ztp": { - "modeling_realm": "aerosol", - "standard_name": "tropopause_altitude", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tropopause Altitude", - "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", - "dimensions": "longitude latitude time", - "out_name": "ztp", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmonZ.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmonZ.json deleted file mode 100644 index 72d3136c20..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_AERmonZ.json +++ /dev/null @@ -1,307 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table AERmonZ", - "realm": "aerosol", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "bry": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_inorganic_bromine_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Total inorganic bromine volume mixing ratio", - "comment": "Total family (the sum of all appropriate species in the model) ; list the species in the netCDF header, e.g. Bry = Br + BrO + HOBr + HBr + BrONO2 + BrCl Definition: Total inorganic bromine (e.g., HBr and inorganic bromine oxides and radicals (e.g., BrO, atomic bromine (Br), bromine nitrate (BrONO2)) resulting from degradation of bromine-containing organicsource gases (halons, methyl bromide, VSLS), and natural inorganic bromine sources (e.g., volcanoes, sea salt, and other aerosols) add comment attribute with detailed description about how the model calculates these fields", - "dimensions": "latitude plev39 time", - "out_name": "bry", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "CH4 volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "ch4", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cly": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_inorganic_chlorine_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Total inorganic chlorine volume mixing ratio", - "comment": "Total family (the sum of all appropriate species in the model) ; list the species in the netCDF header, e.g. Cly = HCl + ClONO2 + HOCl + ClO + Cl + 2*Cl2O2 +2Cl2 + OClO + BrCl Definition: Total inorganic stratospheric chlorine (e.g., HCl, ClO) resulting from degradation of chlorine-containing source gases (CFCs, HCFCs, VSLS), and natural inorganic chlorine sources (e.g., sea salt and other aerosols) add comment attribute with detailed description about how the model calculates these fields", - "dimensions": "latitude plev39 time", - "out_name": "cly", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "h2o": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "H2O volume mixing ratio", - "comment": "includes all phases of water", - "dimensions": "latitude plev39 time", - "out_name": "h2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcl": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_hydrogen_chloride_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "HCl volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "hcl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hno3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitric_acid_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "HNO3 volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "hno3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ho2": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_hydroperoxyl_radical_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "HO2 volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "ho2", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "meanage": { - "modeling_realm": "aerosol", - "standard_name": "age_of_stratospheric_air", - "units": "yr", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Mean Age of Stratospheric Air", - "comment": "The mean age of air is defined as the mean time that a stratospheric air mass has been out of contact with the well-mixed troposphere.", - "dimensions": "latitude plev39 time", - "out_name": "meanage", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2o": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "N2O volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "n2o", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "noy": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_noy_expressed_as_nitrogen_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Total reactive nitrogen volume mixing ratio", - "comment": "Total family (the sum of all appropriate species in the model); list the species in the netCDF header, e.g. NOy = N + NO + NO2 + NO3 + HNO3 + 2N2O5 + HNO4 + ClONO2 + BrONO2 Definition: Total reactive nitrogen; usually includes atomic nitrogen (N), nitric oxide (NO), NO2, nitrogen trioxide (NO3), dinitrogen radical (N2O5), nitric acid (HNO3), peroxynitric acid (HNO4), BrONO2, ClONO2 add comment attribute with detailed description about how the model calculates these fields", - "dimensions": "latitude plev39 time", - "out_name": "noy", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Ozone volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "o3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "oh": { - "modeling_realm": "aerosol", - "standard_name": "mole_fraction_of_hydroxyl_radical_in_air", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "OH volume mixing ratio", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "oh", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "aerosol", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "latitude plev39 time", - "out_name": "ta", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "aerosol", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "ua", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "aerosol", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "va", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vt100": { - "modeling_realm": "aerosol", - "standard_name": "northward_heat_flux_in_air_due_to_eddy_advection", - "units": "W m-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward heat flux due to eddies", - "comment": "Zonally averaged meridional heat flux at 100 hPa as monthly means derived from daily (or higher frequency) fields.", - "dimensions": "latitude time p100", - "out_name": "vt100", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Amon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Amon.json deleted file mode 100644 index 8d1eb4181b..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Amon.json +++ /dev/null @@ -1,1293 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Amon", - "realm": "atmos atmosChem", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "ccb": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_base", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Base", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "ccb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cct": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_top", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Top", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "cct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc113global": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc113_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC113", - "comment": "", - "dimensions": "time", - "out_name": "cfc113global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc11global": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc11_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC11", - "comment": "", - "dimensions": "time", - "out_name": "cfc11global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc12global": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc12_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC12", - "comment": "", - "dimensions": "time", - "out_name": "cfc12global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CH4", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "ch4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4Clim": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CH4", - "comment": "", - "dimensions": "longitude latitude plev19 time2", - "out_name": "ch4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4global": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "1e-09", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CH4", - "comment": "Global Mean Mole Fraction of CH4", - "dimensions": "time", - "out_name": "ch4global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4globalClim": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "1e-09", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CH4", - "comment": "Global Mean Mole Fraction of CH4", - "dimensions": "time2", - "out_name": "ch4global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ci": { - "modeling_realm": "atmos", - "standard_name": "convection_time_fraction", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Time Convection Occurs", - "comment": "Fraction of time that convection occurs in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "ci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cl": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Area Fraction", - "comment": "Percentage cloud cover, including both large-scale and convective cloud.", - "dimensions": "longitude latitude alevel time", - "out_name": "cl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cli": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_ice_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Ice", - "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "cli", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_ice_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Water Path", - "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clivi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clt": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clw": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Liquid Water", - "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Condensed Water Path", - "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2": { - "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": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "co2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2Clim": { - "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": "", - "dimensions": "longitude latitude plev19 time2", - "out_name": "co2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2mass": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_of_carbon_dioxide", - "units": "kg", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Total Atmospheric Mass of CO2", - "comment": "Total atmospheric mass of Carbon Dioxide", - "dimensions": "time", - "out_name": "co2mass", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2massClim": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_of_carbon_dioxide", - "units": "kg", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Total Atmospheric Mass of CO2", - "comment": "Total atmospheric mass of Carbon Dioxide", - "dimensions": "time2", - "out_name": "co2mass", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsbl": { - "modeling_realm": "atmos", - "standard_name": "water_evaporation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Evaporation", - "comment": "Evaporation at surface: flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", - "dimensions": "longitude latitude time", - "out_name": "evspsbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2antt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", - "comment": "This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", - "dimensions": "longitude latitude time", - "out_name": "fco2antt", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2fos": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", - "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", - "dimensions": "longitude latitude time", - "out_name": "fco2fos", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2nat": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", - "comment": "This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", - "dimensions": "longitude latitude time", - "out_name": "fco2nat", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcfc22global": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_hcfc22_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of HCFC22", - "comment": "", - "dimensions": "time", - "out_name": "hcfc22global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude plev19 time", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hurs": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude time height2m", - "out_name": "hurs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Mass Flux", - "comment": "The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions": "longitude latitude alevhalf time", - "out_name": "mc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2o": { - "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": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "n2o", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oClim": { - "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": "", - "dimensions": "longitude latitude plev19 time2", - "out_name": "n2o", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oglobal": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "1e-09", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of N2O", - "comment": "Global mean Nitrous Oxide (N2O)", - "dimensions": "time", - "out_name": "n2oglobal", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oglobalClim": { - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "1e-09", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of N2O", - "comment": "Global mean Nitrous Oxide (N2O)", - "dimensions": "time2", - "out_name": "n2oglobal", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3": { - "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": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "o3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3Clim": { - "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": "", - "dimensions": "longitude latitude plev19 time2", - "out_name": "o3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Levels", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time2", - "out_name": "pfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Half-Levels", - "comment": "Air pressure on model half-levels", - "dimensions": "longitude latitude alevhalf time2", - "out_name": "phalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prw": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_water_vapor_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "longitude latitude time", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", - "comment": "Surface downwelling clear-sky longwave radiation", - "dimensions": "longitude latitude time", - "out_name": "rldscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiation", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time", - "out_name": "rlut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", - "comment": "surface solar irradiance clear sky for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsdscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "longitude latitude time", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "longitude latitude time", - "out_name": "rsutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rtmt": { - "modeling_realm": "atmos", - "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Downward Flux at Top of Model", - "comment": "Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "rtmt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sci": { - "modeling_realm": "atmos", - "standard_name": "shallow_convection_time_fraction", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Time Shallow Convection Occurs", - "comment": "Fraction of time that shallow convection occurs in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "sci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev19 time", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time height2m", - "out_name": "tas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmax": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: maximum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Air Temperature", - "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmin": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: minimum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Air Temperature", - "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauu": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_eastward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Eastward Wind Stress", - "comment": "Downward eastward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauu", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauv": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_northward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Northward Wind Stress", - "comment": "Downward northward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauv", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time height10m", - "out_name": "uas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev19 time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "zg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CF3hr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CF3hr.json deleted file mode 100644 index 21cc30a7d5..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CF3hr.json +++ /dev/null @@ -1,562 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table CF3hr", - "realm": "atmos", - "frequency": "3hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.125000", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "clc": { - "modeling_realm": "atmos", - "standard_name": "convective_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Area Fraction", - "comment": "Include only convective cloud.", - "dimensions": "longitude latitude alevel time1", - "out_name": "clc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clic": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_convective_cloud_ice_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Convective Cloud Ice", - "comment": "Calculated as the mass of convective cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time1", - "out_name": "clic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clis": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_stratiform_cloud_ice_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Stratiform Cloud Ice", - "comment": "Calculated as the mass of stratiform cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time1", - "out_name": "clis", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cls": { - "modeling_realm": "atmos", - "standard_name": "stratiform_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Cloud Area Fraction", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "cls", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltc": { - "modeling_realm": "atmos", - "standard_name": "convective_cloud_area_fraction", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Fraction", - "comment": "Convective cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes only convective cloud.", - "dimensions": "longitude latitude time1", - "out_name": "cltc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwc": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_convective_cloud_liquid_water_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Convective Cloud Liquid Water", - "comment": "Calculated as the mass of convective cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time1", - "out_name": "clwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clws": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_stratiform_cloud_liquid_water_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Stratiform Cloud Liquid Water", - "comment": "Calculated as the mass of stratiform cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time1", - "out_name": "clws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "demc": { - "modeling_realm": "atmos", - "standard_name": "convective_cloud_longwave_emissivity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Emissivity", - "comment": "This is the in-cloud emissivity obtained by considering only the cloudy portion of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "demc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dems": { - "modeling_realm": "atmos", - "standard_name": "stratiform_cloud_longwave_emissivity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Cloud Emissivity", - "comment": "This is the in-cloud emissivity obtained by considering only the cloudy portion of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "dems", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtauc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_convective_cloud", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Optical Depth", - "comment": "This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell", - "dimensions": "longitude latitude alevel time1", - "out_name": "dtauc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtaus": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_stratiform_cloud", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Cloud Optical Depth", - "comment": "This is the in-cloud optical depth obtained by considering only the cloudy portion of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "dtaus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grpllsprof": { - "modeling_realm": "atmos", - "standard_name": "large_scale_graupel_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Graupel Flux", - "comment": "", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "grpllsprof", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "h2o": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Water", - "comment": "includes all phases of water", - "dimensions": "longitude latitude alevel time1", - "out_name": "h2o", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Pressure at Model Full-Levels", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time1", - "out_name": "pfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Pressure at Model Half-Levels", - "comment": "Air pressure on model half-levels", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "phalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prcprof": { - "modeling_realm": "atmos", - "standard_name": "convective_rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Rainfall Flux", - "comment": "", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "prcprof", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prlsns": { - "modeling_realm": "atmos", - "standard_name": "large_scale_snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Snowfall Flux", - "comment": "large-scale precipitation of all forms of water in the solid phase.", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "prlsns", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prlsprof": { - "modeling_realm": "atmos", - "standard_name": "large_scale_rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Stratiform Rainfall Flux", - "comment": "", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "prlsprof", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsnc": { - "modeling_realm": "atmos", - "standard_name": "convective_snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Snowfall Flux", - "comment": "convective precipitation of all forms of water in the solid phase.", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "prsnc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclic": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_ice_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffclic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclis": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_ice_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffclis", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclwc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffclwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclws": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffclws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffgrpls": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_graupel_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Graupel", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffgrpls", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffrainc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_rain_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Rainfall", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffrainc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffrains": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_rain_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Rainfall", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffrains", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffsnowc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_snow_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Snowfall", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffsnowc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffsnows": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_snow_particle", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Snowfall", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time1", - "out_name": "reffsnows", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude alevel time1", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfull": { - "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 Full-Levels", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "zfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zhalf": { - "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": "", - "dimensions": "longitude latitude alevhalf time1", - "out_name": "zhalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFday.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFday.json deleted file mode 100644 index 7c47abcca1..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFday.json +++ /dev/null @@ -1,630 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table CFday", - "realm": "atmos", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "albisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where cloud", - "cell_measures": "area: areacella", - "long_name": "ISCCP Mean Cloud Albedo", - "comment": "ISCCP Mean Cloud Albedo. Time-means are weighted by the ISCCP Total Cloud Fraction {:cltisccp} - see http://cfmip.metoffice.com/COSP.html", - "dimensions": "longitude latitude time", - "out_name": "albisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ccb": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_base", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Base", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "ccb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cct": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_top", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Top", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "cct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cl": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Area Fraction in Atmosphere Layer", - "comment": "Percentage cloud cover, including both large-scale and convective cloud.", - "dimensions": "longitude latitude alevel time", - "out_name": "cl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Cloud Fraction", - "comment": "Percentage cloud cover at CALIPSO standard heights.", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clhcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO High Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 220hPa", - "dimensions": "longitude latitude time p220", - "out_name": "clhcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cli": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_ice_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Ice", - "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "cli", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ISCCP Cloud Area Fraction", - "comment": "Percentage cloud cover in optical depth categories.", - "dimensions": "longitude latitude plev7c tau time", - "out_name": "clisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_ice_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Water Path", - "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clivi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cllcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Low Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 840hPa", - "dimensions": "longitude latitude time p840", - "out_name": "cllcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Mid Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 560hPa", - "dimensions": "longitude latitude time p560", - "out_name": "clmcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Total Cloud Fraction", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cltcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ISCCP Total Total Cloud Fraction", - "comment": "Percentage total cloud cover, simulating ISCCP observations.", - "dimensions": "longitude latitude time", - "out_name": "cltisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clw": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Liquid Water", - "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Condensed Water Path", - "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: 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 alevel time", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Mass Flux", - "comment": "The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions": "longitude latitude alevhalf time", - "out_name": "mc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pctisccp": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_cloud_top", - "units": "Pa", - "cell_methods": "area: time: mean where cloud", - "cell_measures": "area: areacella", - "long_name": "ISCCP Mean Cloud Top Pressure", - "comment": "ISCCP Mean Cloud Top Pressure. Time-means are weighted by the ISCCP Total Cloud Fraction {:cltisccp} - see http://cfmip.metoffice.com/COSP.html", - "dimensions": "longitude latitude time", - "out_name": "pctisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Levels", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time", - "out_name": "pfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Half-Levels", - "comment": "Air pressure on model half-levels", - "dimensions": "longitude latitude alevhalf time", - "out_name": "phalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", - "comment": "Surface downwelling clear-sky longwave radiation", - "dimensions": "longitude latitude time", - "out_name": "rldscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", - "comment": "surface solar irradiance clear sky for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsdscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "longitude latitude time", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "longitude latitude time", - "out_name": "rsutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude alevel time", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta700": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air temperature at 700hPa", - "dimensions": "longitude latitude time p700", - "out_name": "ta700", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude alevel time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap500": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards) at 500 hPa level;", - "dimensions": "longitude latitude time p500", - "out_name": "wap500", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "zg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFmon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFmon.json deleted file mode 100644 index 14a8f007ad..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFmon.json +++ /dev/null @@ -1,987 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table CFmon", - "realm": "atmos", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "albisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where cloud", - "cell_measures": "area: areacella", - "long_name": "ISCCP Mean Cloud Albedo", - "comment": "ISCCP Mean Cloud Albedo. Time-means are weighted by the ISCCP Total Cloud Fraction {:cltisccp} - see http://cfmip.metoffice.com/COSP.html", - "dimensions": "longitude latitude time", - "out_name": "albisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clc": { - "modeling_realm": "atmos", - "standard_name": "convective_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Cloud Area Fraction", - "comment": "Include only convective cloud.", - "dimensions": "longitude latitude alevel time", - "out_name": "clc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage Cloud Cover", - "comment": "Percentage cloud cover at CALIPSO standard heights.", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clhcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage High Level Cloud", - "comment": "Percentage cloud cover in layer centred on 220hPa", - "dimensions": "longitude latitude time p220", - "out_name": "clhcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clic": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_convective_cloud_ice_in_air", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Convective Cloud Ice", - "comment": "Calculated as the mass of convective cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clis": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_stratiform_cloud_ice_in_air", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Stratiform Cloud Ice", - "comment": "Calculated as the mass of stratiform cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clis", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ISCCP Percentage Cloud Area", - "comment": "Percentage cloud cover in optical depth categories.", - "dimensions": "longitude latitude plev7c tau time", - "out_name": "clisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cllcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage Low Level Cloud", - "comment": "Percentage cloud cover in layer centred on 840hPa", - "dimensions": "longitude latitude time p840", - "out_name": "cllcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage Mid Level Cloud", - "comment": "Percentage cloud cover in layer centred on 560hPa", - "dimensions": "longitude latitude time p560", - "out_name": "clmcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cls": { - "modeling_realm": "atmos", - "standard_name": "stratiform_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Stratiform Cloud Area Fraction", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "cls", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage Total Cloud", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cltcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ISCCP Total Cloud Fraction", - "comment": "Percentage total cloud cover, simulating ISCCP observations.", - "dimensions": "longitude latitude time", - "out_name": "cltisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwc": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_convective_cloud_liquid_water_in_air", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Convective Cloud Liquid Water", - "comment": "Calculated as the mass of convective cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clws": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_stratiform_cloud_liquid_water_in_air", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Stratiform Cloud Liquid Water", - "comment": "Calculated as the mass of stratiform cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_deep_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Deep Convective Mass Flux", - "comment": "The net mass flux represents the difference between the updraft and downdraft components. This is calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", - "dimensions": "longitude latitude alevhalf time", - "out_name": "dmc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "edt": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_heat_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eddy Diffusivity Coefficients for Temperature", - "comment": "Vertical diffusion coefficient for temperature due to parametrised eddies", - "dimensions": "longitude latitude alevel time", - "out_name": "edt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evu": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_momentum_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eddy Viscosity Coefficients for Momentum", - "comment": "Vertical diffusion coefficient for momentum due to parametrised eddies", - "dimensions": "longitude latitude alevel time", - "out_name": "evu", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: 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 alevel time", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mcd": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_downdraft_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downdraft Convective Mass Flux", - "comment": "Calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", - "dimensions": "longitude latitude alevhalf time", - "out_name": "mcd", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mcu": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_updraft_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Updraft Convective Mass Flux", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The atmosphere convective mass flux is the vertical transport of mass for a field of cumulus clouds or thermals, given by the product of air density and vertical velocity. For an area-average, cell_methods should specify whether the average is over all the area or the area of updrafts only.", - "dimensions": "longitude latitude alevhalf time", - "out_name": "mcu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pctisccp": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_cloud_top", - "units": "Pa", - "cell_methods": "area: time: mean where cloud", - "cell_measures": "area: areacella", - "long_name": "ISCCP Mean Cloud Top Pressure", - "comment": "ISCCP Mean Cloud Top Pressure. Time-means are weighted by the ISCCP Total Cloud Fraction {:cltisccp} - see http://cfmip.metoffice.com/COSP.html", - "dimensions": "longitude latitude time", - "out_name": "pctisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rld": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Longwave Radiation", - "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rld", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rld4co2": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Longwave Radiation 4XCO2 Atmosphere", - "comment": "Downwelling longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rld4co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldcs": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Longwave Radiation", - "comment": "Downwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rldcs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldcs4co2": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere", - "comment": "Downwelling clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rldcs4co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Longwave Radiation", - "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rlu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlu4co2": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Longwave Radiation 4XCO2 Atmosphere", - "comment": "Upwelling longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rlu4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlucs": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Longwave Radiation", - "comment": "Upwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rlucs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlucs4co2": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere", - "comment": "Upwelling clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rlucs4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut4co2": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiation 4XCO2 Atmosphere", - "comment": "Top-of-atmosphere outgoing longwave radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude time", - "out_name": "rlut4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs4co2": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Longwave Radiation 4XCO2 Atmosphere", - "comment": "Top-of-atmosphere outgoing clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude time", - "out_name": "rlutcs4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsd": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Shortwave Radiation", - "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsd", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsd4co2": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Shortwave Radiation 4XCO2 Atmosphere", - "comment": "Downwelling shortwave radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsd4co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcs": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Shortwave Radiation", - "comment": "Downwelling clear-sky shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsdcs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcs4co2": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", - "comment": "Downwelling clear-sky shortwave radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsdcs4co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Shortwave Radiation", - "comment": "Upwelling shortwave radiation (includes also the fluxes at the surface and top of atmosphere)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsu4co2": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Shortwave Radiation 4XCO2 Atmosphere", - "comment": "Upwelling Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsu4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucs": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Shortwave Radiation", - "comment": "Upwelling clear-sky shortwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsucs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucs4co2": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", - "comment": "Upwelling clear-sky shortwave radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude alevhalf time", - "out_name": "rsucs4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut4co2": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Shortwave Radiation in 4XCO2 Atmosphere", - "comment": "TOA Outgoing Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude time", - "out_name": "rsut4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs4co2": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", - "comment": "TOA Outgoing Clear-Sky Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", - "dimensions": "longitude latitude time", - "out_name": "rsutcs4co2", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "smc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_shallow_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Shallow Convective Mass Flux", - "comment": "The net mass flux represents the difference between the updraft and downdraft components. For models with a distinct shallow convection scheme, this is calculated as convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", - "dimensions": "longitude latitude alevhalf time", - "out_name": "smc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude alevel time", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhus": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity", - "comment": "Tendency of Specific Humidity", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusa": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_advection", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity due to Advection", - "comment": "Tendency of Specific Humidity due to Advection", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusc": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_convection", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity due to Convection", - "comment": "Tendencies from cumulus convection scheme.", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_diffusion", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity due to Numerical Diffusion", - "comment": "Tendency of specific humidity due to numerical diffusion.This includes any horizontal or vertical numerical moisture diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the moisture budget.", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusmp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_model_physics", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity due to Model Physics", - "comment": "Tendency of specific humidity due to model physics. This includes sources and sinks from parametrized moist physics (e.g. convection, boundary layer, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics or from horizontal or vertical numerical diffusion not associated with model physicsl. For example any diffusive mixing by the boundary layer scheme would be included.", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusscpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing", - "comment": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in models which do not separate budget terms for stratiform cloud, precipitation and boundary layer schemes. Includes all bounday layer terms including and diffusive terms.)", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusscpbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature", - "comment": "Tendency of Air Temperature", - "dimensions": "longitude latitude alevel time", - "out_name": "tnt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnta": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_advection", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Advection", - "comment": "Tendency of Air Temperature due to Advection", - "dimensions": "longitude latitude alevel time", - "out_name": "tnta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntc": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_convection", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Convection", - "comment": "Tendencies from cumulus convection scheme.", - "dimensions": "longitude latitude alevel time", - "out_name": "tntc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntmp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_model_physics", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Model Physics", - "comment": "Tendency of air temperature due to model physics. This includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition to physics or resolved dynamics should be excluded. This term is required to check the closure of the heat budget.", - "dimensions": "longitude latitude alevel time", - "out_name": "tntmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntr": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Radiative Heating", - "comment": "Tendency of Air Temperature due to Radiative Heating", - "dimensions": "longitude latitude alevel time", - "out_name": "tntr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntscpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing", - "comment": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in models which do not separate cloud, precipitation and boundary layer terms. Includes all boundary layer terms including diffusive ones.)", - "dimensions": "longitude latitude alevel time", - "out_name": "tntscpbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhr.json deleted file mode 100644 index fa2e1bed39..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhr.json +++ /dev/null @@ -1,1361 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table CFsubhr", - "realm": "atmos", - "frequency": "subhr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.017361", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "ccb": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_base", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Air Pressure at Convective Cloud Base", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "site time1", - "out_name": "ccb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cct": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_top", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Air Pressure at Convective Cloud Top", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "site time1", - "out_name": "cct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ci": { - "modeling_realm": "atmos", - "standard_name": "convection_time_fraction", - "units": "1.0", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Fraction of Time Convection Occurs", - "comment": "Fraction of time that convection occurs in the grid cell.", - "dimensions": "site time1", - "out_name": "ci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cl": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Cloud Area Fraction", - "comment": "Percentage cloud cover, including both large-scale and convective cloud.", - "dimensions": "alevel site time1", - "out_name": "cl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cli": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_ice_in_air", - "units": "kg kg-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Mass Fraction of Cloud Ice", - "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "alevel site time1", - "out_name": "cli", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_ice_content", - "units": "kg m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Ice Water Path", - "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions": "site time1", - "out_name": "clivi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clt": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "site time1", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clw": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", - "units": "kg kg-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Mass Fraction of Cloud Liquid Water", - "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "alevel site time1", - "out_name": "clw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Condensed Water Path", - "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "site time1", - "out_name": "clwvi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "edt": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_heat_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Eddy Diffusivity Coefficient for Temperature Variable", - "comment": "Vertical diffusion coefficient for temperature due to parametrised eddies", - "dimensions": "alevel site time1", - "out_name": "edt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsbl": { - "modeling_realm": "atmos", - "standard_name": "water_evaporation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Evaporation", - "comment": "Evaporation at surface: flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", - "dimensions": "site time1", - "out_name": "evspsbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evu": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_momentum_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Eddy Viscosity Coefficient for Momentum Variables", - "comment": "Vertical diffusion coefficient for momentum due to parametrised eddies", - "dimensions": "alevel site time1", - "out_name": "evu", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2antt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", - "comment": "This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", - "dimensions": "site time1", - "out_name": "fco2antt", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2fos": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", - "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", - "dimensions": "site time1", - "out_name": "fco2fos", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2nat": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", - "comment": "This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", - "dimensions": "site time1", - "out_name": "fco2nat", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "site time1", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "site time1", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: point time: point", - "cell_measures": "", - "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": "alevel site time1", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hurs": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Near-Surface Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "site time1 height2m", - "out_name": "hurs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "site time1 height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "latitude": { - "modeling_realm": "atmos", - "standard_name": "latitude", - "units": "degrees_north", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Latitude", - "comment": "", - "dimensions": "site", - "out_name": "lat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "longitude": { - "modeling_realm": "atmos", - "standard_name": "longitude", - "units": "degrees_east", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Longitude", - "comment": "", - "dimensions": "site", - "out_name": "lon", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Convective Mass Flux", - "comment": "The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions": "alevhalf site time1", - "out_name": "mc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Pressure on Model Levels", - "comment": "Air pressure on model levels", - "dimensions": "alevel site time1", - "out_name": "pfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Pressure on Model Half-Levels", - "comment": "Air pressure on model half-levels", - "dimensions": "alevhalf site time1", - "out_name": "phalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "site time1", - "out_name": "pr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "site time1", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "site time1", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prw": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_water_vapor_content", - "units": "kg m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "site time1", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "site time1", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "site time1", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rld": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Downwelling Longwave Radiation", - "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevhalf site time1", - "out_name": "rld", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldcs": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Downwelling Clear-Sky Longwave Radiation", - "comment": "Downwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevhalf site time1", - "out_name": "rldcs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "site time1", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", - "comment": "Surface downwelling clear-sky longwave radiation", - "dimensions": "site time1", - "out_name": "rldscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Upwelling Longwave Radiation", - "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevhalf site time1", - "out_name": "rlu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlucs": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Upwelling Clear-Sky Longwave Radiation", - "comment": "Upwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevhalf site time1", - "out_name": "rlucs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "site time1", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "TOA Outgoing Longwave Radiation", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "site time1", - "out_name": "rlut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", - "comment": "", - "dimensions": "site time1", - "out_name": "rlutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsd": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Downwelling Shortwave Radiation", - "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "alevhalf site time1", - "out_name": "rsd", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcs": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Downwelling Clear-Sky Shortwave Radiation", - "comment": "Downwelling clear-sky shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "alevhalf site time1", - "out_name": "rsdcs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "site time1", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscs": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", - "comment": "surface solar irradiance clear sky for UV calculations", - "dimensions": "site time1", - "out_name": "rsdscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "site time1", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Upwelling Shortwave Radiation", - "comment": "Upwelling shortwave radiation (includes also the fluxes at the surface and top of atmosphere)", - "dimensions": "alevhalf site time1", - "out_name": "rsu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucs": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Upwelling Clear-Sky Shortwave Radiation", - "comment": "Upwelling clear-sky shortwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevhalf site time1", - "out_name": "rsucs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "site time1", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "site time1", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "TOA Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "site time1", - "out_name": "rsut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "site time1", - "out_name": "rsutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rtmt": { - "modeling_realm": "atmos", - "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", - "units": "W m-2", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Net Downward Flux at Top of Model", - "comment": "Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", - "dimensions": "site time1", - "out_name": "rtmt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "site time1", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sci": { - "modeling_realm": "atmos", - "standard_name": "shallow_convection_time_fraction", - "units": "1.0", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Fraction of Time Shallow Convection Occurs", - "comment": "Fraction of time that shallow convection occurs in the grid cell.", - "dimensions": "site time1", - "out_name": "sci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "site time1 height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "alevel site time1", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "site time1 height2m", - "out_name": "tas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauu": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_eastward_stress", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downward Eastward Wind Stress", - "comment": "Downward eastward wind stress at the surface", - "dimensions": "site time1", - "out_name": "tauu", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauv": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_northward_stress", - "units": "Pa", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Downward Northward Wind Stress", - "comment": "Downward northward wind stress at the surface", - "dimensions": "site time1", - "out_name": "tauv", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhus": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity", - "comment": "Tendency of Specific Humidity", - "dimensions": "alevel site time1", - "out_name": "tnhus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusa": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_advection", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity due to Advection", - "comment": "Tendency of Specific Humidity due to Advection", - "dimensions": "alevel site time1", - "out_name": "tnhusa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusc": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_convection", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity due to Convection", - "comment": "Tendencies from cumulus convection scheme.", - "dimensions": "alevel site time1", - "out_name": "tnhusc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_diffusion", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity due to Numerical Diffusion", - "comment": "Tendency of specific humidity due to numerical diffusion.This includes any horizontal or vertical numerical moisture diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the moisture budget.", - "dimensions": "alevel site time1", - "out_name": "tnhusd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusmp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_model_physics", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity due to Model Physics", - "comment": "Tendency of specific humidity due to model physics. This includes sources and sinks from parametrized moist physics (e.g. convection, boundary layer, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics or from horizontal or vertical numerical diffusion not associated with model physicsl. For example any diffusive mixing by the boundary layer scheme would be included.", - "dimensions": "alevel site time1", - "out_name": "tnhusmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusscpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing", - "comment": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in models which do not separate budget terms for stratiform cloud, precipitation and boundary layer schemes. Includes all bounday layer terms including and diffusive terms.)", - "dimensions": "alevel site time1", - "out_name": "tnhusscpbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature", - "comment": "Tendency of Air Temperature", - "dimensions": "alevel site time1", - "out_name": "tnt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnta": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_advection", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Advection", - "comment": "Tendency of Air Temperature due to Advection", - "dimensions": "alevel site time1", - "out_name": "tnta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntc": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_convection", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Convection", - "comment": "Tendencies from cumulus convection scheme.", - "dimensions": "alevel site time1", - "out_name": "tntc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntmp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_model_physics", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Model Physics", - "comment": "Tendency of air temperature due to model physics. This includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition to physics or resolved dynamics should be excluded. This term is required to check the closure of the heat budget.", - "dimensions": "alevel site time1", - "out_name": "tntmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntr": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Radiative Heating", - "comment": "Tendency of Air Temperature due to Radiative Heating", - "dimensions": "alevel site time1", - "out_name": "tntr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntscpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing", - "comment": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in models which do not separate cloud, precipitation and boundary layer terms. Includes all boundary layer terms including diffusive ones.)", - "dimensions": "alevel site time1", - "out_name": "tntscpbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "site time1", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "site time1 height10m", - "out_name": "uas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "site time1 height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "alevel site time1", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "zg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhrOff.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhrOff.json deleted file mode 100644 index 92ad59e513..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CFsubhrOff.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table CFsubhrOff", - "realm": "atmos", - "frequency": "subhr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "cfadDbze94": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CloudSat Radar Reflectivity", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadDbze94 is defined as the simulated relative frequency of occurrence of radar reflectivity in sampling volumes defined by altitude bins. The radar is observing at a frequency of 94GHz.", - "dimensions": "longitude latitude alt40 dbze time", - "out_name": "cfadDbze94", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfadLidarsr532": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Scattering Ratio", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadLidarsr532 is defined as the simulated relative frequency of lidar scattering ratio in sampling volumes defined by altitude bins. The lidar is observing at a wavelength of 532nm.", - "dimensions": "longitude latitude alt40 scatratio time", - "out_name": "cfadLidarsr532", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Cloud Fraction", - "comment": "Percentage cloud cover at CALIPSO standard heights.", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso2": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Cloud Fraction Undetected by CloudSat", - "comment": "Clouds detected by CALIPSO but below the detectability threshold of CloudSat", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipso2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clhcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO High Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 220hPa", - "dimensions": "longitude latitude time p220", - "out_name": "clhcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cllcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Low Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 840hPa", - "dimensions": "longitude latitude time p840", - "out_name": "cllcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Mid Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 560hPa", - "dimensions": "longitude latitude time p560", - "out_name": "clmcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Total Cloud Fraction", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cltcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "parasolRefl": { - "modeling_realm": "atmos", - "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "PARASOL Reflectance", - "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", - "dimensions": "longitude latitude sza5 time", - "out_name": "parasolRefl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CV.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CV.json deleted file mode 100644 index a8050fc2e2..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CV.json +++ /dev/null @@ -1,8309 +0,0 @@ -{ - "CV":{ - "required_global_attributes":[ - "Conventions", - "activity_id", - "creation_date", - "data_specs_version", - "experiment", - "experiment_id", - "forcing_index", - "frequency", - "further_info_url", - "grid", - "grid_label", - "initialization_index", - "institution", - "institution_id", - "license", - "mip_era", - "nominal_resolution", - "physics_index", - "product", - "realization_index", - "realm", - "source", - "source_id", - "source_type", - "sub_experiment", - "sub_experiment_id", - "table_id", - "tracking_id", - "variable_id", - "variant_label" - ], - "version_metadata":{ - "author":"Paul J. Durack ", - "creation_date":"Wed Apr 26 09:19:24 2017 -0700", - "institution_id":"PCMDI", - "latest_tag_point":"3.2.3 (29; g9be7426)", - "note":"Revise source_id BESM-2-7", - "previous_commit":"66ea1f100a70977e3400c65e14f0c91fc6590ac6" - }, - "activity_id":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "CORDEX", - "DAMIP", - "DCPP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "HighResMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "institution_id":{ - "AWI":"Alfred Wegener Institute, Helmholtz Centre for Polar and Marine Research, Am Handelshafen 12, 27570 Bremerhaven, Germany", - "BNU":"Beijing Normal University, Beijing 100875, China", - "CAMS":"Chinese Academy of Meteorological Sciences, Beijing 100081, China", - "CCCR-IITM":"Centre for Climate Change Research, Indian Institute of Tropical Meteorology Pune, Maharashtra 411 008, India", - "CCCma":"Canadian Centre for Climate Modelling and Analysis, Victoria, BC V8P 5C2, Canada", - "CMCC":"Fondazione Centro Euro-Mediterraneo sui Cambiamenti Climatici, Lecce 73100, Italy", - "CNRM-CERFACS":"CNRM (Centre National de Recherches Meteorologiques, Toulouse 31057, France), CERFACS (Centre Europeen de Recherche et de Formation Avancee en Calcul Scientifique, Toulouse 31100, France)", - "COLA-CFS":"Center for Ocean-Land-Atmosphere Studies, Fairfax, VA 22030, USA", - "CSIR-CSIRO":"CSIR (Council for Scientific and Industrial Research - Natural Resources and the Environment, Pretoria, 0001, South Africa), CSIRO (Commonwealth Scientific and Industrial Research Organisation and Bureau of Meteorology, Melbourne, Victoria 3208, Australia)", - "CSIRO-BOM":"Commonwealth Scientific and Industrial Research Organisation and Bureau of Meteorology, Melbourne, Victoria 3208, Australia", - "EC-Earth-Consortium":"KNMI, The Netherlands; SMHI, Sweden; DMI, Denmark; AEMET, Spain; Met Eireann, Ireland; CNR-ISAC, Italy; Instituto de Meteorologia, Portugal; FMI, Finland; BSC, Spain; Centro de Geofisica, University of Lisbon, Portugal; ENEA, Italy; Geomar, Germany; Geophysical Institute, University of Bergen, Norway; ICHEC, Ireland; ICTP, Italy; IMAU, The Netherlands; IRV, Sweden; Lund University, Sweden; Meteorologiska Institutionen, Stockholms University, Sweden; Niels Bohr Institute, University of Copenhagen, Denmark; NTNU, Norway; SARA, The Netherlands; Unite ASTR, Belgium; Universiteit Utrecht, The Netherlands; Universiteit Wageningen, The Netherlands; University College Dublin, Ireland; Vrije Universiteit Amsterdam, the Netherlands; University of Helsinki, Finland; KIT, Karlsruhe, Germany; USC, University of Santiago de Compostela, Spain; Uppsala Universitet, Sweden; NLeSC, Netherlands eScience Center, The Netherlands", - "FIO-RONM":"FIO (First Institute of Oceanography, State Oceanic Administration, Qingdao 266061, China), RONM (Laboratory for Regional Oceanography and Numerical Modeling, Qingdao National Laboratory for Marine Science and Technology, Qingdao 266237, China)", - "INM":"Institute for Numerical Mathematics, Moscow 119991, Russia", - "INPE":"National Institute for Space Research, Cachoeira Paulista, SP 12630-000, Brazil", - "IPSL":"Institut Pierre Simon Laplace, Paris 75252, France", - "LASG-IAP":"Institute of Atmospheric Physics, Chinese Academy of Sciences, Beijing 100029, China", - "MESSy-Consortium":"The Modular Earth Submodel System (MESSy) Consortium, represented by the Institute for Physics of the Atmosphere, Deutsches Zentrum fur Luft- und Raumfahrt (DLR), Wessling, Bavaria 82234, Germany", - "MIROC":"JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa 236-0001, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba 277-8564, Japan), NIES (National Institute for Environmental Studies, Ibaraki 305-8506, Japan), and AICS (RIKEN Advanced Institute for Computational Science, Hyogo 650-0047, Japan)", - "MOHC":"Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK", - "MPI-M":"Max Planck Institute for Meteorology, Hamburg 20146, Germany", - "MRI":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", - "NASA-GISS":"Goddard Institute for Space Studies, New York, NY 10025, USA", - "NCAR":"National Center for Atmospheric Research, Boulder, CO 80307, USA", - "NCC":"NorESM Climate modeling Consortium consisting of CICERO (Center for International Climate and Environmental Research, Oslo 0349), MET-Norway (Norwegian Meteorological Institute, Oslo 0313), NERSC (Nansen Environmental and Remote Sensing Center, Bergen 5006), NILU (Norwegian Institute for Air Research, Kjeller 2027), UiB (University of Bergen, Bergen 5007), UiO (University of Oslo, Oslo 0313) and UNI (Uni Research, Bergen 5008), Norway", - "NERC":"Natural Environment Research Council, STFC-RAL, Harwell, Oxford, OX11 0QX, UK", - "NIMS-KMA":"National Institute of Meteorological Sciences/Korea Meteorological Administration, Climate Research Division, Seoho-bukro 33, Seogwipo-si, Jejudo 63568, Republic of Korea", - "NOAA-GFDL":"National Oceanic and Atmospheric Administration, Geophysical Fluid Dynamics Laboratory, Princeton, NJ 08540, USA", - "NOAA-NCEP":"National Oceanic and Atmospheric Administration, National Centers for Environmental Prediction, Camp Springs, MD 20746, USA", - "NUIST":"Nanjing University of Information Science and Technology, Nanjing, 210044, China", - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", - "THU":"Department of Earth System Science, Tsinghua University, Beijing 100084, China" - }, - "source_id":{ - "ACCESS-1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "CMIP5" - ], - "institution_id":[ - "CSIRO-BOM" - ], - "source_id":"ACCESS-1-0", - "source":"ACCESS 1.0 (2011): \naerosol: CLASSIC (v1.0)\natmos: HadGAM2 (r1.1; N96, 192 x 145 longitude/latitude; 38 levels; top level 39255 m)\natmosChem: none\nland: MOSES2.2\nlandIce: none\nocean: ACCESS-OM (MOM4p1; tripolar primarily 1deg, 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4.1" - }, - "AWI-CM-1-0":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "HighResMIP", - "OMIP", - "PMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "AWI" - ], - "source_id":"AWI-CM-1-0", - "source":"AWI-CM 1.0 (2017): \naerosol: none\natmos: ECHAM6.3.02p4 (T127L95 native atmosphere T127 gaussian grid; 384 x 192 longitude/latitude; 95 levels; top level 80 km)\natmosChem: none\nland: JSBACH 3.10\nlandIce: none\nocean: FESOM 1.4 (unstructured grid in the horizontal with 830305 wet nodes; 46 levels; top grid cell 0-5 m)\nocnBgchem: none\nseaIce: FESOM 1.4" - }, - "BESM-2-7":{ - "activity_participation":[ - "CMIP", - "DCPP", - "HighResMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "INPE" - ], - "source_id":"BESM-2-7", - "source":"BESM 2.7 (2017): \naerosol: none\natmos: BAM (v1.0, T062L28; 192 x 96 longitude/latitude; 28 levels; top level 3 hPa)\natmosChem: none\nland: SSiB 2.0\nlandIce: none\nocean: MOM-5 (MOM5, tripolar primarily 1 deg, 1/4 deg between 10S-10N; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: TOPAZ 2.0\nseaIce: SIS 1.0" - }, - "BNU-ESM-1-1":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "GMMIP", - "GeoMIP", - "OMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "BNU" - ], - "source_id":"BNU-ESM-1-1", - "source":"BNU-ESM 1.1 (2016): \naerosol: CAM-chem; semi-interactive\natmos: CAM4 (2deg; 144 x 96 longitude/latitude; 26 levels; top level 2.194 mb)\natmosChem: none\nland: CoLM version 2014 with carbon-nitrogen interactions\nlandIce: none\nocean: MOM4p1 (tripolar, primarily 1deg latitude/longitude, down to 1/3deg within 30deg of the equatorial tropics; 360 x 200 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: Dynamic ecosystem-carbon model version 1\nseaIce: CICE4.1" - }, - "CAMS_CSM1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAMS" - ], - "source_id":"CAMS_CSM1-0", - "source":"CAMS_CSM 1.0 (2016): \naerosol: none\natmos: ECHAM5_CAMS (T106; 320 x 160 longitude/latitude; 31 levels; top level 10 mb)\natmosChem: none\nland: CoLM 1.0\nlandIce: none\nocean: MOM4 (tripolar; 360 x 200 longitude/latitude, primarily 1deg latitude/longitude, down to 1/3deg within 30deg of the equatorial tropics; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS 1.0" - }, - "CIESM":{ - "activity_participation":[ - "CFMIP", - "CMIP", - "CORDEX", - "GMMIP", - "OMIP", - "SIMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "THU" - ], - "source_id":"CIESM", - "source":"CIESM (2017): \naerosol: MAM4\natmos: CIESM-AM (FV/FD; 288 x 192 longitude/latitude; 30 levels; top level 2.255 hPa)\natmosChem: trop_mam4\nland: CIESM-LM (modified CLM4.5)\nlandIce: none\nocean: CIESM-OM (FD, SCCGrid Displaced Pole; 720 x 560 longitude/latitude; 46 levels; top grid cell 0-6 m)\nocnBgchem: none\nseaIce: CICE4" - }, - "CMCC-CM2-HR4":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-HR4", - "source":"CMCC-CM2-HR4 (2016): \naerosol: prescribed MACv2-SP\natmos: CAM4 (1deg; 288 x 192 longitude/latitude; 26 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (SP mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-HR5":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-HR5", - "source":"CMCC-CM2-HR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-SR5":{ - "activity_participation":[ - "CMIP", - "DCPP", - "GMMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-SR5", - "source":"CMCC-CM2-SR5 (2016): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarly 1 deg lat/lon with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-VHR4":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-VHR4", - "source":"CMCC-CM2-VHR4 (2017): \naerosol: prescribed MACv2-SP\natmos: CAM4 (1/4deg; 1152 x 768 longitude/latitude; 26 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (SP mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-ESM2-HR5":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-ESM2-HR5", - "source":"CMCC-ESM2-HR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: BFM5.1\nseaIce: CICE4.0" - }, - "CMCC-ESM2-SR5":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "LS3MIP", - "LUMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-ESM2-SR5", - "source":"CMCC-ESM2-SR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarly 1 deg lat/lon with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: BFM5.1\nseaIce: CICE4.0" - }, - "CNRM-CM6-1":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-CM6-1", - "source":"CNRM-CM6-1 (2016): \naerosol: climatological fields computed by TACTIC (v2.0)\natmos: Arpege 6.2 (Tl127; 91 levels; top level 78.4 km)\natmosChem: OZL_v2\nland: Surfex 8.0c\nlandIce: none (except for some FAFMIP experiments)\nocean: Nemo 3.6 (eORCA1; tripolar primarily 1deg latitude/longitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: Gelato 6.1" - }, - "CNRM-CM6-1-HR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-CM6-1-HR", - "source":"CNRM-CM6-1-HR (2016): \naerosol: climatological fields computed by TACTIC (v2.0)\natmos: Arpege 6.2 (Tl359; 91 levels; top level 78.4 km)\natmosChem: OZL_v2\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA025; tripolar primarily 1/4deg latitude/longitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: Gelato 6.1" - }, - "CNRM-ESM2-1":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-ESM2-1", - "source":"CNRM-ESM2-1 (2016): \naerosol: TACTIC (v2.0)\natmos: Arpege 6.2 (Tl127; 91 levels; top level 78.4 km)\natmosChem: REPROBUS-C (v2.0)\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA1; tripolar primarily 1deg latitude/longitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: Pisces 2.s\nseaIce: Gelato 6.1" - }, - "CNRM-ESM2-1-HR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-ESM2-1-HR", - "source":"CNRM-ESM2-1-HR (2016): \naerosol: TACTIC (v2.0)\natmos: Arpege 6.2 (Tl359; 91 levels; top level 78.4 km)\natmosChem: OZL_v2\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA025; tripolar primarily 1/4deg latitude/longitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: Pisces 2.s\nseaIce: Gelato 6.1" - }, - "EC-Earth3":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3", - "source":"EC-Earth3 (2017): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256, 91 levels, top level: 0,01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-AerChem":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-AerChem", - "source":"EC-Earth3-AerChem (2017): \naerosol: TM5\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256, 91 levels, top level: 0.01 hPa)\natmosChem: TM5 (3 deg. (long.) x 2 deg. (lat.), 34 levels, top level: 0.1 hPa\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-CC":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-CC", - "source":"EC-Earth3-CC (2017): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256, 91 levels, top level: 0.01 hPa)\natmosChem: TM5 (3 deg. (long.) x 2 deg. (lat.), 34 levels, top level: 0.1 hPa\nland: LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: PISCES v2\nseaIce: LIM3" - }, - "EC-Earth3-GrIS":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-GrIS", - "source":"EC-Earth3-GrIS (2017): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256, 91 levels, top level: 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: PISM 0.7 (5 km x 5 km, L442)\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-HR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-HR", - "source":"EC-Earth3-HR (2017): \naerosol: none\natmos: IFS cy36r4 (TL511, linearly reduced Gaussian grid equivalent to 1024 x 512; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (tripolar, 1442x1921; 75 levels; top grid cell 5m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-LR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-LR", - "source":"EC-Earth3-LR (2017): \naerosol: none\natmos: IFS cy36r4 (TL159, linearly reduced Gaussian grid equivalent to 320 x 160; 62 levels; top level 5 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-Veg":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-Veg", - "source":"EC-Earth3-Veg (2017): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256, 91 levels, top level: 0.01 hPa)\natmosChem: none\nland: LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-Veg-LR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-Veg-LR", - "source":"EC-Earth3-Veg-LR (2017): \naerosol: none\natmos: IFS cy36r4 (TL159, linearly reduced Gaussian grid equivalent to 320 x 160; 62 levels; top level 5 hPa)\natmosChem: none\nland: LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 5 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EMAC-2-53-AerChem":{ - "activity_participation":[ - "AerChemMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MESSy-Consortium" - ], - "source_id":"EMAC-2-53-AerChem", - "source":"EMAC-2-53-AerChem (2017): \naerosol: gmxe 2.2.x\natmos: ECHAM5.3.02 (modified, spectral T42; 128 x 64 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: MECCA 3.8.x\nland: same as Atmosphere\nlandIce: none\nocean: MPIOM 1.3.0-beta (bipolar GR1.5, approximately 1.5deg; 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: none\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "EMAC-2-53-Vol":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MESSy-Consortium" - ], - "source_id":"EMAC-2-53-Vol", - "source":"EMAC-2-53-Vol (2017): \naerosol: gmxe 2.2.x\natmos: ECHAM5.3.2 (modified; spectral T42; 128 x 64 longitude/latitude; 90 levels; top level 0.001 hPa)\natmosChem: MECCA 3.8.x\nland: same as Atmosphere\nlandIce: none\nocean: MPIOM 1.3.0-beta (bipolar GR1.5; approximately 1.5deg reducing toward the poles, 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: none\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "GFDL-AM4":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-AM4", - "source":"GFDL-AM4 (2017): \naerosol: interactive\natmos: GFDL-AM4.0 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360x180 longitude/latitude; 32 levels; model top: 1 hPa)\natmosChem: fast chemistry, aerosol only\nland: GFDL-LM4.0\nlandIce: GFDL-LM4.0\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "GFDL-CM4":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-CM4", - "source":"GFDL-CM4 (2017): \naerosol: interactive\natmos: GFDL-AM4.1 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360x180 longitude/latitude; 32 levels; model top: 1 hPa)\natmosChem: unnamed (fast chemistry, aerosol only)\nland: GFDL-LM4.0\nlandIce: GFDL-LM4.0\nocean: GFDL-MOM6 (tripolar - nominal 0.25 deg latitude/longitude; 1440x720 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: none\nseaIce: SIS2" - }, - "GFDL-ESM4":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "DAMIP", - "DynVarMIP", - "GMMIP", - "LUMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-ESM4", - "source":"GFDL-ESM4 (2017): \naerosol: interactive\natmos: GFDL-AM4.1 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360x180 longitude/latitude; 48 levels, model top: 1 Pa)\natmosChem: GFDL-ATMCHEM4.1 (full atmospheric chemistry)\nland: GFDL-LM4.1\nlandIce: GFDL-LM4.1\nocean: GFDL-MOM6 (tripolar - nominal 0.5 deg; 720x360 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: COBALT 2.0\nseaIce: SIS2" - }, - "GISS-E2-1G":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E2-1G", - "source":"GISS-E2.1G (2016): \naerosol: varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E2.1 (90 x 144 2x2.5; 40 levels; top level 0.1hPa)\natmosChem: varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: Fixed\nocean: GISS Ocean (1 deg latitude/longitude; 32 levels; top grid cell 0-10m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "GISS-E2-1H":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E2-1H", - "source":"GISS-E2.1H (2016): \naerosol: varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E2.1 (90 x 144 2x2.5; 40 levels; top level 0.1hPa)\natmosChem: varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: Fixed\nocean: HYCOM Ocean (tripolar grid; ~1 deg latitude/longitude; 26 levels; top grid cell 0-10m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "HadGEM3-GC31-HH":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-HH", - "source":"HadGEM3-GC31-HH (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (1024 x 768 N512; 85 levels; top level 85km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA12 tripolar primarily 1/12 deg latitude/longitude; 75 levels; top grid cell 0-1m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA12 tripolar primarily 1/12 deg latitude/longitude)" - }, - "HadGEM3-GC31-HM":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-HM", - "source":"HadGEM3-GC31-HM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (1024 x 768 N512; 85 levels; top level 85km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA025 tripolar primarily 0.25 deg latitude/longitude; 75 levels; top grid cell 0-1m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA025 tripolar primarily 0.25 deg latitude/longitude)" - }, - "HadGEM3-GC31-LL":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-LL", - "source":"HadGEM3-GC31-LL (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (192 x 144 N96; 85 levels; top level 85km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 0-1m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA1 tripolar primarily 1 deg latitude/longitude)" - }, - "HadGEM3-GC31-MM":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-MM", - "source":"HadGEM3-GC31-MM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (432 x 324 N216; 85 levels; top level 85km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA025 tripolar primarily 0.25 deg latitude/longitude; 75 levels; top grid cell 0-1m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA025 tripolar primarily 0.25 deg latitude/longitude)" - }, - "IITM-ESM":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CCCR-IITM" - ], - "source_id":"IITM-ESM", - "source":"IITM-ESM (2015): \naerosol: unnamed (prescribed MAC-v2)\natmos: GFS (192 x 94 T62; 64 levels; top level 0.2 mb)\natmosChem: none\nland: NOAH LSM\nlandIce: none\nocean: MOM4p1 (tripolar, 360x200; 50 levels; top grid cell 5m)\nocnBgchem: TOPAZ\nseaIce: SIS" - }, - "MIROC-ES2H":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC-ES2H", - "source":"MIROC-ES2H (2017): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T85; 256 x 128 longitude/latitude; 81 levels; top level 0.004 hPa)\natmosChem: CHASER4.0\nland: MATSIRO6.0+VISIT-e ver.1.0\nlandIce: none\nocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\nocnBgchem: OECO ver.2.0; NPZD-type with C/N/P/Fe/O cycles\nseaIce: COCO4.9" - }, - "MIROC-ES2L":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC-ES2L", - "source":"MIROC-ES2L (2017): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T42; 128 x 64 longitude/latitude; 40 levels; top level 3 hPa)\natmosChem: none\nland: MATSIRO6.0+VISIT-e ver.1.0\nlandIce: none\nocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\nocnBgchem: OECO ver.2.0; NPZD-type with C/N/P/Fe/O cycles\nseaIce: COCO4.9" - }, - "MIROC6":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC6", - "source":"MIROC6 (2017): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T85; 256x128; 81 levels; top level 0.004 hPa)\natmosChem: none\nland: MATSIRO6.0\nlandIce: none\nocean: COCO4.9 (360x256x63; tripolar primarily 1deg; 63 levels; top grid cell 0-2 m)\nocnBgchem: none\nseaIce: COCO4.9" - }, - "MPIESM-1-2-HR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M" - ], - "source_id":"MPIESM-1-2-HR", - "source":"MPIESM1.2-HR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ECHAM6.3 (spectral T127; 384 x 192 longitude/latitude; 95 levels; top level 0.01 hPa)\natmosChem: none\nland: JSBACH3.2\nlandIce: none/prescribed\nocean: MPIOM1.63 (tripolar TP04; approximately 0.4deg latitude/longitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "MPIESM-1-2-LR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M" - ], - "source_id":"MPIESM-1-2-LR", - "source":"MPIESM1.2-LR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ECHAM6.3 (spectral T63; 192 x 96 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: none\nland: JSBACH3.2\nlandIce: none/prescribed\nocean: MPIOM1.63 (bipolar GR1.5; approximately 1.5deg latitude/longitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "MPIESM-2-LR":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M" - ], - "source_id":"MPIESM-2-LR", - "source":"MPIESM2 (2017): \naerosol: none, prescribed MACv2-SP\natmos: ICON-AES (icosahedral/triangles; 160 km; 47 levels; top level 80 km)\natmosChem: none\nland: JSBACH4.2\nlandIce: none/prescribed\nocean: ICON-OES (icosahedral/triangles; 40 km; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "MRI-ESM2-0":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MRI" - ], - "source_id":"MRI-ESM2-0", - "source":"MRI-ESM2.0 (2017): \naerosol: MASINGAR mk2r4\natmos: MRI-AGCM3.5 (320 x 160 TL159; 80 levels; top level 0.01 hPa)\natmosChem: MRI-CCM2.1\nland: HAL 1.0\nlandIce: none\nocean: MRI.COM4.4 (tripolar primarily 0.5 deg latitude/1 deg longitude with meridional refinement down to 0.3 deg within 10 degrees north and south of the equator; 360 x 364 longitude/latitude; 61 levels; top grid cell 0-2 m)\nocnBgchem: MRI.COM4.4\nseaIce: MRI.COM4.4" - }, - "NICAM16-7S":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-7S", - "source":"NICAM16-7S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (56km icosahedral grid; 163,842 grid cells (=10*4^7+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-8S":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-8S", - "source":"NICAM16-8S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (28km icosahedral grid; 655,362 grid cells (=10*4^8+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-9D-L78":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-9D-L78", - "source":"NICAM16-9D-L78 (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (14km icosahedral grid; 2,621,442 grid cells (=10*4^9+2); 78 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-9S":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-9S", - "source":"NICAM16-9S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (14km icosahedral grid; 2,621,442 grid cells (=10*4^9+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NorESM2-HH":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-HH", - "source":"NorESM2-HH (2018): \naerosol: OsloAero\natmos: CAM-OSLO (0.25 degree resolution; 1152 x 768; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (0.25 degree resolution; 1440 x 1152; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LM":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "DCPP", - "LUMIP", - "OMIP", - "PMIP", - "RFMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LM", - "source":"NorESM2-LM (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LME":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "GeoMIP", - "LUMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LME", - "source":"NorESM2-LME (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LMEC":{ - "activity_participation":[ - "AerChemMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LMEC", - "source":"NorESM2-LMEC (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemComp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-MH":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-MH", - "source":"NorESM2-MH (2017): \naerosol: OsloAero\natmos: CAM-OSLO (1 degree resolution; 288 x 192; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (0.25 degree resolution; 1440 x 1152; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-MM":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-MM", - "source":"NorESM2-MM (2017): \naerosol: OsloAero\natmos: CAM-OSLO (1 degree resolution; 288 x 192; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "PCMDI-test-1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "PCMDI" - ], - "source_id":"PCMDI-test-1-0", - "source":"PCMDI-test 1.0 (1989): \naerosol: none\natmos: Earth1.0-gettingHotter (360x180; 50 levels; top level 0.1 mb)\natmosChem: none\nland: Earth1.0\nlandIce: none\nocean: BlueMarble1.0-warming (360x180; 50 levels; top grid cell 0-10m)\nocnBgchem: none\nseaIce: Declining1.0-warming" - }, - "UKESM1-0-LL":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC" - ], - "source_id":"UKESM1-0-LL", - "source":"UKESM1.0-LL (2017): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (192 x 144 N96; 85 levels; top level 85km)\natmosChem: UKCA-StratTrop\nland: JULES-HadGEM3-GL7.1\nlandIce: BISICLES (only active in ISMIP experiments)\nocean: NEMO-HadGEM3-GO6.0 (ORCA1 tripolar primarily 1 deg latitude/longitude with meridional refinement down to 1/3 degree in the tropics; 75 levels; top grid cell 0-1m)\nocnBgchem: MEDUSA2\nseaIce: CICE-HadGEM3-GSI8 (ORCA1 tripolar primarily 1 deg latitude/longitude)" - }, - "UKESM1-0-MMh":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC" - ], - "source_id":"UKESM1-0-MMh", - "source":"UKESM1.0-MMh (2018): \naerosol: UKCA-GLOMAP-mode (horizontal resolution degraded relative to that used for atmosphere physics)\natmos: MetUM-HadGEM3-GA7.1 (432 x 324 N216; 85 levels; top level 85km)\natmosChem: UKCA-StratTrop (horizontal resolution degraded relative to that used for atmosphere physics)\nland: JULES-HadGEM3-GL7.1\nlandIce: BISICLES (only active in ISMIP experiments)\nocean: NEMO-HadGEM3-GO6.0 (ORCA025 tripolar primarily 0.25 deg latitude/longitude; 75 levels; top grid cell 0-1m)\nocnBgchem: MEDUSA2 (horizontal resolution degraded relative to that used for ocean physics)\nseaIce: CICE-HadGEM3-GSI8 (ORCA025 tripolar primarily 0.25 deg latitude/longitude)" - }, - "VRESM-1-0":{ - "activity_participation":[ - "" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CSIR-CSIRO" - ], - "source_id":"VRESM-1-0", - "source":"VRESM 1.0 (2016): \naerosol: Rotstayn-1.0\natmos: VCAM-1.0 (192 x 192 x 6 C192; 35 levels; top level 35km)\natmosChem: none\nland: CABLE v2.2.3\nlandIce: none\nocean: VCOM-1.0 (192 x 192 x 6 C192; 35 levels; top grid cell 0-10m)\nocnBgchem: PISCES v3.4socco\nseaIce: CSIR-ICE (visco-plastic)" - } - }, - "source_type":[ - "AER", - "AGCM", - "AOGCM", - "BGCM", - "CHEM", - "ESM", - "ISM", - "LAND", - "OGCM", - "RAD", - "SLAB" - ], - "frequency":[ - "1hr", - "1hrClimMon", - "3hr", - "3hrClim", - "6hr", - "day", - "decadal", - "fx", - "mon", - "monClim", - "subhr", - "yr", - "yrClim" - ], - "grid_label":[ - "gm", - "gn", - "gna", - "gng", - "gnz", - "gr", - "gr1", - "gr1a", - "gr1g", - "gr1z", - "gr2", - "gr2a", - "gr2g", - "gr2z", - "gr3", - "gr3a", - "gr3g", - "gr3z", - "gr4", - "gr4a", - "gr4g", - "gr4z", - "gr5", - "gr5a", - "gr5g", - "gr5z", - "gr6", - "gr6a", - "gr6g", - "gr6z", - "gr7", - "gr7a", - "gr7g", - "gr7z", - "gr8", - "gr8a", - "gr8g", - "gr8z", - "gr9", - "gr9a", - "gr9g", - "gr9z", - "gra", - "grg", - "grz" - ], - "nominal_resolution":[ - "0.5 km", - "1 km", - "10 km", - "100 km", - "1000 km", - "10000 km", - "1x1 degree", - "2.5 km", - "25 km", - "250 km", - "2500 km", - "5 km", - "50 km", - "500 km", - "5000 km" - ], - "realm":{ - "aerosol":"Aerosol", - "atmos":"Atmosphere", - "atmosChem":"Atmospheric Chemistry", - "land":"Land Surface", - "landIce":"Land Ice", - "ocean":"Ocean", - "ocnBgchem":"Ocean Biogeochemistry", - "seaIce":"Sea Ice" - }, - "table_id":[ - "3hr", - "6hrLev", - "6hrPlev", - "6hrPlevPt", - "AERday", - "AERhr", - "AERmon", - "AERmonZ", - "Amon", - "CF3hr", - "CFday", - "CFmon", - "CFsubhr", - "E1hr", - "E1hrClimMon", - "E3hr", - "E3hrPt", - "E6hrZ", - "Eday", - "EdayZ", - "Efx", - "Emon", - "EmonZ", - "Esubhr", - "Eyr", - "IfxAnt", - "IfxGre", - "ImonAnt", - "ImonGre", - "IyrAnt", - "IyrGre", - "LImon", - "Lmon", - "Oclim", - "Oday", - "Odec", - "Ofx", - "Omon", - "Oyr", - "SIday", - "SImon", - "day", - "fx" - ], - "license":[ - "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License (https://creativecommons.org/licenses)\\. Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) .*\\. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" - ], - "mip_era":[ - "CMIP6" - ], - "sub_experiment_id":{ - "none":"none", - "s1910":"initialized near end of year 1910", - "s1950":"initialized near end of year 1950", - "s1960":"initialized near end of year 1960", - "s1961":"initialized near end of year 1961", - "s1962":"initialized near end of year 1962", - "s1963":"initialized near end of year 1963", - "s1964":"initialized near end of year 1964", - "s1965":"initialized near end of year 1965", - "s1966":"initialized near end of year 1966", - "s1967":"initialized near end of year 1967", - "s1968":"initialized near end of year 1968", - "s1969":"initialized near end of year 1969", - "s1970":"initialized near end of year 1970", - "s1971":"initialized near end of year 1971", - "s1972":"initialized near end of year 1972", - "s1973":"initialized near end of year 1973", - "s1974":"initialized near end of year 1974", - "s1975":"initialized near end of year 1975", - "s1976":"initialized near end of year 1976", - "s1977":"initialized near end of year 1977", - "s1978":"initialized near end of year 1978", - "s1979":"initialized near end of year 1979", - "s1980":"initialized near end of year 1980", - "s1981":"initialized near end of year 1981", - "s1982":"initialized near end of year 1982", - "s1983":"initialized near end of year 1983", - "s1984":"initialized near end of year 1984", - "s1985":"initialized near end of year 1985", - "s1986":"initialized near end of year 1986", - "s1987":"initialized near end of year 1987", - "s1988":"initialized near end of year 1988", - "s1989":"initialized near end of year 1989", - "s1990":"initialized near end of year 1990", - "s1991":"initialized near end of year 1991", - "s1992":"initialized near end of year 1992", - "s1993":"initialized near end of year 1993", - "s1994":"initialized near end of year 1994", - "s1995":"initialized near end of year 1995", - "s1996":"initialized near end of year 1996", - "s1997":"initialized near end of year 1997", - "s1998":"initialized near end of year 1998", - "s1999":"initialized near end of year 1999", - "s2000":"initialized near end of year 2000", - "s2001":"initialized near end of year 2001", - "s2002":"initialized near end of year 2002", - "s2003":"initialized near end of year 2003", - "s2004":"initialized near end of year 2004", - "s2005":"initialized near end of year 2005", - "s2006":"initialized near end of year 2006", - "s2007":"initialized near end of year 2007", - "s2008":"initialized near end of year 2008", - "s2009":"initialized near end of year 2009", - "s2010":"initialized near end of year 2010", - "s2011":"initialized near end of year 2011", - "s2012":"initialized near end of year 2012", - "s2013":"initialized near end of year 2013", - "s2014":"initialized near end of year 2014", - "s2015":"initialized near end of year 2015", - "s2016":"initialized near end of year 2016", - "s2017":"initialized near end of year 2017", - "s2018":"initialized near end of year 2018", - "s2019":"initialized near end of year 2019", - "s2020":"initialized near end of year 2020", - "s2021":"initialized near end of year 2021", - "s2022":"initialized near end of year 2022", - "s2023":"initialized near end of year 2023", - "s2024":"initialized near end of year 2024", - "s2025":"initialized near end of year 2025", - "s2026":"initialized near end of year 2026", - "s2027":"initialized near end of year 2027", - "s2028":"initialized near end of year 2028", - "s2029":"initialized near end of year 2029" - }, - "experiment_id":{ - "1pctCO2":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"DECK: 1pctCO2", - "end_year":"", - "experiment":"1 percent per year increase in CO2", - "experiment_id":"1pctCO2", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "1pctCO2-4xext":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"branched from 1pctCO2 run at year 140 and run with CO2 fixed at 4x pre-industrial concentration", - "end_year":"", - "experiment":"extension from year 140 of 1pctCO2 with 4xCO2", - "experiment_id":"1pctCO2-4xext", - "min_number_yrs_per_sim":"210", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "1pctCO2" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "1pctCO2-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling", - "end_year":"", - "experiment":"biogeochemically-coupled version of 1 percent per year increasing CO2 experiment", - "experiment_id":"1pctCO2-bgc", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "1pctCO2-rad":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Radiatively-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling", - "end_year":"", - "experiment":"radiatively-coupled version of 1 percent per year increasing CO2 experiment", - "experiment_id":"1pctCO2-rad", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "1pctCO2Ndep":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Fully-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition", - "end_year":"", - "experiment":"1 percent per year increasing CO2 experiment with increasing N-deposition", - "experiment_id":"1pctCO2Ndep", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "1pctCO2Ndep-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition", - "end_year":"", - "experiment":"biogeochemically-coupled version of 1 percent per year increasing CO2 experiment with increasing N-deposition", - "experiment_id":"1pctCO2Ndep-bgc", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "1pctCO2to4x-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation that includes interactive ice sheets", - "end_year":"", - "experiment":"simulation with interactive ice sheet forced by 1 percent per year increase in CO2 to 4xCO2 (subsequently held fixed)", - "experiment_id":"1pctCO2to4x-withism", - "min_number_yrs_per_sim":"350", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "piControl-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "G1":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Beginning from a preindustrial control run, simultaneously quadruple the CO2 concentration and reduce the solar constant such that the TOA radiative flux remains within +/m0.1 W/m2", - "end_year":"", - "experiment":"abrupt quadrupling of CO2 plus reduction in total solar irradiance", - "experiment_id":"G1", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "G6SST1":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario)", - "end_year":"", - "experiment":"SSTs, forcings, and other prescribed conditions from year 2020 of SSP5-8.5", - "experiment_id":"G6SST1", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "G6SST2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 2100 (G6solar)", - "end_year":"", - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6solar", - "experiment_id":"G6SST2-solar", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "G6SST2-sulfur":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 2100 (G6sulfur)", - "end_year":"", - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6sulfur", - "experiment_id":"G6SST2-sulfur", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "G6solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Using solar irradiance reduction, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing", - "end_year":"2100", - "experiment":"total solar irradiance reduction to reduce net forcing from SSP585 to SSP245", - "experiment_id":"G6solar", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "G6sulfur":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Using equatorial SO2 injection, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing", - "end_year":"2100", - "experiment":"stratospheric sulfate aerosol injection to reduce net forcing from SSP585 to SSP245", - "experiment_id":"G6sulfur", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "G7SST1-cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario and cirrus thinning according to G7cirrus)", - "end_year":"", - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2020 of SSP5-8.5 and cirrus thinning", - "experiment_id":"G7SST1-cirrus", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "G7SST2-cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 2100 (ScenarioMIP Tier 1 high forcing scenario and cirrus thinning according to G7cirrus)", - "end_year":"", - "experiment":"SSTs from year 2100 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G7cirrus", - "experiment_id":"G7SST2-cirrus", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "G7cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Against a background of the ScenarioMIP high forcing, reduce cirrus cloud optical depth by a constant amount", - "end_year":"2100", - "experiment":"increase cirrus ice crystal fall speed to reduce net forcing in SSP585 by 1 W m-2", - "experiment_id":"G7cirrus", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "a4SST":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As piSST, but with monthly-varying SSTs taken from years 111-140 of each model's own abrupt4xCO2 experiment instead of from piControl. Sea-ice is unchanged from piSST", - "end_year":"", - "experiment":"as piSST but with SSTs from abrupt4xCO2", - "experiment_id":"a4SST", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "a4SSTice":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As piSST, but with monthly-varying SSTs and sea-ice taken from years 111-140 of each model's own abrupt4xCO2 experiment instead of from piControl", - "end_year":"", - "experiment":"as piSST but with SSTs and sea ice from abrupt4xCO2", - "experiment_id":"a4SSTice", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "a4SSTice-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As a4SSTice, but CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation", - "end_year":"", - "experiment":"as piSST but with SSTs and sea ice from abrupt4xCO2, and 4xCO2 seen by radiation and vegetation", - "experiment_id":"a4SSTice-4xCO2", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "abrupt-0p5xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Identical to the DECK abrupt-4xCO2, but at 0.5xCO2", - "end_year":"", - "experiment":"abrupt halving of CO2", - "experiment_id":"abrupt-0p5xCO2", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "abrupt-2xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Identical to the DECK abrupt-4xCO2, but at 2xCO2", - "end_year":"", - "experiment":"abrupt doubling of CO2", - "experiment_id":"abrupt-2xCO2", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "abrupt-4xCO2":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"DECK: abrupt4xCO2", - "end_year":"", - "experiment":"abrupt quadrupling of CO2", - "experiment_id":"abrupt-4xCO2", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "abrupt-solm4p":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Conceptually similar to abrupt 4xCO2 DECK experiment, except that the solar constant rather than CO2 is abruptly reduced by 4%", - "end_year":"", - "experiment":"abrupt 4% decrease in solar constant", - "experiment_id":"abrupt-solm4p", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "abrupt-solp4p":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Conceptually similar to abrupt 4xCO2 DECK experiment, except that the solar constant rather than CO2 is abruptly increased by 4%", - "end_year":"", - "experiment":"abrupt 4% increase in solar constant", - "experiment_id":"abrupt-solp4p", - "min_number_yrs_per_sim":"150", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"DECK: AMIP", - "end_year":"2014", - "experiment":"AMIP", - "experiment_id":"amip", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "amip-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As CMIP5/CFMIP-2 amip4xCO2 experiment. AMIP experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled", - "end_year":"2014", - "experiment":"AMIP SSTs with 4xCO2", - "experiment_id":"amip-4xCO2", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "amip-TIP":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"The topography of the TIP is modified by setting surface elevations to 500m; to understand the combined thermal and mechanical forcing of the TIP. Same model as DECK", - "end_year":"2014", - "experiment":"same as \"amip\" run, but surface elevations of the Tibetan-Iranian Plateau and Himalayas reduced to 500m", - "experiment_id":"amip-TIP", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "amip-TIP-nosh":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Surface sensible heat released at the elevation above 500m over the TIP is not allowed to heat the atmosphere. Same model as DECK", - "end_year":"2014", - "experiment":"same as \"amip\" run, but sensible heat not allowed for elevations of the Tibetan-Iranian Plateau and Himalayas above 500m", - "experiment_id":"amip-TIP-nosh", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "amip-a4SST-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Same as amip, but a patterned SST anomaly is applied on top of the monthly-varying amip SSTs. This anomaly is a monthly climatology, taken from each model's own abrupt4xCO2 run minus piControl (using the mean of years 111-140 of abrupt4xCO2, and the parallel 30-year section of piControl). CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation", - "end_year":"2014", - "experiment":"as AMIP but with warming pattern from abrupt4xCO2 added to SSTs and 4xCO2 seen by radiation and vegetation", - "experiment_id":"amip-a4SST-4xCO2", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-future4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As CMIP5/CFMIP-2 amipFuture experiment. AMIP experiment where SSTs are subject to a composite SST warming pattern derived from coupled models, scaled to an ice-free ocean mean of 4K", - "end_year":"2014", - "experiment":"AMIP with patterned 4K SST increase", - "experiment_id":"amip-future4K", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "amip-hist":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Extended AMIP run that covers 1870-2014. All natural and anthropogenic historical forcings as used in CMIP6 Historical Simulation will be included. AGCM resolution as CMIP6 Historical Simulation. The HadISST data will be used", - "end_year":"2014", - "experiment":"AMIP-style simulation covering the period 1870-2014", - "experiment_id":"amip-hist", - "min_number_yrs_per_sim":"144", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1870", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "amip-hld":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"The topography of the highlands in Africa, N. America and S. America TP is modified by setting surface elevations to a certain height (500m). Same model as DECK", - "end_year":"2014", - "experiment":"same as \"amip\" run, but surface elevations of the East African Highlands in Africa, Sierra Madre in N. America and Andes in S. America reduced to 500m", - "experiment_id":"amip-hld", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "amip-lfmip-pObs":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Land-hist land conditions; AMIP SSTs", - "end_year":"2014", - "experiment":"prescribed land (from pseudo-observations) and AMIP SSTs", - "experiment_id":"amip-lfmip-pObs", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-lfmip-pdLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 1980-2014 climate; AMIP SSTs", - "end_year":"2014", - "experiment":"prescribed land (from current climatology) and AMIP SSTs", - "experiment_id":"amip-lfmip-pdLC", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-lfmip-rmLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 30yr running mean; AMIP SSTs", - "end_year":"2014", - "experiment":"prescribed land conditions (from running mean climatology) and AMIP SSTs", - "experiment_id":"amip-lfmip-rmLC", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As amip experiment, but with cloud-radiative effects switched off in the LW radiation code", - "end_year":"2014", - "experiment":"AMIP experiment with longwave cloud-radiative effects off", - "experiment_id":"amip-lwoff", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-m4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As amip experiment but SSTs are subject to a uniform cooling of 4K", - "end_year":"2014", - "experiment":"AMIP with uniform 4K SST decrease", - "experiment_id":"amip-m4K", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-p4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As CMIP5/CFMIP-2 amip4K experiment. AMIP experiment where SSTs are subject to a uniform warming of 4K", - "end_year":"2014", - "experiment":"AMIP with uniform 4K SST increase", - "experiment_id":"amip-p4K", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "amip-p4K-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As amip-p4K experiment, but with cloud-radiative effects switched off in the LW radiation code", - "end_year":"2014", - "experiment":"AMIP experiment with uniform 4K SST increase and with longwave cloud radiative effects off", - "experiment_id":"amip-p4K-lwoff", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "amip-piForcing":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Identical to standard AMIP experiment but from 1870-present with constant pre-industrial forcing levels (anthropogenic and natural)", - "end_year":"2014", - "experiment":"AMIP SSTs with pre-industrial anthropogenic and natural forcing", - "experiment_id":"amip-piForcing", - "min_number_yrs_per_sim":"145", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1870", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "aqua-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Extended version of CMIP5/CFMIP-2 aqua4xCO2 experiment. Aquaplanet experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled", - "end_year":"", - "experiment":"aquaplanet with control SST and 4xCO2", - "experiment_id":"aqua-4xCO2", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "aqua-control":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Extended version of CMIP5/CFMIP-2 aquaControl experiment. Aquaplanet (no land) experiment with no seasonal cycle forced with specified zonally symmetric SSTs", - "end_year":"", - "experiment":"aquaplanet control", - "experiment_id":"aqua-control", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "aqua-control-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As aqua-control experiment, but with cloud-radiative effects switched off in the LW radiation code", - "end_year":"", - "experiment":"aquaplanet control with longwave cloud radiative effects off", - "experiment_id":"aqua-control-lwoff", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "aqua-p4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Extended version of CMIP5/CFMIP-2 aqua4K experiment. Aquaplanet experiment where SSTs are subject to a uniform warming of 4K", - "end_year":"", - "experiment":"aquaplanet with uniform 4K SST increase", - "experiment_id":"aqua-p4K", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "aqua-p4K-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As aqua-p4K experiment, but with cloud-radiative effects switched off in the LW radiation code", - "end_year":"", - "experiment":"aquaplanet with uniform 4K SST increase and with longwave cloud radiative effects off", - "experiment_id":"aqua-p4K-lwoff", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "control-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Coupled integrations with constant 1950\"s forcing", - "end_year":"", - "experiment":"coupled control with fixed 1950's forcing (HighResMIP equivalent of pre-industrial control)", - "experiment_id":"control-1950", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "spinup-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "control-slab":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"slab control run for volc-pinatubo-slab", - "end_year":"", - "experiment":"control with slab ocean", - "experiment_id":"control-slab", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "SLAB" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "dcppA-assim":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"A2.3 Assimilation runs used to generate initial conditions for hindcasts", - "end_year":"2016", - "experiment":"Assimilation run paralleling the historical simulation, which may be used to generate hindcast initial conditions", - "experiment_id":"dcppA-assim", - "min_number_yrs_per_sim":"56", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"before 1961", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppA-hindcast":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"A1 (and A2.1, A3.1, and A3.2) Decadal hindcasts begun near the end of each year from 1960 to 2016, or every other year at minimum. First full hindcast year follows start year (e.g., for s1960, first full hindcast year is 1961)", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast initialized based on observations and using historical forcing", - "experiment_id":"dcppA-hindcast", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"a year in the range 1960-2016", - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ], - "tier":"1" - }, - "dcppA-hindcast-niff":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"A4.1 Decadal hindcasts begun near the end of each year from 1960 to 2016, or every other year at minimum, but with no information from the future. First full hindcast year follows start year (e.g., for s1960, first full hindcast year is 1961)", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast initialized based on observations but without using knowledge of subsequent historical forcing", - "experiment_id":"dcppA-hindcast-niff", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"a year in the range 1960-2016", - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ], - "tier":"4" - }, - "dcppA-historical-niff":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"A4.2 Hindcasts initialized from historical climate simulations as in DCPP-A2.2, but with no information from the future. First full hindcast year follows start year (e.g., for s1960, first full hindcast year is 1961)", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast initialized from historical climate simulation but without using knowledge of subsequent historical forcing", - "experiment_id":"dcppA-historical-niff", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"A year in the range 1960-2016", - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ], - "tier":"4" - }, - "dcppB-forecast":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"B1 (and B2.1, B2.2) Ongoing decadal forecasts. First full forecast year follows start year (e.g., for s2017, first full forecast year is 2018)", - "end_year":"5 years after start year", - "experiment":"forecast initialized from observations with forcing from ssp245", - "experiment_id":"dcppB-forecast", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"a year in the range 2017-2029", - "sub_experiment_id":[ - "s2017", - "s2018", - "s2019", - "s2020", - "s2021", - "s2022", - "s2023", - "s2024", - "s2025", - "s2026", - "s2027", - "s2028", - "s2029" - ], - "tier":"1" - }, - "dcppC-amv-ExTrop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.7 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized climate impact of negative extratropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-ExTrop-neg", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-amv-ExTrop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.7Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized climate impact of positive extratropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-ExTrop-pos", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-amv-Trop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.8 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized climate impact of negative tropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-Trop-neg", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-amv-Trop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.8 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized positive tropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-Trop-pos", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-amv-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.3 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized climate impact of negative AMV anomaly pattern", - "experiment_id":"dcppC-amv-neg", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-amv-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.2 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized climate impact of positive AMV anomaly pattern", - "experiment_id":"dcppC-amv-pos", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-atl-control":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.1 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"Idealized Atlantic control", - "experiment_id":"dcppC-atl-control", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-atl-pacemaker":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.11 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"2014", - "experiment":"pacemaker Atlantic experiment", - "experiment_id":"dcppC-atl-pacemaker", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1910 or 1950", - "sub_experiment_id":[ - "s1910", - "s1950" - ], - "tier":"3" - }, - "dcppC-atl-spg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C2.1 (and C2.2) Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs. First full hindcast year follows start year (e.g., for s1992, first full hindcast year is 1993)", - "end_year":"5 - 10 years after start year", - "experiment":"predictability of 1990s warming of Atlantic sub-polar gyre", - "experiment_id":"dcppC-atl-spg", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"A year in the range 1992-1999", - "sub_experiment_id":[ - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999" - ], - "tier":"3" - }, - "dcppC-forecast-addAgung":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.4 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 2015", - "end_year":"5 - 10 years after start year", - "experiment":"2015 forecast with added Agung forcing", - "experiment_id":"dcppC-forecast-addAgung", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2014", - "sub_experiment_id":[ - "s2014" - ], - "tier":"3" - }, - "dcppC-forecast-addElChichon":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.5 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 2015", - "end_year":"5 - 10 years after start year", - "experiment":"2015 forecast with added El Chichon forcing", - "experiment_id":"dcppC-forecast-addElChichon", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2014", - "sub_experiment_id":[ - "s2014" - ], - "tier":"3" - }, - "dcppC-forecast-addPinatubo":{ - "activity_id":[ - "DCPP", - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.6 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 2015", - "end_year":"5 - 10 years after start year", - "experiment":"2015 forecast with added Pinatubo forcing", - "experiment_id":"dcppC-forecast-addPinatubo", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2014", - "sub_experiment_id":[ - "s2014" - ], - "tier":"1" - }, - "dcppC-hindcast-noAgung":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.3 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 1962", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noAgung", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1962", - "sub_experiment_id":[ - "s1962" - ], - "tier":"2" - }, - "dcppC-hindcast-noElChichon":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.2 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 1982", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noElChichon", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1981", - "sub_experiment_id":[ - "s1981" - ], - "tier":"2" - }, - "dcppC-hindcast-noPinatubo":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C3.1 Effects of volcanoes on decadal prediction and predictability of forced and internal variability components. First full hindcast year is 1991", - "end_year":"5 - 10 years after start year", - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noPinatubo", - "min_number_yrs_per_sim":"5", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1990", - "sub_experiment_id":[ - "s1990" - ], - "tier":"1" - }, - "dcppC-ipv-NexTrop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.9 and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized negative northern extratropical IPV anomaly pattern", - "experiment_id":"dcppC-ipv-NexTrop-neg", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-ipv-NexTrop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.9 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized positive northern extratropical IPV anomaly pattern", - "experiment_id":"dcppC-ipv-NexTrop-pos", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "dcppC-ipv-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.6 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized negative IPV anomaly pattern", - "experiment_id":"dcppC-ipv-neg", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-ipv-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.5 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized positive IPV anomaly pattern", - "experiment_id":"dcppC-ipv-pos", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-pac-control":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.4 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", - "end_year":"", - "experiment":"idealized Pacific control", - "experiment_id":"dcppC-pac-control", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "dcppC-pac-pacemaker":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"C1.10 Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs. First full hindcast year is 2015", - "end_year":"2014", - "experiment":"pacemaker Pacific experiment", - "experiment_id":"dcppC-pac-pacemaker", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"either 1910 or 1950", - "sub_experiment_id":[ - "s1910", - "s1950" - ], - "tier":"3" - }, - "deforest-globe":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Idealized deforestation experiment, 20 million km2 forest removed linearly over a period of 50 years, with an additional 30 years with no specified change in forest cover; all other forcings held constant", - "end_year":"", - "experiment":"idealized transient global deforestation", - "experiment_id":"deforest-globe", - "min_number_yrs_per_sim":"81", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "esm-hist":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"CMIP6 historical (CO2 emission-driven)", - "end_year":"2014", - "experiment":"all-forcing simulation of the recent past with atmospheric CO2 concentration calculated", - "experiment_id":"esm-hist", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "esm-hist-ext":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Extension beyond 2014 of the CMIP6 historical (CO2 emission-driven)", - "end_year":"", - "experiment":"post-2014 all-forcing simulation with atmospheric CO2 concentration calculated", - "experiment_id":"esm-hist-ext", - "min_number_yrs_per_sim":"1", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "esm-piControl":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"DECK: control (emission-driven)", - "end_year":"", - "experiment":"pre-industrial control simulation with CO2 concentration calculated", - "experiment_id":"esm-piControl", - "min_number_yrs_per_sim":"500", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl-spinup" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "esm-piControl-spinup":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"DECK: spin-up portion of the control (emission-driven)", - "end_year":"", - "experiment":"pre-industrial control simulation with CO2 concentration calculated (spin-up)", - "experiment_id":"esm-piControl-spinup", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "esm-ssp585":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Emissions-driven future scenario simulation", - "end_year":"2100", - "experiment":"emission-driven RCP8.5 based on SSP5", - "experiment_id":"esm-ssp585", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "esm-ssp585-ssp126Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as in C4MIP esmssp5-8.5 scenario except use SSP1-2.6 land use; emission driven", - "end_year":"2100", - "experiment":"emissions-driven SSP5-8.5 with SSP1-2.6 land use", - "experiment_id":"esm-ssp585-ssp126Lu", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "faf-all":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1xCO2 experiment, parallel to piControl, forced over the ocean simultaneously by surface windstress (as in the wind experiment), net heat flux (as in the heat experiment) and net freshwater flux (as in the water experiment) anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied", - "end_year":"", - "experiment":"control plus perturbative surface fluxes of momentum, heat and water into ocean", - "experiment_id":"faf-all", - "min_number_yrs_per_sim":"70", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "faf-heat":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1xCO2 experiment, parallel to piControl, forced over the ocean by surface net heat flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied", - "end_year":"", - "experiment":"control plus perturbative surface flux of heat into ocean", - "experiment_id":"faf-heat", - "min_number_yrs_per_sim":"70", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "faf-passiveheat":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1xCO2 experiment, parallel to piControl, with a flux of passive tracer added at the ocean surface at the same rate as the surface net heat flux anomaly applied in the FAFMIP heat experiment", - "end_year":"", - "experiment":"control plus surface flux of passive heat tracer into ocean", - "experiment_id":"faf-passiveheat", - "min_number_yrs_per_sim":"70", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "faf-stress":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1xCO2 experiment, parallel to piControl, forced over the ocean by surface windstress anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2", - "end_year":"", - "experiment":"control plus perturbative surface flux of momentum into ocean", - "experiment_id":"faf-stress", - "min_number_yrs_per_sim":"70", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "faf-water":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1xCO2 experiment, parallel to piControl, forced over the ocean by surface net freshwater flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2", - "end_year":"", - "experiment":"control plus perturbative surface flux of water into ocean", - "experiment_id":"faf-water", - "min_number_yrs_per_sim":"70", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "futureSST-4xCO2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at year 100 of G1ext to examine radiative forcing of abrupt4xCO2 and G1", - "end_year":"", - "experiment":"year 100 SSTs from abrupt4xCO2 with quadrupled CO2 and solar reduction", - "experiment_id":"futureSST-4xCO2-solar", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "GeoMIP" - ], - "parent_experiment_id":[ - "G1" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "highres-future":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Coupled integrations with SSP5 forcing (nearest to CMIP5 RCP8.5 (as in highresSST-future)", - "end_year":"2050", - "experiment":"coupled future 2015-2050 using a scenario as close to CMIP5 RCP8.5 as possible within CMIP6", - "experiment_id":"highres-future", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "hist-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "highresSST-4co2":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Similar to CFMIP amip-4xCO2, SSTs are held at highresSST-present values and the CO2 seen by the radiation scheme is quadrupled", - "end_year":"2014", - "experiment":"highresSST-present SST with 4xCO2 concentrations", - "experiment_id":"highresSST-4co2", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "highresSST-LAI":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Forced global atmosphere-land simulations as highresSST-present, but using an common LAI dataset across models", - "end_year":"2014", - "experiment":"common LAI dataset within the highresSST-present experiment", - "experiment_id":"highresSST-LAI", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "highresSST-future":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Extend highresSST-present to 2050 with agreed SSP5/RCP8.5 forcings (with option to extend further to 2100)", - "end_year":"2050", - "experiment":"forced atmosphere experiment for 2015-2050 using SST/sea-ice derived from CMIP5 RCP8.5 simulations and a scenario as close to RCP8.5 as possible within CMIP6", - "experiment_id":"highresSST-future", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "highresSST-p4K":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Similar to CFMIP amip-p4K, add a uniform warming of 4K to highresSST-present SSTs and run the experiment parallel to highresSST-present", - "end_year":"2014", - "experiment":"uniform 4K warming of highresSST-present SST", - "experiment_id":"highresSST-p4K", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "highresSST-present":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Forced global atmosphere-land simulations using daily 1/4 degree SST and sea-ice forcings, and aerosol optical properties (not emissions) to constrain model spread", - "end_year":"2014", - "experiment":"forced atmosphere experiment for 1950-2014", - "experiment_id":"highresSST-present", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1950", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "highresSST-smoothed":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Forced global atmosphere-land simulations as highresSST-present, but using smoothed SST to investigate impact of SST variability", - "end_year":"2014", - "experiment":"smoothed SST version of highresSST-present", - "experiment_id":"highresSST-smoothed", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "hist-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Coupled integrationswith historic external forcings (as in highresSST-present)", - "end_year":"2014", - "experiment":"coupled historical 1950-2014", - "experiment_id":"hist-1950", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "spinup-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1950", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-1950HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "description":"Historical WMGHG concentrations and NTCF emissions, 1950 halocarbon concentrations, start 1950", - "end_year":"2014", - "experiment":"historical forcing, but with1950s halocarbon concentrations; initialized in 1950", - "experiment_id":"hist-1950HC", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM", - "AER", - "CHEM" - ], - "start_year":"1950", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-CO2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical CO2-only run", - "end_year":"2020", - "experiment":"historical CO2-only run", - "experiment_id":"hist-CO2", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "hist-GHG":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical well-mixed GHG-only run. Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes. This will ensure that ozone is fixed in all these simulations, and simulated responses in models with and without coupled chemistry are comparable", - "end_year":"2020", - "experiment":"historical well-mixed GHG-only run", - "experiment_id":"hist-GHG", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-aer":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical anthropogenic-Aerosols-only run", - "end_year":"2020", - "experiment":"historical anthropogenic aerosols-only run", - "experiment_id":"hist-aer", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-all-aer2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical ALL forcing run with alternate estimates of aerosol concentrations/emissions", - "end_year":"2020", - "experiment":"historical ALL-forcing run with alternate estimates of aerosol forcing", - "experiment_id":"hist-all-aer2", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "hist-all-nat2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical ALL forcing run with alternates estimate of solar and volcanic forcing", - "end_year":"2020", - "experiment":"historical ALL-forcing run with alternate estimates of natural forcing", - "experiment_id":"hist-all-nat2", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "hist-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Concentration-driven historical simulation, biogeochemically-coupled", - "end_year":"2014", - "experiment":"biogeochemically-coupled version of the simulation of the recent past with CO2 concentration prescribed", - "experiment_id":"hist-bgc", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-nat":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical natural-only run", - "end_year":"2020", - "experiment":"historical natural-only run", - "experiment_id":"hist-nat", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-noLu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Same as CMIP6 historical but with land cover held at 1850, no human activity; concentration driven", - "end_year":"2014", - "experiment":"historical with no land-use change", - "experiment_id":"hist-noLu", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-piAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Historical WMGHG, halocarbon concentrations and O3 precursor emissions, 1850 aerosol precursor emissions", - "end_year":"2014", - "experiment":"historical forcing, but with pre-industrial aerosol emissions", - "experiment_id":"hist-piAer", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-piNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Historical WMGHG and halocarbons concentrations, 1850 NTCF emissions", - "end_year":"2014", - "experiment":"historical forcing, but with pre-industrial NTCF emissions", - "experiment_id":"hist-piNTCF", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-resAMO":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the AMO domain (0deg-70degN, 70degW-0deg)", - "end_year":"2014", - "experiment":"initialized from \"historical\" run year 1870 and SSTs in the AMO domain (0deg-70degN, 70degW-0deg) restored to AMIP SSTs with historical forcings", - "experiment_id":"hist-resAMO", - "min_number_yrs_per_sim":"145", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1870", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-resIPO":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the tropical lobe of the IPO domain (20degS-20degN, 175degE-75degW)", - "end_year":"2014", - "experiment":"initialized from \"historical\" run year 1870 and SSTs in tropical lobe of the IPO domain (20degS-20degN, 175degE-75degW) restored to AMIP SSTs with historical forcings", - "experiment_id":"hist-resIPO", - "min_number_yrs_per_sim":"145", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1870", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-sol":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical solar-only transient simulation using settings from CMIP6 historical simulation but fixed GHG and ODS (1850 level)", - "end_year":"2020", - "experiment":"historical solar-only run", - "experiment_id":"hist-sol", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "hist-spAer-aer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. Changes in aerosols only", - "end_year":"2014", - "experiment":"historical simulation with specified anthropogenic aerosols, no other forcings", - "experiment_id":"hist-spAer-aer", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-spAer-all":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. All forcings", - "end_year":"2014", - "experiment":"historical simulation with specified anthropogenic aerosols", - "experiment_id":"hist-spAer-all", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "hist-stratO3":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "BGC" - ], - "description":"Historical stratospheric-ozone-only. In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the CMIP6 historical simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from the stratosphere. In models without coupled chemistry the same stratospheric ozone prescribed in the CMIP6 historical simulations should be prescribed. Stratospheric ozone concentrations will be provided by CCMI", - "end_year":"2020", - "experiment":"historical stratospheric-ozone-only run", - "experiment_id":"hist-stratO3", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "hist-volc":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical volcanic-only run", - "end_year":"2020", - "experiment":"historical volcanic-only run", - "experiment_id":"hist-volc", - "min_number_yrs_per_sim":"171", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "histSST":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Historical transient with SSTs prescribed from historical", - "end_year":"2014", - "experiment":"historical prescribed SSTs and historical forcing", - "experiment_id":"histSST", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "histSST-1950HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Historical WMGHG concentrations and NTCF emissions, 1950 halocarbon concentrations", - "end_year":"2014", - "experiment":"historical SSTs and historical forcing, but with1950 halocarbon concentrations", - "experiment_id":"histSST-1950HC", - "min_number_yrs_per_sim":"65", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"1950", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "histSST-piAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Historical WMGHG, halocarbon concentrations and tropospheric ozone precursors emissions, 1850 aerosol precursor emissions, prescribed SSTs", - "end_year":"2014", - "experiment":"historical SSTs and historical forcing, but with pre-industrial aerosol emissions", - "experiment_id":"histSST-piAer", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "histSST-piCH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Historical (non-CH4) WMGHG concentrations and NTCF emissions, 1850 CH4 concentrations", - "end_year":"2014", - "experiment":"historical SSTs and historical forcing, but with pre-industrial methane concentrations", - "experiment_id":"histSST-piCH4", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "histSST-piN2O":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "description":"Historical (non-N2O) WMGHG concentrations and NTCF emissions, 1850 N2O concentrations", - "end_year":"2014", - "experiment":"historical SSTs and historical forcings, but with pre-industrial N2O concentrations", - "experiment_id":"histSST-piN2O", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "histSST-piNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Historical WMGHG concentrations and halocarbons emissions, 1850 NTCF emissions, prescribed SSTs", - "end_year":"2014", - "experiment":"historical SSTs and historical forcing, but with pre-industrial NTCF emissions", - "experiment_id":"histSST-piNTCF", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "histSST-piO3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Historical WMGHG, halocarbon concentrations and aerosol precursor emissions, 1850 tropospheric ozone precursors emissions, prescribed SSTs", - "end_year":"2014", - "experiment":"historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions", - "experiment_id":"histSST-piO3", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "historical":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"CMIP6 historical", - "end_year":"2014", - "experiment":"all-forcing simulation of the recent past", - "experiment_id":"historical", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "historical-ext":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Extension beyond 2014 of the CMIP6 historical", - "end_year":"present", - "experiment":"post-2014 all-forcing simulation", - "experiment_id":"historical-ext", - "min_number_yrs_per_sim":"1", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "historical-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Historical simulation that includes interactive ice sheets. Set up follows the historical experiment", - "end_year":"2014", - "experiment":"historical with interactive ice sheet", - "experiment_id":"historical-withism", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "piControl-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ism-1pctCO2to4x-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation with ice sheets forced \"offline\" with DECK 1pctCO2 using forcing from its own AOGCM", - "end_year":"", - "experiment":"offline ice sheet model forced by ISM's own AOGCM 1pctCO2to4x output", - "experiment_id":"ism-1pctCO2to4x-self", - "min_number_yrs_per_sim":"350", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-piControl-self" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-1pctCO2to4x-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation with ice sheets forced \"offline\" with DECK 1pctCO2 using a standard forcing", - "end_year":"", - "experiment":"offline ice sheet model forced by ISMIP6-specified AOGCM 1pctCO2to4x output", - "experiment_id":"ism-1pctCO2to4x-std", - "min_number_yrs_per_sim":"350", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-pdControl-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-amip-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Offline ice sheet evolution for the last few decades forced by amip", - "end_year":"2014", - "experiment":"offline ice sheet forced by ISMIP6-specified AGCM AMIP output", - "experiment_id":"ism-amip-std", - "min_number_yrs_per_sim":"36", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"1979", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "ism-asmb-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Offline ice sheet simulation with synthetic atmospheric dataset to explore the uncertainty in sea level due to ice sheet initialization", - "end_year":"", - "experiment":"offline ice sheet forced by initMIP synthetic atmospheric experiment", - "experiment_id":"ism-asmb-std", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-bsmb-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Offline ice sheet simulation with synthetic oceanic dataset to explore the uncertainty in sea level due to ice sheet initialization", - "end_year":"", - "experiment":"offline ice sheet forced by initMIP synthetic oceanic experiment", - "experiment_id":"ism-bsmb-std", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-ctrl-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Offline ice sheet control run for the initMIP experiment that explores the uncertainty in sea level due to ice sheet initialization", - "end_year":"", - "experiment":"offline ice sheet model initMIP control", - "experiment_id":"ism-ctrl-std", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-historical-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Historical simulation using \"offline\" ice sheet models. Forcing for ice sheet model is from its own AOGCM", - "end_year":"2014", - "experiment":"offline ice sheet forced by ISM's own AOGCM historical output", - "experiment_id":"ism-historical-self", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-piControl-self" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ism-historical-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Historical simulation using \"offline\" ice sheet models. Forcing for ice sheet model is the standard dataset based on CMIP6 AOGCM historical", - "end_year":"2014", - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM historical output", - "experiment_id":"ism-historical-std", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-pdControl-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ism-lig127k-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Last interglacial simulation of ice sheet evolution driven by PMIP lig127k", - "end_year":"", - "experiment":"offline ice sheet forced by ISMIP6-specified AGCM last interglacial output", - "experiment_id":"ism-lig127k-std", - "min_number_yrs_per_sim":"20000", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "ism-pdControl-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Present-day control simulation for \"offline\" ice sheets", - "end_year":"", - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM pdControl output", - "experiment_id":"ism-pdControl-std", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-piControl-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Pre-industrial control simulation for \"offline\" ice sheets", - "end_year":"", - "experiment":"offline ice sheet forced by ISM's own AOGCM piControl output", - "experiment_id":"ism-piControl-self", - "min_number_yrs_per_sim":"500", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ism-ssp585-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Future climate ScenarioMIP SSP5-8.5 simulation using \"offline\" ice sheet models. Forcing for ice sheet model is from its own AOGCM", - "end_year":"2300", - "experiment":"offline ice sheet forced by ISM's own AOGCM ssp585 output", - "experiment_id":"ism-ssp585-self", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-historical-self" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ism-ssp585-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":"", - "description":"Future climate ScenarioMIP SSP5-8.5 simulation using \"offline\" ice sheet models. Forcing for ice sheet model is the standard dataset based on ScenarioMIP ssp585", - "end_year":"2300", - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM ssp585 output", - "experiment_id":"ism-ssp585-std", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-historical-std" - ], - "required_model_components":[ - "ISM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-cCO2":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except with CO2 held constant", - "end_year":"2014", - "experiment":"historical land-only constant CO2", - "experiment_id":"land-cCO2", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-cClim":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except with climate held constant", - "end_year":"2014", - "experiment":"historical land-only constant climate", - "experiment_id":"land-cClim", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-crop-grass":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with all new crop and pastureland treated as unmanaged grassland", - "end_year":"2014", - "experiment":"historical land-only with cropland as natural grassland", - "experiment_id":"land-crop-grass", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-crop-noFert":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with fertilization rates and area held at 1850 levels/distribution", - "end_year":"2014", - "experiment":"historical land-only with no fertilizer", - "experiment_id":"land-crop-noFert", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-crop-noIrrig":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with irrigated area held at 1850 levels", - "end_year":"2014", - "experiment":"historical land-only with no irrigation", - "experiment_id":"land-crop-noIrrig", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-crop-noIrrigFert":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except with plants in cropland area utilizing at least some form of crop management (e.g., planting and harvesting) rather than simulating cropland vegetation as a natural grassland. Irrigated area and fertilizer area/use should be held constant", - "end_year":"2014", - "experiment":"historical land-only with managed crops but with irrigation and fertilization held constant", - "experiment_id":"land-crop-noIrrigFert", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-future":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2100", - "experiment":"future land-only", - "experiment_id":"land-future", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-hist":{ - "activity_id":[ - "LS3MIP", - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"historical land-only", - "experiment_id":"land-hist", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "land-hist-altLu1":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"historical land-only alternate land-use history", - "experiment_id":"land-hist-altLu1", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-hist-altLu2":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"historical land-only alternate land use history", - "experiment_id":"land-hist-altLu2", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-hist-altStartYear":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except starting from either 1700 (for models that typically start in 1850) or 1850 (for models that typically start in 1700)", - "end_year":"2014", - "experiment":"historical land-only alternate start year", - "experiment_id":"land-hist-altStartYear", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "land-hist-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"as land-hist with CRU-NCEP forcings", - "experiment_id":"land-hist-cruNcep", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-hist-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"as land-hist with Princeton forcings", - "experiment_id":"land-hist-princeton", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-hist-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":"", - "description":"Land only simulations", - "end_year":"2014", - "experiment":"as land-hist with WFDEI forcings", - "experiment_id":"land-hist-wfdei", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-noFire":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with anthropogenic ignition and suppression held to 1850 levels", - "end_year":"2014", - "experiment":"historical land-only with no human fire management", - "experiment_id":"land-noFire", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-noLu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except no land-use change", - "end_year":"2014", - "experiment":"historical land-only with no land-use change", - "experiment_id":"land-noLu", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "land-noPasture":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with grazing and other management on pastureland held at 1850 levels/distribution, i.e. all new pastureland is treated as unmanaged grassland (as in land-crop-grass)", - "end_year":"2014", - "experiment":"historical land-only with constant pastureland", - "experiment_id":"land-noPasture", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-noShiftCultivate":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist except shifting cultivation turned off. An additional LUC transitions dataset will be provided as a data layer within LUMIP LUH2 dataset with shifting cultivation deactivated", - "end_year":"2014", - "experiment":"historical land-only with shifting cultivation turned off", - "experiment_id":"land-noShiftCultivate", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "land-noWoodHarv":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as land-hist but with wood harvest maintained at 1850 amounts/areas", - "end_year":"2014", - "experiment":"historical land-only with no wood harvest", - "experiment_id":"land-noWoodHarv", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "start_year":"1850 or 1700", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-initLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Initialized pseudo-observations land", - "end_year":"2014", - "experiment":"initialized from \"historical\" run year 1980, but with land conditions initialized from pseudo-observations", - "experiment_id":"lfmip-initLC", - "min_number_yrs_per_sim":"35", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-pdL-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 1980-2014 climate with Land-Hist-princeton", - "end_year":"2100", - "experiment":"as LFMIP-pdLC with Land-Hist-princeton", - "experiment_id":"lfmip-pdL-princeton", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-pdLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 1980-2014 climate", - "end_year":"2100", - "experiment":"prescribed land conditions (from current climate climatology) and initialized from \"historical\" run year 1980", - "experiment_id":"lfmip-pdLC", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "lfmip-pdLC-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 1980-2014 climate with Land-Hist-cruNcep", - "end_year":"2100", - "experiment":"as LFMIP-pdLC with Land-Hist-cruNcep", - "experiment_id":"lfmip-pdLC-cruNcep", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-pdLC-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 1980-2014 climate with Land-Hist-wfdei", - "end_year":"2100", - "experiment":"as LFMIP-pdLC with Land-Hist-wfdei", - "experiment_id":"lfmip-pdLC-wfdei", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-rmLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 30yr running mean", - "end_year":"2100", - "experiment":"prescribed land conditions (from running mean climatology) and initialized from \"historical\" run year 1980", - "experiment_id":"lfmip-rmLC", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-rmLC-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 30yr running mean with Land-Hist-cruNcep", - "end_year":"2100", - "experiment":"as LFMIP-rmLC with Land-Hist-cruNcep", - "experiment_id":"lfmip-rmLC-cruNcep", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-rmLC-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 30yr running mean with Land-Hist-princeton", - "end_year":"2100", - "experiment":"as LFMIP-rmLC with Land-Hist-princeton", - "experiment_id":"lfmip-rmLC-princeton", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lfmip-rmLC-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Prescribed land conditions 30yr running mean with Land-Hist-wfdei", - "end_year":"2100", - "experiment":"as LFMIP-rmLC with Land-Hist-wfdei", - "experiment_id":"lfmip-rmLC-wfdei", - "min_number_yrs_per_sim":"121", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1980", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "lgm":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"main forcings: ice-sheet; trace gases, astronomical parameters, dust (forcing, or feedback if dust cycle represented in model)", - "end_year":"", - "experiment":"last glacial maximum", - "experiment_id":"lgm", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "lig127k":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"main forcings: astronomical parameters, trace gases, dust (forcing, or feedback if dust cycle represented in model)", - "end_year":"", - "experiment":"last interglacial (127k)", - "experiment_id":"lig127k", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "midHolocene":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"main forcings: trace gases, orbital parameters, dust (forcing, or feedback if dust cycle represented in model)", - "end_year":"", - "experiment":"mid-Holocene", - "experiment_id":"midHolocene", - "min_number_yrs_per_sim":"200", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "midPliocene-eoi400":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"main forcings: trace gases, orography, ice-sheet", - "end_year":"", - "experiment":"mid-Pliocene warm period", - "experiment_id":"midPliocene-eoi400", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "omip1":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":"", - "description":"Global ocean - sea-ice coupled experiment forced with the Coordinated Ocean - ice Reference Experiments inter-annually varying atmospheric and river data sets for years 1948-2009. Initial ocean tracer fields are based on observations. All Priority=1 OMIP diagnostics are requested for all five cycles of the 62-year forcing to quantify drift. All OMIP diagnostics (Priority=1,2,3) are requested for the 5th cycle", - "end_year":"310", - "experiment":"OMIP experiment forced by Large and Yeager (CORE-2, NCEP) atmospheric data set and initialized with observed physical and biogeochemical ocean data", - "experiment_id":"omip1", - "min_number_yrs_per_sim":"310", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "start_year":"1", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "omip1-spunup":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as the omip1 experiment except that it is not initialized with observed climatologies; rather it is initialized with results from at least a 2000-year spin up of the coupled physical-biogeochemical models. The spin up simulations may be made with the classic online or offline approach, or with tracer-acceleration techniques or fast solvers. If an online approach is used, at the end of the 5th cycle of CORE-II forcing, the model's physical fields should be reinitialized to the values at the start of the 3rd cycle in order to avoid long-term drift in those fields and to assure that they will not diverge greatly from physical fields in the omip1 simulation. The spin up also includes radiocarbon to evaluate deep-ocean circulation", - "end_year":"", - "experiment":"OMIP experiment forced by Large and Yeager (CORE-2, NCEP) atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model", - "experiment_id":"omip1-spunup", - "min_number_yrs_per_sim":"310", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "omip2":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":"", - "description":"Global ocean - sea-ice coupled experiment forced with the JRA-55do inter-annually varying atmospheric and river data sets for years 1958-2016. Initial ocean tracer fields are based on observations. All Priority=1 OMIP diagnostics are requested for all five cycles of the 59-year forcing to quantify drift. All OMIP diagnostics (Priority=1,2,3) are requested for the 5th cycle", - "end_year":"", - "experiment":"OMIP experiment forced by JRA-55do atmospheric data set and initialized with observed physical and biogeochemical ocean data", - "experiment_id":"omip2", - "min_number_yrs_per_sim":"295", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "omip2-spunup":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":"", - "description":"Same as the omip2 experiment except that it is not initialized with observed climatologies; rather it is initialized with results from at least a 2000-year spin up of the coupled physical-biogeochemical models. The spin up simulations may be made with the classic online or offline approach, or with tracer-acceleration techniques or fast solvers. If an online approach is used, at the end of the 5th cycle ofthe JRA-55do forcing, the model's physical fields should be reinitialized to the values at the start of the 3rd cycle in order to avoid long-term drift in those fields and to assure that they will not diverge greatly from physical fields in the omip2 simulation. The spin up also includes radiocarbon to evaluate deep-ocean circulation", - "end_year":"", - "experiment":"OMIP experiment forced by JRA-55do atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model", - "experiment_id":"omip2-spunup", - "min_number_yrs_per_sim":"295", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "past1000":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"main forcings: trace gases, volcanoes, solar variability, land use", - "end_year":"1849", - "experiment":"last millennium", - "experiment_id":"past1000", - "min_number_yrs_per_sim":"1000", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"850", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-2xDMS":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"1850 control with doubled emissions of DMS", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS", - "experiment_id":"piClim-2xDMS", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-2xNOx":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"1850 control with doubled emissions of lightning NOx", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled production of NOx due to lightning", - "experiment_id":"piClim-2xNOx", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-2xVOC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"1850 control with doubled emissions of biogenic VOCs", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs", - "experiment_id":"piClim-2xVOC", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-2xdust":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"1850 control with doubled dust emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of dust", - "experiment_id":"piClim-2xdust", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-2xfire":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"1850 control with doubled emissions of fires", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions from fires", - "experiment_id":"piClim-2xfire", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-2xss":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"1850 control with doubled sea salt emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt", - "experiment_id":"piClim-2xss", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-4xCO2":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As in RFMIP-ERF-PI-Cntrl but with 4xCO2", - "end_year":"", - "experiment":"effective radiative forcing by 4xCO2", - "experiment_id":"piClim-4xCO2", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-BC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Perturbation from 1850 control using 2014 BC emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions", - "experiment_id":"piClim-BC", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-CH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 CH4 concentrations", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)", - "experiment_id":"piClim-CH4", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 halocarbon concentrations", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)", - "experiment_id":"piClim-HC", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-N2O":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 N2O concentrations", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)", - "experiment_id":"piClim-N2O", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-NH3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Perturbation from 1850 control using 2014 NH3 emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ammonia emissions", - "experiment_id":"piClim-NH3", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-NOx":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 NOx emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions", - "experiment_id":"piClim-NOx", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-NTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Perturbation from 1850 control using 2014 aerosol and ozone precursor emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 NTCF emissions", - "experiment_id":"piClim-NTCF", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-O3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 ozone precursor emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions", - "experiment_id":"piClim-O3", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-OC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Perturbation from 1850 control using 2014 OC emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 organic carbon emissions", - "experiment_id":"piClim-OC", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-SO2":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Perturbation from 1850 control using 2014 SO2 emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 SO2 emissions", - "experiment_id":"piClim-SO2", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-VOC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Perturbation from 1850 control using 2014 CO/VOC emissions", - "end_year":"", - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions", - "experiment_id":"piClim-VOC", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "piClim-aer":{ - "activity_id":[ - "RFMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As in RFMIP-ERF-PI-Cntrl but with with present-day aerosols. Note that this experiment is considered to be tier 1 by RFMIP but tier 2 by AerChemMIP", - "end_year":"", - "experiment":"effective radiative forcing by present-day aerosols", - "experiment_id":"piClim-aer", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-anthro":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As in RFMIP-ERF-PI-Cntrl but with present-day anthropogenic forcing (greenhouse gases, aerosols and land-use)", - "end_year":"", - "experiment":"effective radiative forcing by present day anthropogenic agents", - "experiment_id":"piClim-anthro", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-control":{ - "activity_id":[ - "RFMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"30-year atmosphere only integration using preindustrial sea-surface temperature and sea-ice climatology. Interactive vegetation", - "end_year":"", - "experiment":"effective radiative forcing in present-day", - "experiment_id":"piClim-control", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-ghg":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As in RFMIP-ERF-PI-Cntrl but with present-day greenhouse gases", - "end_year":"", - "experiment":"effective radiative forcing by present-day greenhouse gases", - "experiment_id":"piClim-ghg", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-histaer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time-varying forcing by aerosols. SST and sea ice fixed at preindustrial control. Interactive vegetation", - "end_year":"2100", - "experiment":"transient effective radiative forcing by aerosols", - "experiment_id":"piClim-histaer", - "min_number_yrs_per_sim":"251", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-histall":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time-varying forcing. SST and sea ice fixed at preindustrial control. Interactive vegetation", - "end_year":"2100", - "experiment":"transient effective radiative forcing", - "experiment_id":"piClim-histall", - "min_number_yrs_per_sim":"251", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-histghg":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time-varying forcing by GHGs. SST and sea ice fixed at preindustrial control. Interactive vegetation", - "end_year":"2100", - "experiment":"transient effective radiative forcing by greenhouse gases", - "experiment_id":"piClim-histghg", - "min_number_yrs_per_sim":"251", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-histnat":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time-varying forcing from volcanos, solar variability, etc. SST and sea ice fixed at preindustrial control. Interactive vegetation", - "end_year":"2100", - "experiment":"transient effective radiative forcing by natural perturbations", - "experiment_id":"piClim-histnat", - "min_number_yrs_per_sim":"251", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-lu":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"As in RFMIP-ERF-PI-Cntrl but with present-day land use", - "end_year":"", - "experiment":"effective radiative forcing by present-day land use", - "experiment_id":"piClim-lu", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piClim-spAer-aer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings", - "end_year":"", - "experiment":"effective radiative forcing at present day with specified anthropogenic aerosol optical properties, all forcings", - "experiment_id":"piClim-spAer-aer", - "min_number_yrs_per_sim":"", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-spAer-anthro":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. Anthropogenic forcings", - "end_year":"", - "experiment":"effective radiative forcing at present day with specified anthropogenic aerosol optical properties, anthropogenic forcings", - "experiment_id":"piClim-spAer-anthro", - "min_number_yrs_per_sim":"", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-spAer-histaer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings", - "end_year":"2014", - "experiment":"transient effective radiative forcing with specified anthropogenic aerosol optical properties, aerosol forcing", - "experiment_id":"piClim-spAer-histaer", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piClim-spAer-histall":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings", - "end_year":"2014", - "experiment":"transient effective radiative forcing with specified anthropogenic aerosol optical properties, all forcings", - "experiment_id":"piClim-spAer-histall", - "min_number_yrs_per_sim":"165", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"1850", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piControl":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"DECK: control", - "end_year":"", - "experiment":"pre-industrial control", - "experiment_id":"piControl", - "min_number_yrs_per_sim":"500", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl-spinup" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piControl-spinup":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"DECK: spin-up portion of the control", - "end_year":"", - "experiment":"pre-industrial control (spin-up)", - "experiment_id":"piControl-spinup", - "min_number_yrs_per_sim":"100", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piControl-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Pre-industrial control simulation that includes interactive ice sheets", - "end_year":"", - "experiment":"preindustrial control with interactive ice sheet", - "experiment_id":"piControl-withism", - "min_number_yrs_per_sim":"500", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "piSST":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"An AGCM experiment with monthly-varying SSTs, sea-ice, atmospheric constituents and any other necessary boundary conditions (e.g. vegetation if required) taken from each model's own piControl run (using the 30 years of piControl that are parallel to years 111-140 of its abrupt4xCO2 run). Dynamic vegetation should be turned off in all the piSST set of experiments", - "end_year":"", - "experiment":"experiment forced with pre-industrial SSTs, sea ice and atmospheric constituents", - "experiment_id":"piSST", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piSST-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Same as piSST but CO2 is quadrupled. The increase in CO2 is seen by both the radiation scheme and vegetation", - "end_year":"", - "experiment":"as piSST with radiation and vegetation seeing 4xCO2", - "experiment_id":"piSST-4xCO2", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piSST-4xCO2-rad":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Same as piSST but CO2 as seen by the radiation scheme is quadrupled", - "end_year":"", - "experiment":"as piSST with radiation-only seeing 4xCO2", - "experiment_id":"piSST-4xCO2-rad", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piSST-4xCO2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Time slice at 1850 (picontrol) for G1ext to examine radiative forcing of abrupt4xCO2", - "end_year":"", - "experiment":"preindustrial control SSTs with quadrupled CO2 and solar reduction", - "experiment_id":"piSST-4xCO2-solar", - "min_number_yrs_per_sim":"10", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "piSST-pxK":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Same as piSST, but with a spatially and temporally uniform SST anomaly applied on top of the monthly-varying piSST SSTs. The magnitude of the uniform increase is taken from each model's global, climatological annual mean SST change between abrupt4xCO2 minus piControl (using the mean of years 111-140 of abrupt4xCO2, and the parallel 30-year section of piControl)", - "end_year":"", - "experiment":"as piSST with uniform SST increase with magnitude based on abrupt4xCO2 response", - "experiment_id":"piSST-pxK", - "min_number_yrs_per_sim":"20", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "rad-irf":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":"", - "description":"Offline radiation calculations", - "end_year":"", - "experiment":"offline assessment of radiative transfer parmeterizations in clear skies", - "experiment_id":"rad-irf", - "min_number_yrs_per_sim":"", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "RAD" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "spinup-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "description":"Coupled integration from ocean rest state using recommended HighResMIP protocol spinup, starting from 1950 ocean temperature and salinity analysis EN4, using constant 1950s forcing. At least 30 years to satisfy near surface quasi-equilibrium", - "end_year":"", - "experiment":"coupled spinup with fixed 1950s forcings from 1950 initial conditions (with ocean at rest) to provide initial condition for control-1950 and hist-1950", - "experiment_id":"spinup-1950", - "min_number_yrs_per_sim":"30", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp126":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with low radiative forcing by the end of century. Following approximately RCP2.6 global forcing pathway but with new forcing based on SSP1. Concentration-driven. As a tier 2 option, this simulation should be extended to year 2300", - "end_year":"2100 or 2300", - "experiment":"update of RCP2.6 based on SSP1", - "experiment_id":"ssp126", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp126-ssp370Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Additional land use policy sensitivity simulation for low radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP1-2.6 (afforestation scenario), but replace land use from SSP3-7 (afforestation) scenario; concentration-driven", - "end_year":"2100", - "experiment":"SSP1-2.6 with SSP3-7.0 land use", - "experiment_id":"ssp126-ssp370Lu", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp245":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with medium radiative forcing by the end of century. Following approximately RCP4.5 global forcing pathway but with new forcing based on SSP2. Concentration-driven", - "end_year":"2100", - "experiment":"update of RCP4.5 based on SSP2", - "experiment_id":"ssp245", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp245-GHG":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Extension of well-mixed GHG-only run under SSP2-4.5. Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes", - "end_year":"2100", - "experiment":"well-mixed GHG-only SSP2-4.5 run", - "experiment_id":"ssp245-GHG", - "min_number_yrs_per_sim":"80", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-GHG" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2021", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp245-aer":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Extension of aerosol-only run under SSP2-4.5", - "end_year":"2100", - "experiment":"aerosol-only SSP2-4.5 run", - "experiment_id":"ssp245-aer", - "min_number_yrs_per_sim":"80", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-aer" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2021", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "ssp245-nat":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Extension of natural-only run under SSP2-4.5", - "end_year":"2100", - "experiment":"natural-only SSP2-4.5 run", - "experiment_id":"ssp245-nat", - "min_number_yrs_per_sim":"80", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-nat" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2021", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "ssp245-stratO3":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "BGC" - ], - "description":"Extension of stratospheric-ozone-only run under SSP2-4.5. In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the SSP2-4.5 simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from the stratosphere. In models without coupled chemistry the same stratospheric ozone prescribed in SSP2-4.5 should be prescribed. Stratospheric ozone concentrations will be provided by CCMI", - "end_year":"2100", - "experiment":"stratospheric-ozone-only SSP2-4.5 run", - "experiment_id":"ssp245-stratO3", - "min_number_yrs_per_sim":"80", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-stratO3" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2021", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp370":{ - "activity_id":[ - "ScenarioMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with high radiative forcing by the end of century. Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven", - "end_year":"2100", - "experiment":"gap-filling scenario reaching 7.0 based on SSP3", - "experiment_id":"ssp370", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370-lowNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Future SSP3-7.0 with reduced NTCF emissions", - "end_year":"2055", - "experiment":"SSP3-7.0, with low NTCF emissions", - "experiment_id":"ssp370-lowNTCF", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370-ssp126Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP3-7 (deforestation scenario), but replace land use from SSP1-2.6 (afforestation) scenario; concentration-driven", - "end_year":"2100", - "experiment":"SSP3-7.0 with SSP1-2.6 land use", - "experiment_id":"ssp370-ssp126Lu", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370SST":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Future SSP3-7.0, with SSTs prescribed from ssp370", - "end_year":"2055", - "experiment":"SSP3-7.0, with SSTs prescribed from ssp370", - "experiment_id":"ssp370SST", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370SST-lowAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Future SSP3-7.0 with reduced aerosol emissions (from ssp370-lowNTCF), prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with low aerosol emissions", - "experiment_id":"ssp370SST-lowAer", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp370SST-lowBC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Future SSP3-7.0 with reduced black carbon emissions, prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with low black carbon emissions", - "experiment_id":"ssp370SST-lowBC", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp370SST-lowCH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Future SSP3-7.0 with reduced CH4 concentrations, prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with low methane concentrations", - "experiment_id":"ssp370SST-lowCH4", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370SST-lowNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "description":"Future SSP3-7.0 with reduced NTCF emissions, prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with low NTCF emissions", - "experiment_id":"ssp370SST-lowNTCF", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp370SST-lowO3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":"", - "description":"Future SSP3-7.0 with reduced ozone precursor emissions (from ssp370-lowNTCF), prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with low ozone precursor emissions", - "experiment_id":"ssp370SST-lowO3", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp370SST-ssp126Lu":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM" - ], - "description":"Future SSP3-7.0 with low land use change (from ssp126), prescribed SSTs", - "end_year":"2055", - "experiment":"SSP3-7.0, prescribed SSTs, with SSP1-2.6 land use", - "experiment_id":"ssp370SST-ssp126Lu", - "min_number_yrs_per_sim":"41", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp434":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with low radiative forcing by the end of century. Reaches about 3.4 W/m2 by 2100; fills gap in RCP forcing pathways between 4.5 and 2.6 W/m2. Concentration-driven", - "end_year":"2100", - "experiment":"gap-filling scenario reaching 3.4 based on SSP4", - "experiment_id":"ssp434", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp460":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with medium radiative forcing by the end of century. Following approximately RCP6.0 global forcing pathway but with new forcing based on SSP4. Concentration-driven", - "end_year":"2100", - "experiment":"update of RCP6.0 based on SSP4", - "experiment_id":"ssp460", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp534-over":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"21st century overshoot scenario relative to SSP5_34. Branches from SS5_85 at 2040 with emissions reduced to zero by 2070 and negative thereafter. This simulation should optionally be extended to year 2300", - "end_year":"2100 or 2300", - "experiment":"overshoot of 3.4 W/m**2 branching from ssp585 in 2040", - "experiment_id":"ssp534-over", - "min_number_yrs_per_sim":"61", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2040", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp534-over-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"This simulation should optionally be extended to year 2300", - "end_year":"2100 or 2300", - "experiment":"biogeochemically-coupled version of the RCP3.4-overshoot based on SSP5", - "experiment_id":"ssp534-over-bgc", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "hist-bgc" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp585":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with high radiative forcing by the end of century. Following approximately RCP8.5 global forcing pathway but with new forcing based on SSP5. Concentration-driven. As a tier 2 option, this simulation should be extended to year 2300", - "end_year":"2100 or 2300", - "experiment":"update of RCP8.5 based on SSP5", - "experiment_id":"ssp585", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "ssp585-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "description":"Concentration-driven future scenario simulation, biogeochemically-coupled. This simulation should optionally be extended to year 2300", - "end_year":"2100 or 2300", - "experiment":"biogeochemically-coupled version of the RCP8.5 based on SSP5", - "experiment_id":"ssp585-bgc", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "hist-bgc" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "ssp585-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future climate from ScenarioMIP SSP5-8.5 simulation that includes interactive ice sheets. Set up follows the standard SSP5-8.5 experiment", - "end_year":"2300", - "experiment":"ssp585 with interactive ice sheet", - "experiment_id":"ssp585-withism", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "historical-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "sspxy":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Future scenario with low radiative forcing by the end of century. Following a forcing pathway below RCP2.6. Specific SSP and 2100 forcing level to be finalized with IAM groups within next few months. Concentration-driven", - "end_year":"2100", - "experiment":"low-end scenario informing 1.5C goal", - "experiment_id":"sspxy", - "min_number_yrs_per_sim":"86", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "volc-cluster-21C":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Parallel experiment to volc-cluster-ctrl, using restart files from the end of the historical simulation instead of from piControl, and boundary conditions from the 21st century SSP2-4.5 scenario experiment of ScenarioMIP", - "end_year":"2100", - "experiment":"volcanic cluster experiment under 21st century SSP2-4.5 scenario", - "experiment_id":"volc-cluster-21C", - "min_number_yrs_per_sim":"85", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"2015", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "volc-cluster-ctrl":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Early 19th century cluster of strong tropical volcanic eruptions, including the 1809 event of unknown location, the 1815 Tambora and 1835 Cosigueina eruptions. Experiment initialized from PiControl", - "end_year":"", - "experiment":"19th century volcanic cluster initialized from PiControl", - "experiment_id":"volc-cluster-ctrl", - "min_number_yrs_per_sim":"50", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "volc-cluster-mill":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Parallel experiment to volc-cluster-ctrl but with initial conditions taken from last millennium simulation to account for the effects of a more realistic history of past natural forcing. All forcings except volcanic kept constant from year AD 1790 on", - "end_year":"1858", - "experiment":"19th century volcanic cluster initialized from past1000", - "experiment_id":"volc-cluster-mill", - "min_number_yrs_per_sim":"69", - "parent_activity_id":[ - "PMIP" - ], - "parent_experiment_id":[ - "past1000" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"1790", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "volc-long-eq":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Idealized equatorial eruption corresponding to an initial emission of 56.2 Tg of SO2. The eruption magnitude corresponds to recent estimates for the 1815 Tambora eruption (Sigl et al., 2015), the largest historical tropical eruption, which was linked to the so-called \"year without a summer\" in 1816. Experiment initialized from PiControl", - "end_year":"", - "experiment":"idealized equatorial volcanic eruption emitting 56.2 Tg SO2", - "experiment_id":"volc-long-eq", - "min_number_yrs_per_sim":"20", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "volc-long-hlN":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Idealized Northern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2. Experiment initialized from PiControl", - "end_year":"", - "experiment":"idealized Northern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2", - "experiment_id":"volc-long-hlN", - "min_number_yrs_per_sim":"20", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"2" - }, - "volc-long-hlS":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"Idealized Southern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2. Experiment initialized from PiControl", - "end_year":"", - "experiment":"Idealized Southern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2", - "experiment_id":"volc-long-hlS", - "min_number_yrs_per_sim":"20", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "volc-pinatubo-full":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"1991 Pinatubo forcing as used in the CMIP6 historical simulations. Requires special diagnostics of radiative and latent heating rates. A large number of ensemble members is required to address internal atmospheric variability", - "end_year":"", - "experiment":"Pinatubo experiment", - "experiment_id":"volc-pinatubo-full", - "min_number_yrs_per_sim":"3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "volc-pinatubo-slab":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"As volc-pinatubo-full, but with a slab ocean", - "end_year":"", - "experiment":"Pinatubo experiment with slab ocean", - "experiment_id":"volc-pinatubo-slab", - "min_number_yrs_per_sim":"3", - "parent_activity_id":[ - "VolMIP" - ], - "parent_experiment_id":[ - "control-slab" - ], - "required_model_components":[ - "AGCM", - "SLAB" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"3" - }, - "volc-pinatubo-strat":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"As volc-pinatubo-full, but with prescribed perturbation to the total (LW+SW) radiative heating rates", - "end_year":"", - "experiment":"Pinatubo experiment with partial radiative forcing, includes only stratospheric warming", - "experiment_id":"volc-pinatubo-strat", - "min_number_yrs_per_sim":"3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - }, - "volc-pinatubo-surf":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "description":"As volc-pinatubo-full, but with prescribed perturbation to the shortwave flux to mimic the attenuation of solar radiation by volcanic aerosols", - "end_year":"", - "experiment":"Pinatubo experiment with partial radiative forcing, solar radiation scattering only", - "experiment_id":"volc-pinatubo-surf", - "min_number_yrs_per_sim":"3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "start_year":"", - "sub_experiment_id":[ - "none" - ], - "tier":"1" - } - }, - "product":[ - "model-output" - ], - "tracking_id":[ - "hdl:21.14100/.*" - ], - "further_info_url":[ - "http://furtherinfo.es-doc.org/[[:alpha:]]\\{1,\\}" - ], - "realization_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "variant_label":[ - "r[[:digit:]]\\{1,\\}i[[:digit:]]\\{1,\\}p[[:digit:]]\\{1,\\}f[[:digit:]]\\{1,\\}$" - ], - "data_specs_version":[ - "^[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}$" - ], - "Conventions":[ - "^CF-1.7 CMIP-6.0\\( UGRID-1.0\\)\\{0,\\}$" - ], - "forcing_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "initialization_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "physics_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ] - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CV_test.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_CV_test.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hr.json deleted file mode 100644 index 86003a9d9d..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hr.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table E1hr", - "realm": "atmos", - "frequency": "1hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.017361", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time1", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time1", - "out_name": "rlut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev3 time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta27": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev27 time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntr27": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", - "units": "K s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Radiative Heating", - "comment": "Tendency of Air Temperature due to Radiative Heating", - "dimensions": "longitude latitude plev27 time1", - "out_name": "tntr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev3 time1", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua27": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev27 time1", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendnogw27": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "u-tendency nonorographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", - "dimensions": "longitude latitude plev27 time1", - "out_name": "utendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev3 time1", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va27": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev27 time1", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtendnogw27": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "v-tendency nonorographic gravity wave drag", - "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", - "dimensions": "longitude latitude plev27 time1", - "out_name": "vtendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev3 time1", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap27": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev27 time1", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg27": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev27 time1", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hrClimMon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hrClimMon.json deleted file mode 100644 index bcc0180038..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E1hrClimMon.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table E1hrClimMon", - "realm": "atmos", - "frequency": "1hrClimMon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.017361", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: mean within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time3", - "out_name": "rlut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: mean within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-sky Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time3", - "out_name": "rlutcs", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: mean within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time3", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: mean within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Top-of-Atmosphere Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time3", - "out_name": "rsut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: mean within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "longitude latitude time3", - "out_name": "rsutcs", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hr.json deleted file mode 100644 index 9c418f0829..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hr.json +++ /dev/null @@ -1,358 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table E3hr", - "realm": "atmos", - "frequency": "3hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.125000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "clisccp": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "ISCCP Percentage Cloud Area", - "comment": "Percentage cloud cover in optical depth categories.", - "dimensions": "longitude latitude plev7c tau time", - "out_name": "clisccp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_ice_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Water Path", - "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clivi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Condensed Water Path", - "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gpp": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "gpp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prcsh": { - "modeling_realm": "atmos", - "standard_name": "hallow_convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation Flux from Shallow Convection", - "comment": "Convection precipitation from shallow convection", - "dimensions": "longitude latitude time", - "out_name": "prcsh", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "modeling_realm": "atmos", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Rainfall Flux where Ice Free Ocean over Sea", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prrc": { - "modeling_realm": "atmos", - "standard_name": "convective_rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Rainfall rate", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prrc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsnc": { - "modeling_realm": "atmos", - "standard_name": "convective_snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: 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": "" - }, - "prw": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_water_vapor_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "longitude latitude time", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ra": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land", - "comment": "Carbon mass flux per unit area into atmosphere due to autotrophic respiration on land (respiration by producers) [see rh for heterotrophic production]", - "dimensions": "longitude latitude time", - "out_name": "ra", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rh": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land", - "comment": "Carbon mass flux per unit area into atmosphere due to heterotrophic respiration on land (respiration by consumers)", - "dimensions": "longitude latitude time", - "out_name": "rh", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time", - "out_name": "rlut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-sky Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlutcs", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Top-of-Atmosphere Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "longitude latitude time", - "out_name": "rsutcs", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time height10m", - "out_name": "uas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hrPt.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hrPt.json deleted file mode 100644 index 692c55224d..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E3hrPt.json +++ /dev/null @@ -1,902 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table E3hrPt", - "realm": "atmos", - "frequency": "3hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.125000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "aerasymbnd": { - "modeling_realm": "atmos", - "standard_name": "band_aerosol_asymmetry_parameter", - "units": "1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Aerosol level asymmetry parameter for each band", - "comment": "", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "aerasymbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aeroptbnd": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Aerosol level extinction optical depth for each band", - "comment": "", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "aeroptbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aerssabnd": { - "modeling_realm": "atmos", - "standard_name": "single_scattering_albedo_in_air_due_to_ambient_aerosol_particles", - "units": "1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Aerosol level single-scattering albedo for each band", - "comment": "", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "aerssabnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albdiffbnd": { - "modeling_realm": "atmos", - "standard_name": "band_diffuse_albedo", - "units": "1.0", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Diffuse surface albedo for each band", - "comment": "", - "dimensions": "longitude latitude spectband time1", - "out_name": "albdiffbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albdirbnd": { - "modeling_realm": "atmos", - "standard_name": "band_direct_albedo", - "units": "1.0", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Direct surface albedo for each band", - "comment": "", - "dimensions": "longitude latitude spectband time1", - "out_name": "albdirbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfadDbze94": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CloudSat Radar Reflectivity", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadDbze94 is defined as the simulated relative frequency of occurrence of radar reflectivity in sampling volumes defined by altitude bins. The radar is observing at a frequency of 94GHz.", - "dimensions": "longitude latitude alt40 dbze time1", - "out_name": "cfadDbze94", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfadLidarsr532": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Scattering Ratio", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadLidarsr532 is defined as the simulated relative frequency of lidar scattering ratio in sampling volumes defined by altitude bins. The lidar is observing at a wavelength of 532nm.", - "dimensions": "longitude latitude alt40 scatratio time1", - "out_name": "cfadLidarsr532", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4": { - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CH4 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "ch4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Cloud Fraction", - "comment": "Percentage cloud cover at CALIPSO standard heights.", - "dimensions": "longitude latitude alt40 time1", - "out_name": "clcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipso2": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Cloud Fraction Undetected by CloudSat", - "comment": "Clouds detected by CALIPSO but below the detectability threshold of CloudSat", - "dimensions": "longitude latitude alt40 time1", - "out_name": "clcalipso2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clhcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO High Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 220hPa", - "dimensions": "longitude latitude time1 p220", - "out_name": "clhcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cllcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Percentage Low Level Cloud", - "comment": "Percentage cloud cover in layer centred on 840hPa", - "dimensions": "longitude latitude time1 p840", - "out_name": "cllcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Mid Level Cloud Fraction", - "comment": "Percentage cloud cover in layer centred on 560hPa", - "dimensions": "longitude latitude time1 p560", - "out_name": "clmcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmisr": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Percentage Cloud Cover as Calculated by the MISR Simulator", - "comment": "Cloud percentage in spectral bands and layers as observed by the Multi-angle Imaging SpectroRadiometer (MISR) instrument.", - "dimensions": "longitude latitude alt16 tau time1", - "out_name": "clmisr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltcalipso": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Total Cloud Fraction", - "comment": "", - "dimensions": "longitude latitude time1", - "out_name": "cltcalipso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2": { - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_carbon_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "CO2 volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "co2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus7h": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureicemodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, ice", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadIc tau time1", - "out_name": "jpdftaureicemodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureliqmodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, liquid", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadLi tau time1", - "out_name": "jpdftaureliqmodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2o": { - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "N2O volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "n2o", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3": { - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Ozone volume mixing ratio", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "o3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "parasolRefl": { - "modeling_realm": "atmos", - "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", - "cell_methods": "area: mean (global) time: point", - "cell_measures": "area: areacella", - "long_name": "PARASOL Reflectance", - "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", - "dimensions": "longitude latitude sza5 time1", - "out_name": "parasolRefl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time1", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcs": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Shortwave Radiation", - "comment": "Downwelling clear-sky shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "longitude latitude alevel time1", - "out_name": "rsdcs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcsaf": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clean-Clear-Sky Shortwave Radiation at each level", - "comment": "Calculated in the absence of aerosols and clouds (following Ghan). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude alevel time1", - "out_name": "rsdcsaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcsafbnd": { - "modeling_realm": "atmos", - "standard_name": "band_downwelling_shortwave_flux_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky, Aerosol-Free, Shortwave Radiation in Bands", - "comment": "Calculated in the absence of aerosols and clouds (following Ghan). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "rsdcsafbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdcsbnd": { - "modeling_realm": "atmos", - "standard_name": "band_downwelling_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Downwelling Clear-Sky Shortwave Radiation at each level for each band", - "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "rsdcsbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscsaf": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky, Aerosol-Free Shortwave Radiation", - "comment": "Calculated in the absence of aerosols and clouds.", - "dimensions": "longitude latitude time1", - "out_name": "rsdscsaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscsafbnd": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky, Aerosol-Free Shortwave Radiation in Bands", - "comment": "Calculated in the absence of aerosols and clouds, following Ghan (2013, ACP). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsdscsafbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscsbnd": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation for each band", - "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsdscsbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucs": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Shortwave Radiation", - "comment": "Upwelling clear-sky shortwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "longitude latitude alevel time1", - "out_name": "rsucs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucsaf": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clean-Clear-Sky Shortwave Radiation at each level", - "comment": "Calculated in the absence of aerosols and clouds (following Ghan). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude alevel time1", - "out_name": "rsucsaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucsafbnd": { - "modeling_realm": "atmos", - "standard_name": "band_upwelling_shortwave_flux_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky, Aerosol-Free Shortwave Radiation in Bands", - "comment": "Calculated in the absence of aerosols and clouds (following Ghan). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "rsucsafbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsucsbnd": { - "modeling_realm": "atmos", - "standard_name": "band_upwelling_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Upwelling Clear-Sky Shortwave Radiation at each level for each band", - "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", - "dimensions": "longitude latitude alevel spectband time1", - "out_name": "rsucsbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "longitude latitude time1", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscsaf": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clean Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky, Aerosol Free Shortwave Radiation", - "dimensions": "longitude latitude time1", - "out_name": "rsuscsaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscsafbnd": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky, Aerosol-Free Shortwave Radiation in Bands", - "comment": "Calculated in the absence of aerosols and clouds, following Ghan (ACP, 2013). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsuscsafbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscsbnd": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation for each band", - "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsuscsbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcsaf": { - "modeling_realm": "aerosol", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "toa outgoing clear-sky shortwave radiation", - "comment": "Flux corresponding to rsutcs resulting fom aerosol-free call to radiation, following Ghan (ACP, 2013)", - "dimensions": "longitude latitude time1", - "out_name": "rsutcsaf", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcsafbnd": { - "modeling_realm": "atmos", - "standard_name": "band_toa_outgoing_shortwave_flux_assuming_clean_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky, Aerosol-Free Shortwave Radiation in Bands", - "comment": "Calculated in the absence of aerosols and clouds, following Ghan (2013, ACP). This requires a double-call in the radiation code with precisely the same meteorology.", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsutcsafbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcsbnd": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation for each band", - "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", - "dimensions": "longitude latitude spectband time1", - "out_name": "rsutcsbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "solbnd": { - "modeling_realm": "atmos", - "standard_name": "band_solar_insolation", - "units": "W m-2", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Top-of-Atmosphere Solar Insolation for each band", - "comment": "", - "dimensions": "longitude latitude spectband time1", - "out_name": "solbnd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sza": { - "modeling_realm": "atmos", - "standard_name": "solar_zenith_angle", - "units": "degree", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Solar Zenith Angle", - "comment": "The angle between the line of sight to the sun and the local vertical", - "dimensions": "longitude latitude time1", - "out_name": "sza", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta7h": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev7h time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time1", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua7h": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua850": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude time1 p850", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va7h": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev7h time1", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va850": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude time1 p850", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap7h": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev7h time1", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E6hrZ.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E6hrZ.json deleted file mode 100644 index e7eaf5890e..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_E6hrZ.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table E6hrZ", - "realm": "atmos", - "frequency": "6hr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.250000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "latitude time", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmlwaero": { - "modeling_realm": "atmos", - "standard_name": "longwave_heating_rate_due_to_volcanic_aerosols", - "units": "K s-1", - "cell_methods": "longitude: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Zonal mean longwave heating rate due to volcanic aerosols", - "comment": "longwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", - "dimensions": "latitude alevel time1", - "out_name": "zmlwaero", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmswaero": { - "modeling_realm": "atmos", - "standard_name": "shortwave_heating_rate_due_to_volcanic_aerosols", - "units": "K s-1", - "cell_methods": "longitude: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Zonal mean shortwave heating rate due to volcanic aerosols", - "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", - "dimensions": "latitude alevel time1", - "out_name": "zmswaero", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eday.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eday.json deleted file mode 100644 index fa7cc11c81..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eday.json +++ /dev/null @@ -1,2364 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Eday", - "realm": "aerosol", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "agesno": { - "modeling_realm": "landIce land", - "standard_name": "age_of_surface_snow", - "units": "day", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Age", - "comment": "Age of Snow (when computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing data in regions free of snow on land.", - "dimensions": "longitude latitude time", - "out_name": "agesno", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albc": { - "modeling_realm": "land", - "standard_name": "canopy_albedo", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Canopy Albedo", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "albc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albs": { - "modeling_realm": "aerosol", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "planetary albedo", - "comment": "Grid cell average albedo for all wavelengths.", - "dimensions": "longitude latitude time", - "out_name": "albs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "albsn": { - "modeling_realm": "land", - "standard_name": "snow_and_ice_albedo", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Albedo", - "comment": "Albedo of the snow-covered surface, averaged over the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "albsn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aod550volso4": { - "modeling_realm": "atmos", - "standard_name": "aerosol_optical_depth_due_to_stratospheric_volcanic_aerosols", - "units": "1e-09", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol optical depth at 550 nm due to stratospheric volcanic aerosols", - "comment": "aerosol optical depth at 550 nm due to stratospheric volcanic aerosols", - "dimensions": "longitude latitude time", - "out_name": "aod550volso4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ares": { - "modeling_realm": "land", - "standard_name": "aerodynamic_resistance", - "units": "s m-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerodynamic resistance", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "ares", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ccldncl": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_convective_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Droplet Number Concentration of Convective Cloud Tops", - "comment": "Droplets are liquid only. Report concentration 'as seen from space' over convective liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", - "dimensions": "longitude latitude time", - "out_name": "ccldncl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldnci": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Crystal Number Concentration of Cloud Tops", - "comment": "Concentration 'as seen from space' over ice-cloud portion of grid cell. This is the value from uppermost model layer with ice cloud or, if available, it is the sum over all ice cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total ice cloud top fraction (as seen from TOA) of each time sample when computing monthly mean.", - "dimensions": "longitude latitude time", - "out_name": "cldnci", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldnvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_number_content_of_cloud_droplets", - "units": "m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Column Integrated Cloud Droplet Number", - "comment": "Droplets are liquid only. Values are weighted by liquid cloud fraction in each layer when vertically integrating, and for monthly means the samples are weighted by total liquid cloud fraction (as seen from TOA).", - "dimensions": "longitude latitude time", - "out_name": "cldnvi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivic": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_convective_cloud_ice_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Ice Water Path", - "comment": "calculate mass of convective ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clivic", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clt": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvic": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_convective_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Condensed Water Path", - "comment": "calculate mass of convective condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvic", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cnc": { - "modeling_realm": "land", - "standard_name": "vegetation_area_fraction", - "units": "%", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Canopy covered area percentage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cnc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "concbb": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_biomass_burning_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Concentration of Biomass Burning Aerosol", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "concbb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "conccmcn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_coarse_mode_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Number Concentration Coarse Mode Aerosol", - "comment": "includes all particles with diameter larger than 1 micron", - "dimensions": "longitude latitude time", - "out_name": "conccmcn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "conccn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol Number Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "conccn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "concnmcn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_nucleation_mode_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Number Concentration of Nucleation Mode Aerosol", - "comment": "includes all particles with diameter smaller than 3 nm", - "dimensions": "longitude latitude time", - "out_name": "concnmcn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "concpoa": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_primary_particulate_organic_matter_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Concentration of Dry Aerosol Primary Organic Matter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "concpoa", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cw": { - "modeling_realm": "land", - "standard_name": "canopy_water_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Canopy Water Storage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dcw": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_canopy_water_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in Interception Storage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dcw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfr": { - "modeling_realm": "land", - "standard_name": "depth_of_frozen_soil", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Frozen Soil Depth", - "comment": "Depth from surface to the first zero degree isotherm. Above this isotherm T < 0o, and below this line T > 0o.", - "dimensions": "longitude latitude time", - "out_name": "dfr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dgw": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_groundwater", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in Groundwater", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dgw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmlt": { - "modeling_realm": "land", - "standard_name": "depth_of_subsurface_melting", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Depth to soil thaw", - "comment": "Depth from surface to the zero degree isotherm. Above this isotherm T > 0o, and below this line T < 0o.", - "dimensions": "longitude latitude time", - "out_name": "dmlt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "drivw": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_river_water_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in River Storage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "drivw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dslw": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_water_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in soil moisture", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dslw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dsn": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_surface_snow_and_ice_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in snow water equivalent", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dsn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dsw": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_surface_water_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in Surface Water Storage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dsw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtes": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_thermal_energy_content_of_surface", - "units": "J m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in surface heat storage", - "comment": "Change in heat storage over the soil layer and the vegetation for which the energy balance is calculated, accumulated over the sampling time interval.", - "dimensions": "longitude latitude time", - "out_name": "dtes", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dtesn": { - "modeling_realm": "land", - "standard_name": "change_over_time_in_thermal_energy_content_of_surface_snow_and_ice", - "units": "J m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Change in snow/ice cold content", - "comment": "Change in cold content over the snow layer for which the energy balance is calculated, accumulated over the sampling time interval. This should also include the energy contained in the liquid water in the snow pack.", - "dimensions": "longitude latitude time", - "out_name": "dtesn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ec": { - "modeling_realm": "land", - "standard_name": "liquid_water_evaporation_flux_from_canopy", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Interception evaporation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "ec", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ec550aer": { - "modeling_realm": "aerosol", - "standard_name": "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", - "units": "m-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol extinction coefficient", - "comment": "Aerosol Extinction @550nm", - "dimensions": "longitude latitude time", - "out_name": "ec550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "eow": { - "modeling_realm": "land", - "standard_name": "liquid_water_evaporation_flux_from_open_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Open Water Evaporation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "eow", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "es": { - "modeling_realm": "land", - "standard_name": "liquid_water_evaporation_flux_from_soil", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Bare soil evaporation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "es", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "esn": { - "modeling_realm": "land", - "standard_name": "liquid_water_evaporation_flux_from_surface_snow", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Evaporation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "esn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "et": { - "modeling_realm": "land", - "standard_name": "surface_evapotranspiration", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Evapotranspiration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "et", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfdsl": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_heat_flux_in_air", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Downward Heat Flux at Land Surface", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfdsl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfdsn": { - "modeling_realm": "landIce land", - "standard_name": "surface_downward_heat_flux_in_snow", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Downward Heat Flux into Snow Where Land over Land", - "comment": "the net downward heat flux from the atmosphere into the snow that lies on land divided by the land area in the grid cell; reported as 0.0 for snow-free land regions or where the land fraction is 0.", - "dimensions": "longitude latitude time", - "out_name": "hfdsn", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfdsnb": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Downward heat flux at snow base", - "comment": "Heat flux from snow into the ice or land under the snow.", - "dimensions": "longitude latitude time", - "out_name": "hfdsnb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfmlt": { - "modeling_realm": "atmos", - "standard_name": "surface_snow_and_ice_melt_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Energy of fusion", - "comment": "Energy consumed or released during liquid/solid phase changes.", - "dimensions": "longitude latitude time", - "out_name": "hfmlt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrs": { - "modeling_realm": "atmos", - "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_onto_snow_and_ice", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Heat transferred to snowpack by rainfall", - "comment": "Heat transferred to a snow cover by rain..", - "dimensions": "longitude latitude time", - "out_name": "hfrs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsbl": { - "modeling_realm": "atmos", - "standard_name": "surface_snow_and_ice_sublimation_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Energy of sublimation", - "comment": "Energy consumed or released during vapor/solid phase changes.", - "dimensions": "longitude latitude time", - "out_name": "hfsbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hursminCrop": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Relative Humidity over Crop Tile", - "comment": "minimum near-surface (usually, 2 meter) relative humidity (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "hursminCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus850": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude time p850", - "out_name": "hus850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "inc": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_ice_crystals_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Crystal Number Concentration", - "comment": "Ice Crystal number concentration in ice clouds", - "dimensions": "longitude latitude time", - "out_name": "inc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureicemodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, ice", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadLi tau time", - "out_name": "jpdftaureicemodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureliqmodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, liquid", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadLi tau time", - "out_name": "jpdftaureliqmodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lai": { - "modeling_realm": "land", - "standard_name": "leaf_area_index", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Leaf Area Index", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "lai", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadbc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_black_carbon_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Black Carbon Aerosol", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadbc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loaddust": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_dust_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Dust", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loaddust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadnh4": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_ammonium_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of NH4", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadnh4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadno3": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_nitrate_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of NO3", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadno3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadoa": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Dry Aerosol Organic Matter", - "comment": "atmosphere dry organic content: This is the vertically integrated sum of atmosphere_primary_organic_content and atmosphere_secondary_organic_content (see next two table entries).", - "dimensions": "longitude latitude time", - "out_name": "loadoa", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadpoa": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Dry Aerosol Primary Organic Matter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadpoa", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadso4": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_sulfate_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of SO4", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadso4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadsoa": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Dry Aerosol Secondary Organic Matter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadsoa", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadss": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_seasalt_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Seasalt", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwsnl": { - "modeling_realm": "landIce land", - "standard_name": "liquid_water_content_of_snow_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid Water Content of Snow Layer", - "comment": "The total mass of liquid water contained interstitially within the whole depth of the snow layer of the land portion of a grid cell divided by the area of the land portion of the cell.", - "dimensions": "longitude latitude time", - "out_name": "lwsnl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotst": { - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotst", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrfsofr": { - "modeling_realm": "land", - "standard_name": "mass_fraction_of_frozen_water_in_soil_moisture", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Average layer fraction of frozen moisture", - "comment": "Fraction of soil moisture mass in the solid phase in each user-defined soil layer (3D variable)", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrfsofr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrlqso": { - "modeling_realm": "land", - "standard_name": "mass_fraction_of_unfrozen_water_in_soil_moisture", - "units": "1.0", - "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": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrlsl": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Content of Soil Layer", - "comment": "The mass of water in all phases, including ice, in soil layers. Report as missing for grid cells with no land.", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrlsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrrob": { - "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": "", - "dimensions": "longitude latitude time", - "out_name": "mrrob", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrros": { - "modeling_realm": "land", - "standard_name": "surface_runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Runoff", - "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", - "dimensions": "longitude latitude time", - "out_name": "mrros", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsfl": { - "modeling_realm": "land", - "standard_name": "frozen_moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Frozen water content of soil layer", - "comment": "in each soil layer, the mass of water in ice phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsll": { - "modeling_realm": "land", - "standard_name": "liquid_moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid water content of soil layer", - "comment": "in each soil layer, the mass of water in liquid phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsll", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsol": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total water content of soil layer", - "comment": "in each soil layer, the mass of water in all phases, including ice. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsol", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsow": { - "modeling_realm": "land", - "standard_name": "volume_fraction_of_condensed_water_in_soil_at_field_capacity", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Soil Wetness", - "comment": "Vertically integrated soil moisture divided by maximum allowable soil moisture above wilting point.", - "dimensions": "longitude latitude time", - "out_name": "mrsow", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nudgincsm": { - "modeling_realm": "land", - "standard_name": "nudging_increment_in_water_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nudging Increment of Water in Soil Mositure", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nudgincsm", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nudgincswe": { - "modeling_realm": "land", - "standard_name": "nudging_increment_in_surface_snow_and_ice_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nudging Increment of Water in Snow", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nudgincswe", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "parasolRefl": { - "modeling_realm": "atmos", - "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacella", - "long_name": "PARASOL Reflectance", - "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", - "dimensions": "longitude latitude sza5 time", - "out_name": "parasolRefl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pflw": { - "modeling_realm": "landIce land", - "standard_name": "liquid_water_content_of_permafrost_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid Water Content of Permafrost Layer", - "comment": "*where land over land*, i.e., this is the total mass of liquid water contained within the permafrost layer within the land portion of a grid cell divided by the area of the land portion of the cell.", - "dimensions": "longitude latitude time", - "out_name": "pflw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "potet": { - "modeling_realm": "land", - "standard_name": "water_potential_evapotranspiration_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Potential Evapotranspiration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "potet", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prCrop": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation over Crop Tile", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "prCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prhmax": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Maximum Hourly Precipitation Rate", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prhmax", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "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 where Ice Free Ocean over Sea", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prrc": { - "modeling_realm": "atmos", - "standard_name": "convective_rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Rainfall rate", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prrc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prrsn": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_rainfall_onto_snow", - "units": "1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of rainfall on snow.", - "comment": "The fraction of the grid averaged rainfall which falls on the snow pack", - "dimensions": "longitude latitude time", - "out_name": "prrsn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsnc": { - "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": "" - }, - "prsnsn": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_snowfall_onto_snow", - "units": "1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of snowfall on snow.", - "comment": "The fraction of the snowfall which falls on the snow pack", - "dimensions": "longitude latitude time", - "out_name": "prsnsn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prveg": { - "modeling_realm": "land", - "standard_name": "precipitation_flux_onto_canopy", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation onto Canopy", - "comment": "The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", - "dimensions": "longitude latitude time", - "out_name": "prveg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prw": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_water_vapor_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "longitude latitude time", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "qgwr": { - "modeling_realm": "land", - "standard_name": "water_flux_from_soil_layer_to_groundwater", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Groundwater recharge from soil layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "qgwr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffcclwtop": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle_at_liquid_water_cloud_top", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud-Top Effective Droplet Radius In Convective Cloud", - "comment": "Droplets are liquid only. This is the effective radius 'as seen from space' over convective liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Reported values are weighted by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.daily data, separated to large-scale clouds, convective clouds. If any of the cloud is from more than one process (i.e. shallow convection), please provide them separately.", - "dimensions": "longitude latitude time", - "out_name": "reffcclwtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclwc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "reffclwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclws": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "reffclws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffsclwtop": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle_at_liquid_water_cloud_top", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud-Top Effective Droplet Radius In Stratiform Cloud", - "comment": "Droplets are liquid only. This is the effective radius 'as seen from space' over liquid stratiform cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Reported values are weighted by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.daily data, separated to large-scale clouds, convective clouds. If any of the cloud is from more than one process (i.e. shallow convection), please provide them separately.", - "dimensions": "longitude latitude time", - "out_name": "reffsclwtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rivi": { - "modeling_realm": "land", - "standard_name": "water_flux_from_upstream", - "units": "m3 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "River Inflow", - "comment": "Inflow of River Water into Cell", - "dimensions": "longitude latitude time", - "out_name": "rivi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rivo": { - "modeling_realm": "land", - "standard_name": "water_flux_to_downstream", - "units": "m3 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "River Discharge", - "comment": "Outflow of River Water from Cell", - "dimensions": "longitude latitude time", - "out_name": "rivo", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rls": { - "modeling_realm": "atmos", - "standard_name": "surface_net_downward_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Longwave Surface Radiation", - "comment": "Net longwave surface radiation", - "dimensions": "longitude latitude time", - "out_name": "rls", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscsdiff": { - "modeling_realm": "atmos", - "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Diffuse Downwelling Clear Sky Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsdscsdiff", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdsdiff": { - "modeling_realm": "atmos", - "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Diffuse Downwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsdsdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rss": { - "modeling_realm": "atmos", - "standard_name": "surface_net_downward_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Shortwave Surface Radiation", - "comment": "Net downward shortwave radiation at the surface", - "dimensions": "longitude latitude time", - "out_name": "rss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rzwc": { - "modeling_realm": "land", - "standard_name": "water_content_of_root_zone", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Root zone soil moisture", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rzwc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "scldncl": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_stratiform_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Droplet Number Concentration of Stratiform Cloud Tops", - "comment": "Droplets are liquid only. Report concentration 'as seen from space' over stratiform liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", - "dimensions": "longitude latitude time", - "out_name": "scldncl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "slbnosn": { - "modeling_realm": "atmos", - "standard_name": "sublimation_amount_assuming_no_snow", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Sublimation of the snow free area", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "slbnosn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snd": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_thickness", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Depth", - "comment": "where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction). Reported as 0.0 where the land fraction is 0.", - "dimensions": "longitude latitude time", - "out_name": "snd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snm": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow Melt", - "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", - "dimensions": "longitude latitude time", - "out_name": "snm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snmsl": { - "modeling_realm": "atmos", - "standard_name": "surface_snow_melt_flux_into_soil_layer", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water flowing out of snowpack", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "snmsl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snrefr": { - "modeling_realm": "atmos", - "standard_name": "surface_snow_and_ice_refreezing_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Re-freezing of water in the snow", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "snrefr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snwc": { - "modeling_realm": "atmos", - "standard_name": "canopy_snow_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "SWE intercepted by the vegetation", - "comment": "Total water mass of the snowpack (liquid or frozen), averaged over a grid cell and interecepted by the canopy.", - "dimensions": "longitude latitude time", - "out_name": "snwc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sootsn": { - "modeling_realm": "landIce land", - "standard_name": "soot_content_of_surface_snow", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Soot Content", - "comment": "the entire land portion of the grid cell is considered, with snow soot content set to 0.0 in regions free of snow.", - "dimensions": "longitude latitude time", - "out_name": "sootsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sw": { - "modeling_realm": "land", - "standard_name": "surface_water_amount_assuming_no_snow", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Water Storage", - "comment": "Total liquid water storage, other than soil, snow or interception storage (i.e. lakes, river channel or depression storage).", - "dimensions": "longitude latitude time", - "out_name": "sw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "t20d": { - "modeling_realm": "ocean", - "standard_name": "depth_of_isosurface_of_sea_water_potential_temperature", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "20C isotherm depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "t20d", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev19 time", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta500": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Temperature on the 500 hPa surface", - "dimensions": "longitude latitude time p500", - "out_name": "ta500", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta850": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air temperature at 850hPa", - "dimensions": "longitude latitude time p850", - "out_name": "ta850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmaxCrop": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Air Temperature over Crop Tile", - "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmaxCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasminCrop": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Air Temperature over Crop Tile", - "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasminCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tau": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_stress", - "units": "N m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Momentum flux", - "comment": "module of the momentum lost by the atmosphere to the surface.", - "dimensions": "longitude latitude time", - "out_name": "tau", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauu": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_eastward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Eastward Wind Stress", - "comment": "Downward eastward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauu", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauupbl": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_eastward_stress_due_to_planetary_boundary_layer", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "eastward surface stress from planetary boundary layer scheme", - "comment": "The downward eastward stress associated with the models parameterization of the plantary boundary layer. (This request is related to a WGNE effort to understand how models parameterize the surface stresses.)", - "dimensions": "longitude latitude time", - "out_name": "tauupbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauv": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_northward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Northward Wind Stress", - "comment": "Downward northward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauv", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvpbl": { - "modeling_realm": "atmos", - "standard_name": "surface_downward_northward_stress_due_to_planetary_boundary_layer", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "northward surface stress from planetary boundary layer scheme", - "comment": "The downward northward stress associated with the models parameterization of the plantary boundary layer. (This request is related to a WGNE effort to understand how models parameterize the surface stresses.)", - "dimensions": "longitude latitude time", - "out_name": "tauvpbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tcs": { - "modeling_realm": "land", - "standard_name": "canopy_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Vegetation Canopy Temperature", - "comment": "Vegetation temperature, averaged over all vegetation types", - "dimensions": "longitude latitude time", - "out_name": "tcs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tdps": { - "modeling_realm": "atmos", - "standard_name": "dew_point_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "2m dewpoint temperature", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "tdps", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tgs": { - "modeling_realm": "land", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Temperature of bare soil", - "comment": "Surface bare soil temperature", - "dimensions": "longitude latitude time", - "out_name": "tgs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tpf": { - "modeling_realm": "landIce land", - "standard_name": "permafrost_layer_thickness", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Permafrost Layer Thickness", - "comment": "The mean thickness of the permafrost layer in the land portion of the grid cell. Reported as zero in permafrost-free regions.", - "dimensions": "longitude latitude time", - "out_name": "tpf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tr": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Radiative Temperature", - "comment": "Effective radiative surface temperature, averaged over the grid cell", - "dimensions": "longitude latitude time", - "out_name": "tr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tran": { - "modeling_realm": "land", - "standard_name": "transpiration_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Transpiration", - "comment": "Transpiration (may include dew formation as a negative flux).", - "dimensions": "longitude latitude time", - "out_name": "tran", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsl": { - "modeling_realm": "land", - "standard_name": "soil_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", - "dimensions": "longitude latitude sdepth time", - "out_name": "tsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsnl": { - "modeling_realm": "land", - "standard_name": "snow_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Temperature profile in the snow", - "comment": "Temperature in the snow pack present in the grid-cell. 3D variable for multi-layer snow schemes.", - "dimensions": "longitude latitude time", - "out_name": "tsnl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsns": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Surface Temperature", - "comment": "Temperature of the snow surface as it interacts with the atmosphere, averaged over a grid cell.", - "dimensions": "longitude latitude time", - "out_name": "tsns", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tws": { - "modeling_realm": "land", - "standard_name": "canopy_and_surface_and_subsurface_water_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Terrestrial Water Storage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "tws", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua200": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 200hPa", - "comment": "Zonal wind (positive eastwards) at 200hPa", - "dimensions": "longitude latitude time p200", - "out_name": "ua200", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua850": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind at 850 hPa", - "comment": "Zonal wind on the 850 hPa surface", - "dimensions": "longitude latitude time p850", - "out_name": "ua850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va200": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "Northward component of the wind", - "dimensions": "longitude latitude time p200", - "out_name": "va200", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va850": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "Northward component of the wind at 850hPa", - "dimensions": "longitude latitude time p850", - "out_name": "va850", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev19 time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wtd": { - "modeling_realm": "land", - "standard_name": "depth_of_soil_moisture_saturation", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water table depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wtd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev19 time", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmla": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Height of Boundary Layer", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "zmla", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EdayZ.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EdayZ.json deleted file mode 100644 index 6b4a253394..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EdayZ.json +++ /dev/null @@ -1,273 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table EdayZ", - "realm": "atmos", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "epfy": { - "modeling_realm": "atmos", - "standard_name": "northward_eliassen_palm_flux_in_air", - "units": "m3 s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Component of the Eliassen-Palm Flux", - "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fy of Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3a of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", - "dimensions": "latitude plev39 time", - "out_name": "epfy", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epfz": { - "modeling_realm": "atmos", - "standard_name": "upward_eliassen_palm_flux_in_air", - "units": "m3 s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Upward Component of the Eliassen-Palm Flux", - "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fz of the Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3b of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", - "dimensions": "latitude plev39 time", - "out_name": "epfz", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "latitude plev19 time", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psitem": { - "modeling_realm": "atmos", - "standard_name": "meridional_streamfunction_transformed_eulerian_mean", - "units": "kg s^-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Transformed Eulerian Mean mass stramfunction", - "comment": "Residual mass streamfunction, computed from vstar and integrated from the top of the atmosphere (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Accademic Press.", - "dimensions": "latitude plev39 time", - "out_name": "psitem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "latitude plev19 time", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendepfd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of eastward wind due to Eliassen-Palm Flux divergence", - "comment": "Tendency of the zonal mean zonal wind due to the divergence of the Eliassen-Palm flux.", - "dimensions": "latitude plev39 time", - "out_name": "utendepfd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendnogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "u-tendency nonorographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", - "dimensions": "latitude plev39 time", - "out_name": "utendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "u-tendency orographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized orographic gravity waves.", - "dimensions": "latitude plev39 time", - "out_name": "utendogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendvtem": { - "modeling_realm": "atmos", - "standard_name": "u-tendency_by_wstar_advection", - "units": "m s-1 d-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Rendency of eastward wind due to TEM northward advection and Coriolis term", - "comment": "Tendency of zonally averaged eastward wind, by the residual upward wind advection (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Accademic Press.", - "dimensions": "latitude plev39 time", - "out_name": "utendvtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendwtem": { - "modeling_realm": "atmos", - "standard_name": "u-tendency_by_vstar_advection", - "units": "m s-1 d-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Rendency of eastward wind due to TEM upward advection", - "comment": "Tendency of zonally averaged eastward wind, by the residual northward wind advection (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Accademic Press.", - "dimensions": "latitude plev39 time", - "out_name": "utendwtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "latitude plev19 time", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtem": { - "modeling_realm": "atmos", - "standard_name": "northward_transformed_eulerian_mean_air_velocity", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Transformed Eulerian Mean northward wind", - "comment": "Transformed Eulerian Mean Diagnostics v*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available).", - "dimensions": "latitude plev39 time", - "out_name": "vtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wtem": { - "modeling_realm": "atmos", - "standard_name": "unset", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Transformed Eulerian Mean upward wind", - "comment": "Transformed Eulerian Mean Diagnostics w*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Scale height: 6950 m", - "dimensions": "latitude plev39 time", - "out_name": "wtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "latitude plev19 time", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Efx.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Efx.json deleted file mode 100644 index 7b41669e8b..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Efx.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Efx", - "realm": "land", - "frequency": "fx", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.00000", - "generic_levels": "alevel olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "clayfrac": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Clay Fraction", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "clayfrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fldcapacity": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "%", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Field Capacity", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "fldcapacity", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ksat": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "1e-6 m s-1", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Saturated Hydraulic Conductivity", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "ksat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rld": { - "modeling_realm": "atmos", - "standard_name": "downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Downwelling Longwave Radiation", - "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevel spectband", - "out_name": "rld", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Upwelling Longwave Radiation", - "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", - "dimensions": "alevel spectband", - "out_name": "rlu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rootdsl": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "kg m-3", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Root Distribution", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "rootdsl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsd": { - "modeling_realm": "atmos", - "standard_name": "downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Downwelling Shortwave Radiation", - "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", - "dimensions": "alevel spectband", - "out_name": "rsd", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsu": { - "modeling_realm": "atmos", - "standard_name": "upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: point", - "cell_measures": "", - "long_name": "Upwelling Shortwave Radiation", - "comment": "Upwelling shortwave radiation (includes also the fluxes at the surface and top of atmosphere)", - "dimensions": "alevel spectband", - "out_name": "rsu", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sandfrac": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Sand Fraction", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "sandfrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftflf": { - "modeling_realm": "landIce", - "standard_name": "floating_ice_shelf_area_fraction", - "units": "%", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", - "dimensions": "longitude latitude typefis", - "out_name": "sftflf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgrf": { - "modeling_realm": "landIce", - "standard_name": "grounded_ice_sheet_area_fraction", - "units": "%", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Grounded Ice Sheet Area Fraction", - "comment": "Fraction of grid cell covered by grounded ice sheet", - "dimensions": "longitude latitude typegis", - "out_name": "sftgrf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siltfrac": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Silt Fraction", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "siltfrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "slthick": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "m", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Thickness of Soil Layers", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "slthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeight": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "canopy height", - "comment": "", - "dimensions": "longitude latitude", - "out_name": "vegHeight", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wilt": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "%", - "cell_methods": "area: mean where land", - "cell_measures": "area: areacella", - "long_name": "Wilting Point", - "comment": "", - "dimensions": "longitude latitude sdepth", - "out_name": "wilt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Emon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Emon.json deleted file mode 100644 index 63b8168e25..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Emon.json +++ /dev/null @@ -1,6087 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Emon", - "realm": "atmos", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "H2p": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "2H in total precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "H2p", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "H2s": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "2H in solid precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "H2s", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "H2wv": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "H2 in water vapor", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude alevel time", - "out_name": "H2wv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O17p": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "17O in total precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "O17p", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O17s": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "17O in solid precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "O17s", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O17wv": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "O17 in water vapor", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude alevel time", - "out_name": "O17wv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O18p": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "18O in total precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "O18p", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O18s": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "18O in solid precipitation", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude time", - "out_name": "O18s", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O18sw": { - "modeling_realm": "ocean", - "standard_name": "missing", - "units": "", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "O18 in sea water", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude olevel time", - "out_name": "O18sw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "O18wv": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "O18 in water vapor", - "comment": "Roche - LSCE", - "dimensions": "longitude latitude alevel time", - "out_name": "O18wv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c13Land": { - "modeling_realm": "land", - "standard_name": "total_land_c13", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 13C in all terrestrial carbon pools", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c13Land", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c13Litter": { - "modeling_realm": "land", - "standard_name": "litter_c13_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 13C in Litter Pool", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c13Litter", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c13Soil": { - "modeling_realm": "land", - "standard_name": "soil_c13_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 13C in Soil Pool", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c13Soil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c13Veg": { - "modeling_realm": "land", - "standard_name": "vegetation_c13_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 13C in Vegetation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c13Veg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c14Land": { - "modeling_realm": "land", - "standard_name": "total_land_c14", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 14C in all terrestrial carbon pools", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c14Land", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c14Litter": { - "modeling_realm": "land", - "standard_name": "litter_c14_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 14C in Litter Pool", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c14Litter", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c14Soil": { - "modeling_realm": "land", - "standard_name": "soil_c14_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 14C in Soil Pool", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c14Soil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c14Veg": { - "modeling_realm": "land", - "standard_name": "vegetation_c14_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of 14C in Vegetation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "c14Veg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLand": { - "modeling_realm": "land", - "standard_name": "total_land_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon in All Terrestrial Carbon Pools", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "cLand", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterCwd": { - "modeling_realm": "land", - "standard_name": "litter_wood_debris_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Coarse Woody Debris", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterCwd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterGrass": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in litter on grass tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterShrub": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in litter on shrub tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterSubSurf": { - "modeling_realm": "land", - "standard_name": "subsurface_litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Below-Ground Litter", - "comment": "sub-surface litter pool fed by root inputs.", - "dimensions": "longitude latitude time", - "out_name": "cLitterSubSurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterSurf": { - "modeling_realm": "land", - "standard_name": "surface_litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Above-Ground Litter", - "comment": "Surface or near-surface litter pool fed by leaf and above-ground litterfall", - "dimensions": "longitude latitude time", - "out_name": "cLitterSurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterTree": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in litter on tree tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cMisc": { - "modeling_realm": "land", - "standard_name": "miscellaneous_living_matter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Other Living Compartments on Land", - "comment": "e.g., labile, fruits, reserves, etc.", - "dimensions": "longitude latitude time", - "out_name": "cMisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cOther": { - "modeling_realm": "land", - "standard_name": "other_vegegtation_components_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Vegetation Components other than Leaves, Stems and Roots", - "comment": "E.g. fruits, seeds, etc.", - "dimensions": "longitude latitude time", - "out_name": "cOther", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoil": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Soil Pool", - "comment": "Carbon mass in the full depth of the soil model.", - "dimensions": "longitude latitude time", - "out_name": "cSoil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilAbove1m": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content_above_1m_depth", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in soil pool above 1m depth", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "cSoilAbove1m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilBelow1m": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content_below_1m_depth", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Soil Pool below 1m Depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cSoilBelow1m", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilGrass": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in soil on grass tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cSoilGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilLevels": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content_on_model_levels", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in each model soil level (summed over all soil carbon pools in that level)", - "comment": "for models with vertically discretised soil carbon, report total soil carbon for each level", - "dimensions": "longitude latitude time", - "out_name": "cSoilLevels", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilPools": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content_by_pool", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in each model soil pool (summed over vertical levels)", - "comment": "for models with multiple soil carbon pools, report each pool here. If models also have vertical discretaisation these should be aggregated", - "dimensions": "longitude latitude time", - "out_name": "cSoilPools", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilShrub": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in soil on shrub tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cSoilShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilTree": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in soil on tree tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cSoilTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cStem": { - "modeling_realm": "land", - "standard_name": "stem_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Stem", - "comment": "including sapwood and hardwood.", - "dimensions": "longitude latitude time", - "out_name": "cStem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cTotFireLut": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Total carbon loss from natural and managed fire on land use tile, including deforestation fires", - "comment": "Different from LMON this flux should include all fires occurring on the land use tile, including natural, man-made and deforestation fires", - "dimensions": "longitude latitude landUse time", - "out_name": "cTotFireLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVegGrass": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in vegetation on grass tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cVegGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVegShrub": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in vegetation on shrub tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cVegShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVegTree": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "Carbon mass in vegetation on tree tiles", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cVegTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cWood": { - "modeling_realm": "land", - "standard_name": "wood_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Wood", - "comment": "Carbon mass per unit area in wood, including sapwood and hardwood.", - "dimensions": "longitude latitude time", - "out_name": "cWood", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfadDbze94": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CloudSat Radar Reflectivity", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadDbze94 is defined as the simulated relative frequency of occurrence of radar reflectivity in sampling volumes defined by altitude bins. The radar is observing at a frequency of 94GHz.", - "dimensions": "longitude latitude alt40 dbze time", - "out_name": "cfadDbze94", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfadLidarsr532": { - "modeling_realm": "atmos", - "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO Scattering Ratio", - "comment": "CFAD (Cloud Frequency Altitude Diagrams) are frequency distributions of radar reflectivity (or lidar scattering ratio) as a function of altitude. The variable cfadLidarsr532 is defined as the simulated relative frequency of lidar scattering ratio in sampling volumes defined by altitude bins. The lidar is observing at a wavelength of 532nm.", - "dimensions": "longitude latitude alt40 scatratio time", - "out_name": "cfadLidarsr532", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipsoice": { - "modeling_realm": "atmos", - "standard_name": "ice_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO ice cloud Fraction", - "comment": "", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipsoice", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clcalipsoliq": { - "modeling_realm": "atmos", - "standard_name": "liquid_cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "CALIPSO liquid cloud Fraction", - "comment": "", - "dimensions": "longitude latitude alt40 time", - "out_name": "clcalipsoliq", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldicemxrat27": { - "modeling_realm": "atmos", - "standard_name": "cloud_ice_mixing_ratio", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Ice Mixing Ratio", - "comment": "Cloud ice mixing ratio", - "dimensions": "longitude latitude plev27 time", - "out_name": "cldicemxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldnci": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Crystal Number Concentration of Cloud Tops", - "comment": "Concentration 'as seen from space' over ice-cloud portion of grid cell. This is the value from uppermost model layer with ice cloud or, if available, it is the sum over all ice cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total ice cloud top fraction (as seen from TOA) of each time sample when computing monthly mean.", - "dimensions": "longitude latitude time", - "out_name": "cldnci", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldncl": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Droplet Number Concentration of Cloud Tops", - "comment": "Droplets are liquid only. Report concentration 'as seen from space' over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", - "dimensions": "longitude latitude time", - "out_name": "cldncl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldnvi": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_number_content_of_cloud_droplets", - "units": "m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Column Integrated Cloud Droplet Number", - "comment": "Droplets are liquid only. Values are weighted by liquid cloud fraction in each layer when vertically integrating, and for monthly means the samples are weighted by total liquid cloud fraction (as seen from TOA).", - "dimensions": "longitude latitude time", - "out_name": "cldnvi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cldwatmxrat27": { - "modeling_realm": "atmos", - "standard_name": "cloud_liquid_water_mixing_ratio", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Water Mixing Ratio", - "comment": "Cloud water mixing ratio", - "dimensions": "longitude latitude plev27 time", - "out_name": "cldwatmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "climodis": { - "modeling_realm": "atmos", - "standard_name": "ice_cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Ice Cloud Area Percentage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "climodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clmisr": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Percentage Cloud Cover as Calculated by the MISR Simulator", - "comment": "Cloud percentage in spectral bands and layers as observed by the Multi-angle Imaging SpectroRadiometer (MISR) instrument.", - "dimensions": "longitude latitude alt16 tau time", - "out_name": "clmisr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cltmodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Total Cloud Cover Percentage", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cltmodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwmodis": { - "modeling_realm": "atmos", - "standard_name": "liquid_cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Liquid Cloud Fraction", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "clwmodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvic": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_convective_cloud_condensed_water_content", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Condensed Water Path", - "comment": "calculate mass of convective condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvic", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co23D": { - "modeling_realm": "atmos", - "standard_name": "CO2_3D_tracer", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "3D field of transported CO2", - "comment": "report 3D field of model simulated atmospheric CO2 mass mixing ration on model levels", - "dimensions": "longitude latitude alevel time", - "out_name": "co23D", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2s": { - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_carbon_dioxide_in_air", - "units": "1e-06", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Atmosphere CO2", - "comment": "As co2, but only at the surface", - "dimensions": "longitude latitude time", - "out_name": "co2s", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "columnmassflux": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Column Integrated Mass Flux", - "comment": "Column integral of (mcu-mcd)", - "dimensions": "longitude latitude time", - "out_name": "columnmassflux", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "conccmcn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_coarse_mode_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Number Concentration Coarse Mode Aerosol", - "comment": "includes all particles with diameter larger than 1 micron", - "dimensions": "longitude latitude alevel time", - "out_name": "conccmcn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "conccn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol Number Concentration", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "conccn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "concdust": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_dust_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Concentration of Dust", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "concdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "concnmcn": { - "modeling_realm": "atmos", - "standard_name": "number_concentration_of_nucleation_mode_ambient_aerosol_in_air", - "units": "m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Number Concentration of Nucleation Mode Aerosol", - "comment": "includes all particles with diameter smaller than 3 nm", - "dimensions": "longitude latitude alevel time", - "out_name": "concnmcn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cropFracC3": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Percentage Cover by C3 Crops", - "comment": "Percentage of entire grid cell covered by C3 crops", - "dimensions": "longitude latitude time typec3pft typecrop", - "out_name": "cropFracC3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cropFracC4": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Percentage Cover by C4 Crops", - "comment": "Percentage of entire grid cell covered by C4 crops", - "dimensions": "longitude latitude time typec4pft typecrop", - "out_name": "cropFracC4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "depdust": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_total_deposition", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Deposition Rate of Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "depdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diabdrag": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_numerical_artefacts", - "units": "m s-2", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Eastward Wind from Numerical Artefacts", - "comment": "Other sub-grid scale/numerical zonal drag excluding that already provided for the parameterized orographic and non-ororgraphic gravity waves. This would be used to calculate the total 'diabatic drag'. Contributions to this additional drag such Rayleigh friction and diffusion that can be calculated from the monthly mean wind fields should not be included, but details (e.g. coefficients) of the friction and/or diffusion used in the model should be provided separately.", - "dimensions": "longitude latitude plev19 time", - "out_name": "diabdrag", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13c": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi13c", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14c": { - "modeling_realm": "land", - "standard_name": "mole_concentration_of_dissolved_inorganic_c14_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Concentration of DI14C", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi14c", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude olevel time", - "out_name": "dissicnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ec550aer": { - "modeling_realm": "aerosol", - "standard_name": "volume_extinction_coefficient_in_air_due_to_ambient_aerosol_particles", - "units": "m-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol extinction coefficient", - "comment": "Aerosol Extinction @550nm", - "dimensions": "longitude latitude alevel time", - "out_name": "ec550aer", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsblpot": { - "modeling_realm": "land", - "standard_name": "water_potential_evaporation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "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 time", - "out_name": "evspsblpot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "exparag": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Aragonite Flux", - "comment": "Downward flux of Aragonite", - "dimensions": "longitude latitude olevel time", - "out_name": "exparag", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Calcite Flux", - "comment": "Downward flux of Calcite", - "dimensions": "longitude latitude olevel time", - "out_name": "expcalc", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expcfe": { - "modeling_realm": "ocean", - "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Iron Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expcfe", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expn": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Nitrogen Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expn", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expp": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Phosphorus Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Silica Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expsi", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fAnthDisturb": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthrogpogenic_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "carbon mass flux into atmosphere due to any human activity", - "comment": "will require some careful definition to make sure we capture everything - any human activity that releases carbon to the atmosphere instead of into product pool goes here. E.g. Deforestation fire, harvest assumed to decompose straight away, grazing...", - "dimensions": "longitude latitude time", - "out_name": "fAnthDisturb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fBNF": { - "modeling_realm": "land", - "standard_name": "biological_nitrogen_fixation", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "biological nitrogen fixation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fBNF", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fCLandToOcean": { - "modeling_realm": "land", - "standard_name": "carbon_mass_flux_into_ocean_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Lateral transfer of carbon out of gridcell that eventually goes into ocean", - "comment": "leached carbon etc that goes into run off or river routing and finds its way into ocean should be reported here.", - "dimensions": "longitude latitude time", - "out_name": "fCLandToOcean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fDeforestToAtmos": { - "modeling_realm": "land", - "standard_name": "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Deforested biomass that goes into atmosphere as a result of anthropogenic land use change", - "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it should be straight-forward to compare deforested biomass across models.", - "dimensions": "longitude latitude time", - "out_name": "fDeforestToAtmos", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fDeforestToProduct": { - "modeling_realm": "land", - "standard_name": "deforested_biomass_into_product_pool_due_to_anthorpogenic_land_use_change", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Deforested biomass that goes into product pool as a result of anthropogenic land use change", - "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it should be straight-forward to compare deforested biomass across models.", - "dimensions": "longitude latitude time", - "out_name": "fDeforestToProduct", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fFireAll": { - "modeling_realm": "land", - "standard_name": "fire_CO2_emissions_from_all_sources", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to CO2 emissions from Fire resulting from all sources including natural, anthropogenic and land use change.", - "comment": "Only total fire emissions can be compared to observations.", - "dimensions": "longitude latitude time", - "out_name": "fFireAll", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fFireNat": { - "modeling_realm": "land", - "standard_name": "fire_CO2_emissions_from_wildfire", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to CO2 Emission from natural Fire", - "comment": "CO2 emissions from natural fires", - "dimensions": "longitude latitude time", - "out_name": "fFireNat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fHarvestToAtmos": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Harvested biomass that goes straight into atmosphere", - "comment": "any harvested carbon that is assumed to decompose immediately into the atmosphere is reported here", - "dimensions": "longitude latitude time", - "out_name": "fHarvestToAtmos", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fHarvestToProduct": { - "modeling_realm": "land", - "standard_name": "harvested_biomass_into_product_pool", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Harvested biomass that goes into product pool", - "comment": "be it food or wood harvest, any carbon that is subsequently stored is reported here", - "dimensions": "longitude latitude time", - "out_name": "fHarvestToProduct", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLitterFire": { - "modeling_realm": "land", - "standard_name": "fire_CO2_emissions_from_litter_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux from Litter, CWD or any non-living pool into Atmosphere due to CO2 Emission from all Fire", - "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", - "dimensions": "longitude latitude time", - "out_name": "fLitterFire", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLuc": { - "modeling_realm": "land", - "standard_name": "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Carbon Mass Flux into Atmosphere due to Land Use Change", - "comment": "Carbon mass flux per unit area into atmosphere due to human changes to land (excluding forest regrowth) accounting possibly for different time-scales related to fate of the wood, for example.", - "dimensions": "longitude latitude time", - "out_name": "fLuc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLulccAtmLut": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_direct_to_atmosphere_due_to_anthropogenic_land_use_land_cover_change", - "units": "kg s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "carbon transferred directly to atmosphere due to any land-use or land-cover change activities including deforestation or agricultural fire", - "comment": "This annual mean flux refers to the transfer of carbon directly to the atmosphere due to any land-use or land-cover change activities. Include carbon transferred due to deforestation or agricultural directly into atsmophere, and emissions form anthropogenic pools into atmosphere", - "dimensions": "longitude latitude landUse time", - "out_name": "fLulccAtmLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLulccProductLut": { - "modeling_realm": "land", - "standard_name": "carbon_mass_flux_into_wood_and_agricultural_product_pools_due_to_anthropogenic_land_use_or_land_cover_change", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "carbon harvested due to land-use or land-cover change process that enters anthropogenic product pools on tile", - "comment": "This annual mean flux refers to the transfer of carbon primarily through harvesting land use into anthropogenic product pools, e.g.,deforestation or wood harvestingfrom primary or secondary lands, food harvesting on croplands, harvesting (grazing) by animals on pastures.", - "dimensions": "longitude latitude landUse time", - "out_name": "fLulccProductLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLulccResidueLut": { - "modeling_realm": "land", - "standard_name": "carbon_mass_flux_into_soil_and_litter_due_to_anthropogenic_land_use_or_land_cover_change", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "carbon transferred to soil or litter pools due to land-use or land-cover change processes on tile", - "comment": "This annual mean flux refers to the transfer of carbon into soil or litter pools due to any land use or land-cover change activities", - "dimensions": "longitude latitude landUse time", - "out_name": "fLulccResidueLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fN2O": { - "modeling_realm": "land", - "standard_name": "land_net_n2o_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total land N2O flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fN2O", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNAnthDisturb": { - "modeling_realm": "land", - "standard_name": "nitrogen_flux_into_atmos_due_to_direct_human_disturbance", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "nitrogen mass flux out of land due to any human activity", - "comment": "will require some careful definition to make sure we capture everything - any human activity that releases nitrogen from land instead of into product pool goes here. E.g. Deforestation fire, harvest assumed to decompose straight away, grazing...", - "dimensions": "longitude latitude time", - "out_name": "fNAnthDisturb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNLandToOcean": { - "modeling_realm": "land", - "standard_name": "nitrogen_mass_flux_into_ocean_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Lateral transfer of nitrogen out of gridcell that eventually goes into ocean", - "comment": "leached nitrogen etc that goes into run off or river routing and finds its way into ocean should be reported here.", - "dimensions": "longitude latitude time", - "out_name": "fNLandToOcean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNLitterSoil": { - "modeling_realm": "land", - "standard_name": "nitrogen_mass_flux_into_soil_from_litter", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Nitrogen Mass Flux from Litter to Soil", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNLitterSoil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNOx": { - "modeling_realm": "land", - "standard_name": "land_net_nox_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total land NOx flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNOx", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNProduct": { - "modeling_realm": "land", - "standard_name": "nitrogen_mass_flux_to_product_pool_due_to_anthorpogenic_activity", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Deforested or harvested biomass as a result of anthropogenic land use or change", - "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it shoule be straight-forward to compare deforested biomass across models.", - "dimensions": "longitude latitude time", - "out_name": "fNProduct", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNVegLitter": { - "modeling_realm": "land", - "standard_name": "litter_nitrogen_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Nitrogen Mass Flux from Vegetation to Litter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNVegLitter", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNVegSoil": { - "modeling_realm": "land", - "standard_name": "nitrogen_mass_flux_into_soil_from_vegetation_excluding_litter", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Nitrogen Mass Flux from Vegetation Directly to Soil", - "comment": "In some models part of nitrogen (e.g., root exudate) can go directly into the soil pool without entering litter.", - "dimensions": "longitude latitude time", - "out_name": "fNVegSoil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNdep": { - "modeling_realm": "land", - "standard_name": "deposition_of_nitrogen_onto_land", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Dry and Wet Deposition of Reactive Nitrogen onto Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNdep", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNfert": { - "modeling_realm": "land", - "standard_name": "fertiliser_of_nitrogen_onto_land", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "total N added for cropland fertilisation (artificial and manure)", - "comment": "relative to total land area of a grid cell, not relative to agricultural area", - "dimensions": "longitude latitude time", - "out_name": "fNfert", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNgas": { - "modeling_realm": "land", - "standard_name": "land_nitrogen_lost_to_atmosphere", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Nitrogen lost to the atmosphere (sum of NHx, NOx, N2O, N2)", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNgas", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNgasFire": { - "modeling_realm": "land", - "standard_name": "land_nitrogen_lost_to_atmosphere_due_to_fire", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total N lost to the atmosphere (including NHx, NOx, N2O, N2) from fire.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNgasFire", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNgasNonFire": { - "modeling_realm": "land", - "standard_name": "land_nitrogen_lost_to_atmosphere_not_due_to_fire", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total N lost to the atmosphere (including NHx, NOx, N2O, N2) from all processes except fire.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNgasNonFire", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNleach": { - "modeling_realm": "land", - "standard_name": "land_nitrogen_lost_to_leaching", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total N loss to leaching or runoff (sum of ammonium, nitrite and nitrate)", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNleach", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNloss": { - "modeling_realm": "land", - "standard_name": "land_nitrogen_lost", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total N lost (including NHx, NOx, N2O, N2 and leaching)", - "comment": "Not all models split losses into gasesous and leaching", - "dimensions": "longitude latitude time", - "out_name": "fNloss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNnetmin": { - "modeling_realm": "land", - "standard_name": "net_nitrogen_mineralisation", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net nitrogen release from soil and litter as the outcome of nitrogen immobilisation and gross mineralisation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNnetmin", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fNup": { - "modeling_realm": "land", - "standard_name": "plant_nitrogen_uptake", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "total plant nitrogen uptake (sum of ammonium and nitrate), irrespective of the source of nitrogen", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fNup", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fProductDecomp": { - "modeling_realm": "land", - "standard_name": "Carbon_flux_out_of_storage_product_pools_into_atmos", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "decomposition out of product pools to CO2 in atmos", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fProductDecomp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fProductDecompLut": { - "modeling_realm": "land", - "standard_name": "tendency_of_atmospheric_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_wood_and_agricultural_product_pool", - "units": "kg s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "flux from wood and agricultural product pools on land use tile into atmosphere", - "comment": "If a model has explicit anthropogenic product pools by land use tile", - "dimensions": "longitude latitude landUse time", - "out_name": "fProductDecompLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegFire": { - "modeling_realm": "land", - "standard_name": "fire_CO2_emissions_from_vegetation_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux from Vegetation into Atmosphere due to CO2 Emission from all Fire", - "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", - "dimensions": "longitude latitude time", - "out_name": "fVegFire", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegLitterMortality": { - "modeling_realm": "land", - "standard_name": "mortality_litter_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation to Litter as a Result of Mortality", - "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", - "dimensions": "longitude latitude time", - "out_name": "fVegLitterMortality", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegLitterSenescence": { - "modeling_realm": "land", - "standard_name": "senescence_litter_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation to Litter as a Result of Leaf, Branch, and Root Senescence", - "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", - "dimensions": "longitude latitude time", - "out_name": "fVegLitterSenescence", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegSoilMortality": { - "modeling_realm": "land", - "standard_name": "mortality_vegtosoil_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation to Soil as a result of mortality", - "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", - "dimensions": "longitude latitude time", - "out_name": "fVegSoilMortality", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegSoilSenescence": { - "modeling_realm": "land", - "standard_name": "senescence_vegtosoil_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation to Soil as a result of leaf, branch, and root senescence", - "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", - "dimensions": "longitude latitude time", - "out_name": "fVegSoilSenescence", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fahLut": { - "modeling_realm": "land", - "standard_name": "surface_upward_heat_flux_due_to_anthropogenic_energy_consumption", - "units": "W m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Anthropogenic heat flux generated from non-renewable human primary energy consumption, including energy use by vehicles, commercial and residential buildings, industry, and power plants. Primary energy refers to energy in natural resources, fossil and nonfossil, before conversion into other forms, such as electricity.", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "fahLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtalk": { - "modeling_realm": "ocnBgChem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Biological Alkalinity due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of alkalinity", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdife": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdin": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdip": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Phosphorus due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of phosphate", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdisi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Silicon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude olevel time", - "out_name": "fbddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtalk": { - "modeling_realm": "ocnBgChem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Total Alkalinity", - "comment": "vertical integral of net time rate of change of alkalinity", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Net Dissolved Inorganic Carbon", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdife": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Net Dissolved Inorganic Iron", - "comment": "vertical integral of net time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdin": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Net Dissolved Inorganic Nitrogen", - "comment": "Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdip": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Net Dissolved Inorganic Phosphate", - "comment": "vertical integral of net time rate of change of phosphate", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdisi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Net Dissolved Inorganic Silicon", - "comment": "vertical integral of net time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude olevel time", - "out_name": "fddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg14co2": { - "modeling_realm": "ocnBgChem", - "standard_name": "air_sea_flux_of_14CO2", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Total air-sea flux of 14CO2", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fg14co2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg14co2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_14_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Surface Downward Flux of Abiotic 14CO2", - "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", - "dimensions": "longitude latitude olevel time", - "out_name": "fg14co2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Surface Downward Flux of Abiotic CO2", - "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", - "dimensions": "longitude latitude olevel time", - "out_name": "fgco2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_natural_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Surface Downward Flux of Natural CO2", - "comment": "Gas exchange flux of natural CO2 (positive into ocean)", - "dimensions": "longitude latitude olevel time", - "out_name": "fgco2nat", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgdms": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_upward_mole_flux_of_dimethyl_sulfide", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Surface Upward Flux of DMS", - "comment": "Gas exchange flux of DMS (positive into atmosphere)", - "dimensions": "longitude latitude olevel time", - "out_name": "fgdms", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "flandice": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_land_ice", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water flux into Sea Water from Land Ice", - "comment": "Computed as the water flux into the ocean due to land ice (runoff water from surface and base of land ice or melt from base of ice shelf or vertical ice front) into the ocean divided by the area ocean portion of the grid cell", - "dimensions": "longitude latitude time", - "out_name": "flandice", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "flashrate": { - "modeling_realm": "atmosChem", - "standard_name": "lightning_flash_rate", - "units": "km-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Lightning Flash Rate", - "comment": "proposed name: lightning_flash_rate (units to be interpreted as 'counts km-2 s-1)", - "dimensions": "longitude latitude time", - "out_name": "flashrate", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fracLut": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "fraction of grid cell for each land use tile", - "comment": "end of year values (not annual mean); note that fraction should be reported as fraction of land grid cell (example: frac_lnd = 0.5, frac_ocn = 0.5, frac_crop_lnd = 0.2 (of land portion of grid cell), then frac_lut(crp) = 0.5*0.2 = 0.1)", - "dimensions": "longitude latitude landUse time", - "out_name": "fracLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppGrass": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "gross primary production on grass tiles", - "comment": "Total GPP of grass in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "gppGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppLut": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "gross primary productivity on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "gppLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppShrub": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "gross primary production on Shrub tiles", - "comment": "Total GPP of shrubs in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "gppShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppTree": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "gross primary production on tree tiles", - "comment": "Total GPP of trees in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "gppTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppc13": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_c13", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 13C out of Atmosphere due to Gross Primary Production on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "gppc13", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gppc14": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_c14", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 14C out of Atmosphere due to Gross Primary Production on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "gppc14", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grassFracC3": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "C3 grass Area Percentage", - "comment": "Fraction of entire grid cell covered by C3 grass.", - "dimensions": "longitude latitude time typec3pft typenatgr", - "out_name": "grassFracC3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grassFracC4": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "C4 grass Area Percentage", - "comment": "Fraction of entire grid cell covered by C4 grass.", - "dimensions": "longitude latitude time typec4pft typenatgr", - "out_name": "grassFracC4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grplmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_graupel_in_air", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Graupel Mixing Ratio", - "comment": "Graupel mixing ratio", - "dimensions": "longitude latitude plev27 time", - "out_name": "grplmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcont300": { - "modeling_realm": "ocean", - "standard_name": "heat_content_of_ocean_layer", - "units": "m K", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat content of upper 300 meters", - "comment": "Used in PMIP2", - "dimensions": "longitude latitude time depth300m", - "out_name": "hcont300", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hflsLut": { - "modeling_realm": "land", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "latent heat flux on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "hflsLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfssLut": { - "modeling_realm": "land", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "sensible heat flux on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "hfssLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hursminCrop": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: mean time: minimum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Relative Humidity over Crop Tile", - "comment": "minimum near-surface (usually, 2 meter) relative humidity (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "hursminCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev7c time", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus27": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev27 time", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hussLut": { - "modeling_realm": "land", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "near-surface specific humidity on land use tile", - "comment": "Normally, the specific humidity should be reported at the 2 meter height", - "dimensions": "longitude latitude landUse time height2m", - "out_name": "hussLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intuadse": { - "modeling_realm": "atmos", - "standard_name": "vertical_integral_eastward_wind_by_dry_static_energy", - "units": "1.e6 J m-1 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Vertically integrated Eastward dry transport (cp.T +zg).u (Mass_weighted_vertical integral of the product of northward wind by dry static_energy per mass unit)", - "comment": "Used in PMIP2", - "dimensions": "longitude latitude time", - "out_name": "intuadse", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intuaw": { - "modeling_realm": "atmos", - "standard_name": "vertical_integral_eastward_wind_by_total_water", - "units": "kg m-1 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Vertically integrated Eastward moisture transport (Mass_weighted_vertical integral of the product of eastward wind by total water mass per unit mass)", - "comment": "Used in PMIP2", - "dimensions": "longitude latitude time", - "out_name": "intuaw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intvadse": { - "modeling_realm": "atmos", - "standard_name": "vertical_integral_northward_wind_by_dry_static_energy", - "units": "1.e6 J m-1 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Vertically integrated Northward dry transport (cp.T +zg).v (Mass_weighted_vertical integral of the product of northward wind by dry static_energy per mass unit)", - "comment": "Used in PMIP2", - "dimensions": "longitude latitude time", - "out_name": "intvadse", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intvaw": { - "modeling_realm": "atmos", - "standard_name": "vertical_integral_northward_wind_by_total_water", - "units": "kg m-1 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Vertically integrated Northward moisture transport (Mass_weighted_vertical integral of the product of northward wind by total water mass per unit mass)", - "comment": "Used in PMIP2", - "dimensions": "longitude latitude time", - "out_name": "intvaw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "irrLut": { - "modeling_realm": "land", - "standard_name": "surface_downward_water_flux_due_to_irrigation", - "units": "kg s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Irrigation flux including any irrigation for crops, trees, pasture, or urban lawns", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "irrLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureicemodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, ice", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadIc tau time", - "out_name": "jpdftaureicemodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jpdftaureliqmodis": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "MODIS Optical Thickness-Particle Size joint distribution, liquid", - "comment": "", - "dimensions": "longitude latitude plev7c effectRadLi tau time", - "out_name": "jpdftaureliqmodis", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "laiLut": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Leaf Area Index on Land Use Tile", - "comment": "Note that if tile does not model lai, for example, on the urban tile, then should be reported as missing value", - "dimensions": "longitude latitude landUse time", - "out_name": "laiLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loaddust": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_dust_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Dust", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loaddust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadso4": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_sulfate_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of SO4", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadso4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "loadss": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_seasalt_dry_aerosol", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Load of Seasalt", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "loadss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwsrfasdust": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_all_sky_surface_longwave_flux_to_dust_ambient_aerosol_particles", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "All-sky Surface Longwave radiative flux due to Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "lwsrfasdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwsrfcsdust": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_clear_sky_surface_longwave_flux_to_dust_ambient_aerosol_particles", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Clear-sky Surface Longwave radiative flux due to Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "lwsrfcsdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwtoaasdust": { - "modeling_realm": "atmos", - "standard_name": "toa_instantaneous_longwave_forcing", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "all sky lw-rf dust at toa", - "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", - "dimensions": "longitude latitude time", - "out_name": "lwtoaasdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwtoacs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_clear_sky_top_of_atmosphere_longwave_flux_to_dust_ambient_aerosol_particles___2D_field_radiative_properties", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Clear-sky TOA Longwave radiative flux due to Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "lwtoacs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwtoacsaer": { - "modeling_realm": "atmos", - "standard_name": "toa_instantaneous_longwave_forcing", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "clear sky lw-rf aerosols at toa", - "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", - "dimensions": "longitude latitude time", - "out_name": "lwtoacsaer", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "md": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Wet diameter mode coarse insoluble", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude alevel time", - "out_name": "md", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmraerso4": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_sulfate_dry_aerosol_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Aerosol Sulfate Mass Mixing Ratio", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mmraerso4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrbc": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Elemental carbon mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mmrbc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrdust": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_dust_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Dust aerosol mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mmrdust", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrno3": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_nitrate_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "NO3 aerosol mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mmrno3", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mmrss": { - "modeling_realm": "aerosol", - "standard_name": "mass_fraction_of_seasalt_dry_aerosol_particles_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Salt mass mixing ratio", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mmrss", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrlso": { - "modeling_realm": "land", - "standard_name": "soil_liquid_water_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Soil Liquid Water Content", - "comment": "the mass (summed over all all layers) of liquid water.", - "dimensions": "longitude latitude time", - "out_name": "mrlso", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrroLut": { - "modeling_realm": "land", - "standard_name": "runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Total runoff from land use tile", - "comment": "the total runoff (including 'drainage' through the base of the soil model) leaving the land use tile portion of the grid cell", - "dimensions": "longitude latitude landUse time", - "out_name": "mrroLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsfl": { - "modeling_realm": "land", - "standard_name": "frozen_moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Frozen water content of soil layer", - "comment": "in each soil layer, the mass of water in ice phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsll": { - "modeling_realm": "land", - "standard_name": "liquid_moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid water content of soil layer", - "comment": "in each soil layer, the mass of water in liquid phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsll", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsoLut": { - "modeling_realm": "land", - "standard_name": "soil_moisture_content", - "units": "kg m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Total soil moisture", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "mrsoLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsol": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total water content of soil layer", - "comment": "in each soil layer, the mass of water in all phases, including ice. Reported as 'missing' for grid cells occupied entirely by 'sea'", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrsol", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsosLut": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Moisture in Upper Portion of Soil Column of land use tile", - "comment": "the mass of water in all phases in a thin surface layer; integrate over uppermost 10cm", - "dimensions": "longitude latitude landUse time sdepth1", - "out_name": "mrsosLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrtws": { - "modeling_realm": "land", - "standard_name": "total_water_storage", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total water storage in a grid cell", - "comment": "Mass of water in all phases and in all components including soil, canopy, vegetation, ice sheets, rivers and ground water.", - "dimensions": "longitude latitude time", - "out_name": "mrtws", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLand": { - "modeling_realm": "land", - "standard_name": "total_land_nitrogen", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total nitrogen in all terrestrial nitrogen pools", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "nLand", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLeaf": { - "modeling_realm": "land", - "standard_name": "leaf_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Leaves", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nLeaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLitter": { - "modeling_realm": "land", - "standard_name": "litter_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Litter Pool", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "nLitter", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLitterCwd": { - "modeling_realm": "land", - "standard_name": "litter_wood_debris_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Coarse Woody Debris", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nLitterCwd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLitterSubSurf": { - "modeling_realm": "land", - "standard_name": "subsurface_litter_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in below ground litter (non CWD)", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nLitterSubSurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nLitterSurf": { - "modeling_realm": "land", - "standard_name": "surface_litter_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in above ground litter (non CWD)", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nLitterSurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nMineral": { - "modeling_realm": "land", - "standard_name": "mineral_soil_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mineral nitrogen in the soil", - "comment": "SUM of ammonium, nitrite, nitrate, etc over all soil layers", - "dimensions": "longitude latitude time", - "out_name": "nMineral", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nMineralNH4": { - "modeling_realm": "land", - "standard_name": "mineral_nh4_soil_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mineral ammonium in the soil", - "comment": "SUM of ammonium over all soil layers", - "dimensions": "longitude latitude time", - "out_name": "nMineralNH4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nMineralNO3": { - "modeling_realm": "land", - "standard_name": "mineral_no3_soil_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mineral nitrate in the soil", - "comment": "SUM of nitrate over all soil layers", - "dimensions": "longitude latitude time", - "out_name": "nMineralNO3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nOther": { - "modeling_realm": "land", - "standard_name": "other_vegegtation_components_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen mass in vegetation components other than leaves, stem and root", - "comment": "E.g. fruits, seeds, etc.", - "dimensions": "longitude latitude time", - "out_name": "nOther", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nProduct": { - "modeling_realm": "land", - "standard_name": "nitrogen_content_of_products_of_anthropogenic_land_use_change", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Products of Land Use Change", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "nProduct", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nRoot": { - "modeling_realm": "land", - "standard_name": "root_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Roots", - "comment": "including fine and coarse roots.", - "dimensions": "longitude latitude time", - "out_name": "nRoot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nSoil": { - "modeling_realm": "land", - "standard_name": "soil_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Soil Pool", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "nSoil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nStem": { - "modeling_realm": "land", - "standard_name": "stem_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Stem", - "comment": "including sapwood and hardwood.", - "dimensions": "longitude latitude time", - "out_name": "nStem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nVeg": { - "modeling_realm": "land", - "standard_name": "vegetation_nitrogen_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Nitrogen Mass in Vegetation", - "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", - "dimensions": "longitude latitude time", - "out_name": "nVeg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "necbLut": { - "modeling_realm": "land", - "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "net rate of C accumulation (or loss) on land use tile", - "comment": "Computed as npp minus heterotrophic respiration minus fire minus C leaching minus harvesting/clearing. Positive rate is into the land, negative rate is from the land. Do not include fluxes from anthropogenic product pools to atmosphere", - "dimensions": "longitude latitude landUse time", - "out_name": "necbLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nep": { - "modeling_realm": "land", - "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Carbon Mass Flux out of Atmophere due to Net Ecosystem Productivity on Land.", - "comment": "Natural flux of CO2 (expressed as a mass flux of carbon) from the atmosphere to the land calculated as the difference between uptake associated will photosynthesis and the release of CO2 from the sum of plant and soil respiration and fire. Positive flux is into the land. emissions from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosphere from Land Use Change).", - "dimensions": "longitude latitude time", - "out_name": "nep", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "netAtmosLandC13Flux": { - "modeling_realm": "land", - "standard_name": "net_atmos_to_land_C13_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Mass Flux of 13C between atmosphere and land (positive into land) as a result of all processes.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "netAtmosLandC13Flux", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "netAtmosLandC14Flux": { - "modeling_realm": "land", - "standard_name": "net_atmos_to_land_C14_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Mass Flux of 14C between atmosphere and land (positive into land) as a result of all processes.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "netAtmosLandC14Flux", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "netAtmosLandCO2Flux": { - "modeling_realm": "land", - "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Net flux of CO2 between atmosphere and land (positive into land) as a result of all processes.", - "comment": "This flux should be reproducible by differencing the sum of all carbon pools (cVeg, cLitter, cSoil, and cProducts or equivalently cLand) from one time step to the next, except in the case of lateral transfer of carbon due to harvest, riverine transport of dissolved organic and/or inorganic carbon, or any other process (in which case the lateral_carbon_transfer_over_land term, see below, will be zero data).", - "dimensions": "longitude latitude time", - "out_name": "netAtmosLandCO2Flux", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppGrass": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "net primary production on grass tiles", - "comment": "Total NPP of grass in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "nppGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppLut": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "net primary productivity on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "nppLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppOther": { - "modeling_realm": "land", - "standard_name": "net_primary_production_allocated_to_other", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "net primary production allcoated to other pools (not leaves stem or roots)", - "comment": "added for completeness with npp_root", - "dimensions": "longitude latitude time", - "out_name": "nppOther", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppShrub": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "net primary production on Shrub tiles", - "comment": "Total NPP of shrubs in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "nppShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppStem": { - "modeling_realm": "land", - "standard_name": "net_primary_production_allocated_to_stem", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "net primary production allcoated to stem", - "comment": "added for completeness with npp_root", - "dimensions": "longitude latitude time", - "out_name": "nppStem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppTree": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "net primary production on tree tiles", - "comment": "Total NPP of trees in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "nppTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nwdFracLut": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "1", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "fraction of land use tile tile that is non-woody vegetation ( e.g. herbaceous crops)", - "comment": "", - "dimensions": "longitude latitude landUse time typenwd", - "out_name": "nwdFracLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2sat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Oxygen Concentration at Saturation", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "o2sat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontempdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized dianeutral mixing", - "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontempdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontempmint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", - "units": "degC kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and conservative temperature", - "comment": "Full column sum of density*cell thickness*conservative temperature. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", - "dimensions": "longitude latitude time", - "out_name": "ocontempmint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized eddy advection", - "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized mesoscale diffusion", - "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized submesoscale advection", - "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemprmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to residual mean (sum of Eulerian + parameterized) advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemprmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemptend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content", - "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemptend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od443dust": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Optical thickness at 443 nm Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "od443dust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550aerso": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Stratospheric Optical depth at 550 nm (all aerosols) 2D-field (here we limit the computation of OD to the stratosphere only)", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "od550aerso", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550aerstrat": { - "modeling_realm": "atmos", - "standard_name": "strat_aerosol_optical_depth", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Stratospheric Aerosol Optical Depth at 550nm", - "comment": "From tropopause to stratopause as defined by the model", - "dimensions": "longitude latitude time", - "out_name": "od550aerstrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od550so4so": { - "modeling_realm": "atmos", - "standard_name": "missing", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Stratospheric Optical depth at 550 nm (sulphate only) 2D-field (here we limit the computation of OD to the stratosphere only)", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "od550so4so", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "od865dust": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Optical thickness at 865 nm Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "od865dust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottempdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized dianeutral mixing", - "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottempdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottempmint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", - "units": "degC kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and potential temperature", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "opottempmint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized eddy advection", - "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized mesoscale diffusion", - "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized submesoscale advection", - "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemprmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to residual mean advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemprmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemptend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content", - "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemptend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "longitude latitude time", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized dianeutral mixing", - "comment": "Tendency of salt content for a grid cell from parameterized dianeutral mixing.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized eddy advection", - "comment": "Tendency of salt content for a grid cell from parameterized eddy advection (any form of eddy advection).", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized mesoscale diffusion", - "comment": "Tendency of salt content for a grid cell from parameterized mesoscale eddy diffusion.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized submesoscale advection", - "comment": "Tendency of salt content for a grid cell from parameterized submesoscale eddy advection.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltrmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to residual mean advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltrmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osalttend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content", - "comment": "Tendency of salt content for a grid cell from all processes.", - "dimensions": "longitude latitude olevel time", - "out_name": "osalttend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pabigthetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_added_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Added Conservative Temperature", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "pabigthetao", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "parasolRefl": { - "modeling_realm": "atmos", - "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacella", - "long_name": "PARASOL Reflectance", - "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", - "dimensions": "longitude latitude sza5 time", - "out_name": "parasolRefl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pastureFracC3": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "C3 Pasture Area Percentage", - "comment": "Percentage of entire grid cell covered by C3 pasture", - "dimensions": "longitude latitude time typec3pft typepasture", - "out_name": "pastureFracC3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pastureFracC4": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "C4 Pasture Area Percentage", - "comment": "Percentage of entire grid cell covered by C4 pasture", - "dimensions": "longitude latitude time typec4pft typepasture", - "out_name": "pastureFracC4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pathetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_additional_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "pathetao", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", - "comment": "Primary (organic carbon) production by the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppdiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Organic Carbon Production by Diatoms", - "comment": "Primary (organic carbon) production by the diatom component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppdiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", - "comment": "Primary (organic carbon) production by the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Organic Carbon Production by Other Phytoplankton", - "comment": "Primary (organic carbon) production by other phytoplankton components alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pppico": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", - "comment": "Primary (organic carbon) production by the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "pppico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prCrop": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation over Crop Tile", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "prCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prbigthetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_redistributed_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Redistributed Conservative Temperature", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "prbigthetao", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prhmax": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: mean within hours time: maximum over hours", - "cell_measures": "area: areacella", - "long_name": "Maximum Hourly Precipitation Rate", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prhmax", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prthetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_redistributed_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "prthetao", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raGrass": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "autotrophic respiration on grass tiles", - "comment": "Total RA of grass in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "raGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raLeaf": { - "modeling_realm": "land", - "standard_name": "autotrophic_respiration_from_leaves", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total respiration from leaves", - "comment": "added for completeness with Ra_root", - "dimensions": "longitude latitude time", - "out_name": "raLeaf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raLut": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "plant respiration on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "raLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raOther": { - "modeling_realm": "land", - "standard_name": "autotrophic_respiration", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total respiration from other pools (not leaves stem or roots)", - "comment": "added for completeness with Ra_root", - "dimensions": "longitude latitude time", - "out_name": "raOther", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raRoot": { - "modeling_realm": "land", - "standard_name": "autotrophic_respiration_from_roots", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Respiration from Roots", - "comment": "Total autotrophic respiration from all belowground plant parts. This has benchmarking value because the sum of Rh and root respiration can be compared to observations of total soil respiration.", - "dimensions": "longitude latitude time", - "out_name": "raRoot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raShrub": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "autotrophic respiration on Shrub tiles", - "comment": "Total RA of shrubs in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "raShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raStem": { - "modeling_realm": "land", - "standard_name": "autotrophic_respiration_from_stem", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Respiration from Stem", - "comment": "added for completeness with Ra_root", - "dimensions": "longitude latitude time", - "out_name": "raStem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "raTree": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "autotrophic respiration on tree tiles", - "comment": "Total RA of trees in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "raTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rac13": { - "modeling_realm": "land", - "standard_name": "plant_respiration_c13_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 13C into Atmosphere due to Autotrophic (Plant) Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rac13", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rac14": { - "modeling_realm": "land", - "standard_name": "plant_respiration_c14_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 14C into Atmosphere due to Autotrophic (Plant) Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rac14", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rainmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_rain_in_air", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "rain_mixing_ratio", - "comment": "Rain mixing ratio", - "dimensions": "longitude latitude plev27 time", - "out_name": "rainmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclic": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_ice_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time", - "out_name": "reffclic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclis": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_ice_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "longitude latitude alevel time", - "out_name": "reffclis", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclwc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude alevel time", - "out_name": "reffclwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclws": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "longitude latitude alevel time", - "out_name": "reffclws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhGrass": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "heterotrophic respiration on grass tiles", - "comment": "Total RH of grass in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "rhGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhLitter": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux_from_litter", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration from Litter on Land", - "comment": "Needed to calculate litter bulk turnover time. Includes respiration from CWD as well.", - "dimensions": "longitude latitude time", - "out_name": "rhLitter", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhLut": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "soil heterotrophic respiration on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "rhLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhShrub": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "heterotrophic respiration on Shrub tiles", - "comment": "Total RH of shrubs in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "rhShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhSoil": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux_from_soil", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration from Soil on Land", - "comment": "Needed to calculate soil bulk turnover time", - "dimensions": "longitude latitude time", - "out_name": "rhSoil", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhTree": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "heterotrophic respiration on tree tiles", - "comment": "Total RH of trees in the gridcell", - "dimensions": "longitude latitude time", - "out_name": "rhTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhc13": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_c13_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 13C into Atmosphere due to Heterotrophic Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rhc13", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rhc14": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_c14_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Flux of 14C into Atmosphere due to Heterotrophic Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rhc14", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rls": { - "modeling_realm": "atmos", - "standard_name": "surface_net_downward_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Longwave Surface Radiation", - "comment": "Net longwave surface radiation", - "dimensions": "longitude latitude time", - "out_name": "rls", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlusLut": { - "modeling_realm": "land", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Longwave on Land Use Tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "rlusLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdoabsorb": { - "modeling_realm": "ocean", - "standard_name": "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "net rate of absorption of shortwave energy in ocean layer", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "rsdoabsorb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscsdiff": { - "modeling_realm": "atmos", - "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Diffuse Downwelling Clear Sky Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsdscsdiff", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdsdiff": { - "modeling_realm": "atmos", - "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Diffuse Downwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsdsdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rss": { - "modeling_realm": "atmos", - "standard_name": "surface_net_downward_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Shortwave Surface Radiation", - "comment": "Net downward shortwave radiation at the surface", - "dimensions": "longitude latitude time", - "out_name": "rss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsusLut": { - "modeling_realm": "land", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Shortwave on Land Use Tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "rsusLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sconcdust": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_dust_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Concentration of Dust", - "comment": "mass concentration of dust dry aerosol in air in model lowest layer", - "dimensions": "longitude latitude time", - "out_name": "sconcdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sconcso4": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_sulfate_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Concentration of SO4", - "comment": "mass concentration of sulfate dry aerosol in air in model lowest layer.", - "dimensions": "longitude latitude time", - "out_name": "sconcso4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sconcss": { - "modeling_realm": "atmos", - "standard_name": "mass_concentration_of_seasalt_dry_aerosol_in_air", - "units": "kg m-3", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Concentration of Seasalt", - "comment": "mass concentration of seasalt dry aerosol in air in model lowest layer", - "dimensions": "longitude latitude time", - "out_name": "sconcss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sedustCI": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_sedimentation", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sedimentation Flux of dust mode coarse insoluble", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "sedustCI", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWindmax": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Wind Speed", - "comment": "Daily maximum near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWindmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snowmxrat27": { - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_snow_in_air", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "snow_mixing_ratio", - "comment": "Snow mixing ratio", - "dimensions": "longitude latitude plev27 time", - "out_name": "snowmxrat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "somint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_salinity", - "units": "1e-3 kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and salinity", - "comment": "Full column sum of density*cell thickness*prognostic salinity. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", - "dimensions": "longitude latitude time", - "out_name": "somint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sweLut": { - "modeling_realm": "land", - "standard_name": "missing", - "units": "m", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "snow water equivalent on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time", - "out_name": "sweLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swsrfasdust": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_all_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "All-sky Surface Shortwave radiative flux due to Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "swsrfasdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swsrfcsdust": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_clear_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Clear-sky Surface Shortwave radiative flux due to Dust", - "comment": "Balkanski - LSCE", - "dimensions": "longitude latitude time", - "out_name": "swsrfcsdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swtoaasdust": { - "modeling_realm": "atmos", - "standard_name": "toa_instantaneous_shortwave_forcing", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "all sky sw-rf dust at toa", - "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", - "dimensions": "longitude latitude time", - "out_name": "swtoaasdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "swtoacsdust": { - "modeling_realm": "atmos", - "standard_name": "toa_instantaneous_shortwave_forcing", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "clear sky sw-rf dust at toa", - "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", - "dimensions": "longitude latitude time", - "out_name": "swtoacsdust", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "t2": { - "modeling_realm": "atmos", - "standard_name": "square_of_air_temperature", - "units": "K2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "square_of_air_temperature", - "comment": "Air temperature squared", - "dimensions": "longitude latitude alevel time", - "out_name": "t2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "t20d": { - "modeling_realm": "ocean", - "standard_name": "depth_of_isosurface_of_sea_water_potential_temperature", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "20C isotherm depth", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "t20d", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tSoilPools": { - "modeling_realm": "land", - "standard_name": "soil_carbon_turnover_rate_by_pool", - "units": "s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "turnover rate of each model soil carbon pool", - "comment": "defined as 1/(turnover time) for each soil pool. Use the same pools reported under cSoilPools", - "dimensions": "longitude latitude time", - "out_name": "tSoilPools", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta27": { - "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 plev27 time", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasLut": { - "modeling_realm": "land", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "near-surface air temperature (2m above displacement height, i.e. t_ref) on land use tile", - "comment": "", - "dimensions": "longitude latitude landUse time height2m", - "out_name": "tasLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmaxCrop": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: maximum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Air Temperature over Crop Tile", - "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmaxCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasminCrop": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: minimum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Air Temperature over Crop Tile", - "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasminCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tdps": { - "modeling_realm": "atmos", - "standard_name": "dew_point_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "2m dewpoint temperature", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "tdps", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaot": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Vertically Averaged Sea Water Potential Temperature", - "comment": "Vertical average of the sea water potential temperature through the whole ocean depth", - "dimensions": "longitude latitude time", - "out_name": "thetaot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaot2000": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Depth average potential temperature of upper 2000m", - "comment": "Upper 2000m, 2D field", - "dimensions": "longitude latitude time depth2000m", - "out_name": "thetaot2000", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaot300": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Depth average potential temperature of upper 300m", - "comment": "Upper 300m, 2D field", - "dimensions": "longitude latitude time depth300m", - "out_name": "thetaot300", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaot700": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Depth average potential temperature of upper 700m", - "comment": "Upper 700m, 2D field", - "dimensions": "longitude latitude time depth700m", - "out_name": "thetaot700", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhuspbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_boundary_layer_mixing", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity Due to Boundary Layer Mixing", - "comment": "Includes all boundary layer terms including diffusive terms.", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhuspbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusscp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity Due to Stratiform Clouds and Precipitation", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "tnhusscp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_numerical_diffusion", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Numerical Diffusion", - "comment": "This includes any horizontal or vertical numerical temperature diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the temperature budget.", - "dimensions": "longitude latitude alevel time", - "out_name": "tntd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntmp27": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_model_physics", - "units": "K s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Model Physics", - "comment": "Tendency of air temperature due to model physics. This includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition to physics or resolved dynamics should be excluded. This term is required to check the closure of the heat budget.", - "dimensions": "longitude latitude plev27 time", - "out_name": "tntmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_boundary_layer_mixing", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature Due to Boundary Layer Mixing", - "comment": "Includes all boundary layer terms including diffusive terms.", - "dimensions": "longitude latitude alevel time", - "out_name": "tntpbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrl27": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", - "units": "K s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Longwave heating rate", - "comment": "Tendency of air temperature due to longwave radiative heating", - "dimensions": "longitude latitude plev27 time", - "out_name": "tntrl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrlcs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "dimensions": "longitude latitude alevel time", - "out_name": "tntrlcs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrs27": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", - "units": "K s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Shortwave heating rate", - "comment": "Tendency of air temperature due to shortwave radiative heating", - "dimensions": "longitude latitude plev27 time", - "out_name": "tntrs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrscs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "dimensions": "longitude latitude alevel time", - "out_name": "tntrscs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntscp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", - "units": "K s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature Due to Stratiform Clouds and Precipitation", - "comment": "", - "dimensions": "longitude latitude alevel time", - "out_name": "tntscp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tomint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", - "units": "1e-3 kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and prognostic temperature", - "comment": "Full column sum of density*cell thickness*prognostic temperature. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", - "dimensions": "longitude latitude time", - "out_name": "tomint", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracBdlDcd": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Broadleaf deciduous tree fraction", - "comment": "This is the fraction of the entire grid cell that is covered by broadleaf deciduous trees.", - "dimensions": "longitude latitude time typetreebd", - "out_name": "treeFracBdlDcd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracBdlEvg": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Broadleaf evergreen tree fraction", - "comment": "This is the fraction of the entire grid cell that is covered by broadleaf evergreen trees.", - "dimensions": "longitude latitude time typetreebe", - "out_name": "treeFracBdlEvg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracNdlDcd": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Needleleaf deciduous tree fraction", - "comment": "This is the fraction of the entire grid cell that is covered by needleleaf deciduous trees.", - "dimensions": "longitude latitude time typetreend", - "out_name": "treeFracNdlDcd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracNdlEvg": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Needleleaf evergreen tree fraction", - "comment": "This is the fraction of the entire grid cell that is covered by needleleaf evergreen trees.", - "dimensions": "longitude latitude time typetreene", - "out_name": "treeFracNdlEvg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tslsiLut": { - "modeling_realm": "land", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where landuse", - "cell_measures": "area: areacella", - "long_name": "surface skin temperature on land use tile", - "comment": "temperature at which long-wave radiation emitted", - "dimensions": "longitude latitude landUse time", - "out_name": "tslsiLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "twap": { - "modeling_realm": "atmos", - "standard_name": "product_of_omega_and_air_temperature", - "units": "K Pa s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "air_temperature_times_omega", - "comment": "Product of air temperature and pressure tendency", - "dimensions": "longitude latitude alevel time", - "out_name": "twap", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "u2": { - "modeling_realm": "atmos", - "standard_name": "square_of_eastward_wind", - "units": "m2 s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "square_of_eastward_wind", - "comment": "u*u", - "dimensions": "longitude latitude alevel time", - "out_name": "u2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua27": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev27 time", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uqint": { - "modeling_realm": "atmos", - "standard_name": "integral_of_product_of_eastward_wind_and_specific_humidity_wrt_height", - "units": "m2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "integrated_eastward_wind_times_humidity", - "comment": "Column integrated eastward wind times specific humidity", - "dimensions": "longitude latitude time", - "out_name": "uqint", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ut": { - "modeling_realm": "atmos", - "standard_name": "product_of_eastward_wind_and_air_temperature", - "units": "K m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "air_temperature_times_eastward_wind", - "comment": "Product of air temperature and eastward wind", - "dimensions": "longitude latitude alevel time", - "out_name": "ut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendnogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "u-tendency nonorographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", - "dimensions": "longitude latitude plev19 time", - "out_name": "utendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "u-tendency orographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized orographic gravity waves.", - "dimensions": "longitude latitude plev19 time", - "out_name": "utendogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uv": { - "modeling_realm": "atmos", - "standard_name": "product_of_eastward_wind_and_northward_wind", - "units": "m2 s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "eastward_wind_times_northward_wind", - "comment": "u*v", - "dimensions": "longitude latitude alevel time", - "out_name": "uv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uwap": { - "modeling_realm": "atmos", - "standard_name": "product_of_eastward_wind_and_omega", - "units": "Pa m s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "eastward_wind_times_omega", - "comment": "u*omega", - "dimensions": "longitude latitude alevel time", - "out_name": "uwap", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "v2": { - "modeling_realm": "atmos", - "standard_name": "square_of_northward_wind", - "units": "m2 s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "square_of_northwardwind", - "comment": "v*v", - "dimensions": "longitude latitude alevel time", - "out_name": "v2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va27": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev27 time", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total vegetated fraction", - "comment": "fraction of grid cell that is covered by vegetation.This SHOULD be the sum of tree, grass, crop and shrub fractions.", - "dimensions": "longitude latitude time typeveg", - "out_name": "vegFrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeight": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "canopy height", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeight", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeightCrop": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: time: mean where crops (comment: mask=cropFrac)", - "cell_measures": "area: areacella", - "long_name": "Vegetation height averaged over the crop fraction of a grid cell.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeightCrop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeightGrass": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: time: mean where natural_grasses (comment: mask=grassFrac)", - "cell_measures": "area: areacella", - "long_name": "Vegetation height averaged over the grass fraction of a grid cell.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeightGrass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeightPasture": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Vegetation height averaged over the pasture fraction of a grid cell.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeightPasture", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeightShrub": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: time: mean where shrubs (comment: mask=shrubFrac)", - "cell_measures": "area: areacella", - "long_name": "Vegetation height averaged over the shrub fraction of a grid cell.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeightShrub", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegHeightTree": { - "modeling_realm": "land", - "standard_name": "canopy_height", - "units": "m", - "cell_methods": "area: time: mean where trees (comment: mask=treeFrac)", - "cell_measures": "area: areacella", - "long_name": "Vegetation height averaged over the tree fraction of a grid cell.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "vegHeightTree", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vqint": { - "modeling_realm": "atmos", - "standard_name": "integral_of_product_of_northward_wind_and_specific_humidity_wrt_height", - "units": "m2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "integrated_northward_wind_times_humidity", - "comment": "Column integrated northward wind times specific humidity", - "dimensions": "longitude latitude time", - "out_name": "vqint", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vt": { - "modeling_realm": "atmos", - "standard_name": "product_of_northward_wind_and_air_temperature", - "units": "K m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "air_temperature_times_northward_wind", - "comment": "Product of air temperature and northward wind", - "dimensions": "longitude latitude alevel time", - "out_name": "vt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtendnogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "v-tendency nonorographic gravity wave drag", - "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", - "dimensions": "longitude latitude plev19 time", - "out_name": "vtendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtendogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_northward_wind_due_to_orographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "v-tendency orographic gravity wave drag", - "comment": "Tendency of the northward wind by parameterized orographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", - "dimensions": "longitude latitude plev19 time", - "out_name": "vtendogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vwap": { - "modeling_realm": "atmos", - "standard_name": "product_of_northward_wind_and_omega", - "units": "Pa m s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "northward_wind_times_omega", - "comment": "v*omega", - "dimensions": "longitude latitude alevel time", - "out_name": "vwap", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude alevel time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap2": { - "modeling_realm": "atmos", - "standard_name": "square_of_lagrangian_tendency_of_air_pressure", - "units": "Pa2 s-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "square_of_omega", - "comment": "omega*omega", - "dimensions": "longitude latitude alevel time", - "out_name": "wap2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "waterDpth": { - "modeling_realm": "land", - "standard_name": "water_table_depth", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water table depth from surface.", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "waterDpth", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetlandCH4": { - "modeling_realm": "land", - "standard_name": "wetland_methane_emissions", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Grid averaged methane emissions from wetlands", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetlandCH4", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetlandCH4cons": { - "modeling_realm": "land", - "standard_name": "wetland_methane_consumption", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Grid averaged methane consuption (methanotrophy) from wetlands", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetlandCH4cons", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetlandCH4prod": { - "modeling_realm": "land", - "standard_name": "wetland_methane_production", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Grid averaged methane production (methanogenesis) from wetlands", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "wetlandCH4prod", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wetlandFrac": { - "modeling_realm": "land", - "standard_name": "wetland_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of a grid cell covered by wetland.", - "comment": "Report only one year if specified fraction is used, or time series if values are determined dynamically.", - "dimensions": "longitude latitude time typewetla", - "out_name": "wetlandFrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xgwdparam": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_eastward_stress_due_to_gravity_wave_drag", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "x_gravity_wave_drag_param", - "comment": "Parameterised x-component of gravity wave drag", - "dimensions": "longitude latitude alevel time", - "out_name": "xgwdparam", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ygwdparam": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_northward_stress_due_to_gravity_wave_drag", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "y_gravity_wave_drag_param", - "comment": "Parameterised y- component of gravity wave drag", - "dimensions": "longitude latitude alevel time", - "out_name": "ygwdparam", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg27": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev27 time", - "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomeso": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomeso", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomicro": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomicro", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomisc": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Other Zooplankton Carbon Concentration", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomisc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EmonZ.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EmonZ.json deleted file mode 100644 index f81692549b..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_EmonZ.json +++ /dev/null @@ -1,494 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table EmonZ", - "realm": "atmos", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "co2totalmass": { - "modeling_realm": "atmos", - "standard_name": "CO2_total_mass_in_atmos", - "units": "kg", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Globally integrated Carbon Mass in Atmosphere", - "comment": "globally integrated mass of carbon as CO2 in atmsophere. Report as a single number for all emissions-driven runs", - "dimensions": "time", - "out_name": "co2totalmass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epfy": { - "modeling_realm": "atmos", - "standard_name": "northward_eliassen_palm_flux_in_air", - "units": "m3 s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Component of the Eliassen-Palm Flux", - "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fy of Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3a of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", - "dimensions": "latitude plev39 time", - "out_name": "epfy", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epfz": { - "modeling_realm": "atmos", - "standard_name": "upward_eliassen_palm_flux_in_air", - "units": "m3 s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Upward Component of the Eliassen-Palm Flux", - "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fz of the Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3b of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", - "dimensions": "latitude plev39 time", - "out_name": "epfz", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jo2": { - "modeling_realm": "atmos", - "standard_name": "photolysis_rate_of_molecular_oxygen", - "units": "s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "photoloysis rate of O2", - "comment": "rate of o2 -> o1d+o", - "dimensions": "latitude plev39 time", - "out_name": "jo2", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "jo3": { - "modeling_realm": "atmos", - "standard_name": "photolysis_rate_of_ozone", - "units": "s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "photoloysis rate of O3", - "comment": "sum of rates o3 -> o1d+o2 and o3 -> o+o2", - "dimensions": "latitude plev39 time", - "out_name": "jo3", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "oxloss": { - "modeling_realm": "atmosChem", - "standard_name": "tendency_of_mole_concentration_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom_due_to_chemical_destruction", - "units": "mol m-3 s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "total Ox loss rate", - "comment": "total chemical loss rate for o+o1d+o3", - "dimensions": "latitude plev39 time", - "out_name": "oxloss", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "oxprod": { - "modeling_realm": "atmosChem", - "standard_name": "tendency_of_mole_concentration_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom_due_to_chemical_production_and_photolysis", - "units": "mol m-3 s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "total Ox production rate", - "comment": "total production rate of o+o1d+o3 including o2 photolysis and all o3 producing reactions", - "dimensions": "latitude plev39 time", - "out_name": "oxprod", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltbasin": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport", - "units": "kg s-1", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Salt Transport", - "comment": "function of latitude, basin", - "dimensions": "latitude basin time", - "out_name": "sltbasin", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltnorth": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport", - "units": "kg s-1", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Salt Transport", - "comment": "", - "dimensions": "latitude basin time", - "out_name": "sltnorth", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltnortha": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport", - "units": "kg s-1", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "Atlantic Northward Ocean Salt Transport", - "comment": "", - "dimensions": "latitude basin time", - "out_name": "sltnortha", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntc": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_convection", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Convection", - "comment": "Tendencies from cumulus convection scheme.", - "dimensions": "latitude plev39 time", - "out_name": "tntc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntmp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_model_physics", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Model Physics", - "comment": "Tendency of air temperature due to model physics. This includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition to physics or resolved dynamics should be excluded. This term is required to check the closure of the heat budget.", - "dimensions": "latitude plev39 time", - "out_name": "tntmp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntnogw": { - "modeling_realm": "atmos", - "standard_name": "temperature_tendency_due_to_dissipation_nonorographic_gravity_wave_drag", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "temperature tendency nonorographic gravity wave dissipation", - "comment": "Temperature tendency due to dissipation of parameterized nonorographic gravity waves.", - "dimensions": "latitude plev39 time", - "out_name": "tntnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntogw": { - "modeling_realm": "atmos", - "standard_name": "temperature_tendency_due_to_dissipation_orographic_gravity_wave_drag", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "temperature tendency orographic gravity wave dissipation", - "comment": "Temperature tendency due to dissipation of parameterized orographic gravity waves.", - "dimensions": "latitude plev39 time", - "out_name": "tntogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrl": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Longwave heating rate", - "comment": "Tendency of air temperature due to longwave radiative heating", - "dimensions": "latitude plev39 time", - "out_name": "tntrl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrlcs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "dimensions": "latitude plev39 time", - "out_name": "tntrlcs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrs": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Shortwave heating rate", - "comment": "Tendency of air temperature due to shortwave radiative heating", - "dimensions": "latitude plev39 time", - "out_name": "tntrs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrscs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "dimensions": "latitude plev39 time", - "out_name": "tntrscs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntscp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature Due to Stratiform Clouds and Precipitation", - "comment": "", - "dimensions": "latitude plev39 time", - "out_name": "tntscp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendepfd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Tendency of eastward wind due to Eliassen-Palm Flux divergence", - "comment": "Tendency of the zonal mean zonal wind due to the divergence of the Eliassen-Palm flux.", - "dimensions": "latitude plev39 time", - "out_name": "utendepfd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "utendnogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "u-tendency nonorographic gravity wave drag", - "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", - "dimensions": "latitude plev39 time", - "out_name": "utendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vmrox": { - "modeling_realm": "atmosChem", - "standard_name": "mole_fraction_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom", - "units": "mol mol-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "mole fraction of o and o3 and o1d", - "comment": "Mole Fraction of Ox", - "dimensions": "latitude plev39 time", - "out_name": "vmrox", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtem": { - "modeling_realm": "atmos", - "standard_name": "northward_transformed_eulerian_mean_air_velocity", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Transformed Eulerian Mean northward wind", - "comment": "Transformed Eulerian Mean Diagnostics v*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available).", - "dimensions": "latitude plev39 time", - "out_name": "vtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vtendnogw": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_northward_wind_due_to_nonorographic_gravity_wave_drag", - "units": "m s-2", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "v-tendency nonorographic gravity wave drag", - "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", - "dimensions": "latitude plev39 time", - "out_name": "vtendnogw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wtem": { - "modeling_realm": "atmos", - "standard_name": "unset", - "units": "m s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Transformed Eulerian Mean upward wind", - "comment": "Transformed Eulerian Mean Diagnostics w*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Scale height: 6950 m", - "dimensions": "latitude plev39 time", - "out_name": "wtem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xgwdparam": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_eastward_stress_due_to_gravity_wave_drag", - "units": "Pa", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "x_gravity_wave_drag_param", - "comment": "Parameterised x-component of gravity wave drag", - "dimensions": "latitude plev39 time", - "out_name": "xgwdparam", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ygwdparam": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_northward_stress_due_to_gravity_wave_drag", - "units": "Pa", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "y_gravity_wave_drag_param", - "comment": "Parameterised y- component of gravity wave drag", - "dimensions": "latitude plev39 time", - "out_name": "ygwdparam", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmtnt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_diabatic_processes", - "units": "K s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Zonal Mean Diabatic Heating Rates", - "comment": "The diabatic heating rates due to all the processes that may change potential temperature", - "dimensions": "latitude plev39 time", - "out_name": "zmtnt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Esubhr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Esubhr.json deleted file mode 100644 index 4f6338ebda..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Esubhr.json +++ /dev/null @@ -1,579 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Esubhr", - "realm": "atmos", - "frequency": "subhr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.017361", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "bldep": { - "modeling_realm": "aerosol", - "standard_name": "atmosphere_boundary_layer_thickness", - "units": "m", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Boundary Layer Depth", - "comment": "Boundary layer depth", - "dimensions": "longitude latitude time1", - "out_name": "bldep", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "longitude latitude time1", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "longitude latitude time1", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "hus", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time1 height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mc": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Mass Flux", - "comment": "The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions": "longitude latitude alevel time1", - "out_name": "mc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time1", - "out_name": "pr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time1", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prw": { - "modeling_realm": "atmos", - "standard_name": "atmosphere_water_vapor_content", - "units": "kg m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "longitude latitude time1", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclic": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_ice_particle", - "units": "m", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "alevel site time1", - "out_name": "reffclic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclis": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_ice_particle", - "units": "m", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Ice", - "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", - "dimensions": "alevel site time1", - "out_name": "reffclis", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclwc": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Hydrometeor Effective Radius of Convective Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "alevel site time1", - "out_name": "reffclwc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "reffclws": { - "modeling_realm": "atmos", - "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", - "units": "m", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Liquid Water", - "comment": "Droplets are liquid. The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", - "dimensions": "alevel site time1", - "out_name": "reffclws", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time1", - "out_name": "rlut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time1", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Top-of-Atmosphere Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time1", - "out_name": "rsut", - "type": "", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude alevel time1", - "out_name": "ta", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time1 height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhus": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity", - "units": "s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Tendency of Specific Humidity", - "comment": "Tendency of Specific Humidity", - "dimensions": "longitude latitude alevel time1", - "out_name": "tnhus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhuspbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_boundary_layer_mixing", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity Due to Boundary Layer Mixing", - "comment": "Includes all boundary layer terms including diffusive terms.", - "dimensions": "alevel site time1", - "out_name": "tnhuspbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnhusscp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", - "units": "s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Specific Humidity Due to Stratiform Clouds and Precipitation", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "tnhusscp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnt": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature", - "units": "K s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Tendency of Air Temperature", - "comment": "Tendency of Air Temperature", - "dimensions": "longitude latitude alevel time1", - "out_name": "tnt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntd": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_numerical_diffusion", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Numerical Diffusion", - "comment": "This includes any horizontal or vertical numerical temperature diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the temperature budget.", - "dimensions": "alevel site time1", - "out_name": "tntd", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntpbl": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_boundary_layer_mixing", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature Due to Boundary Layer Mixing", - "comment": "Includes all boundary layer terms including diffusive terms.", - "dimensions": "alevel site time1", - "out_name": "tntpbl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrl": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Longwave heating rate", - "comment": "Tendency of air temperature due to longwave radiative heating", - "dimensions": "alevel site time1", - "out_name": "tntrl", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrlcs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", - "dimensions": "alevel site time1", - "out_name": "tntrlcs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrs": { - "modeling_realm": "aerosol", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Shortwave heating rate", - "comment": "Tendency of air temperature due to shortwave radiative heating", - "dimensions": "alevel site time1", - "out_name": "tntrs", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntrscs": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", - "dimensions": "alevel site time1", - "out_name": "tntrscs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tntscp": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", - "units": "K s-1", - "cell_methods": "area: point time: point", - "cell_measures": "", - "long_name": "Tendency of Air Temperature Due to Stratiform Clouds and Precipitation", - "comment": "", - "dimensions": "alevel site time1", - "out_name": "tntscp", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "ua", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude alevel time1", - "out_name": "va", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "area: mean time: point", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude alevel time1", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eyr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eyr.json deleted file mode 100644 index 26ca84d71a..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Eyr.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Eyr", - "realm": "land", - "frequency": "yr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "365", - "generic_levels": "alevel olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "baresoilFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Bare Soil Fraction", - "comment": "Percentage of entire grid cell that is covered by bare soil.", - "dimensions": "longitude latitude time typebare", - "out_name": "baresoilFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitter": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Litter Pool", - "comment": "", - "dimensions": "longitude latitude time1", - "out_name": "cLitter", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterLut": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where landuse time: point", - "cell_measures": "area: areacella", - "long_name": "carbon in above and belowground litter pools on land use tiles", - "comment": "end of year values (not annual mean)", - "dimensions": "longitude latitude landUse time1", - "out_name": "cLitterLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cProduct": { - "modeling_realm": "land", - "standard_name": "carbon_content_of_products_of_anthropogenic_land_use_change", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Products of Land Use Change", - "comment": "Carbon mass per unit area in that has been removed from the environment through landuse change.", - "dimensions": "longitude latitude time1", - "out_name": "cProduct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cProductLut": { - "modeling_realm": "land", - "standard_name": "carbon_content_in_wood_and_agricultural_products", - "units": "kg m-2", - "cell_methods": "area: mean where landuse time: point", - "cell_measures": "area: areacella", - "long_name": "wood and agricultural product pool carbon associated with land use tiles; examples of products include paper, cardboard, timber for construction, and crop harvest for food or fuel.", - "comment": "anthropogenic pools associated with land use tiles into which harvests and cleared carbon are deposited before release into atmosphere PLUS any remaining anthropogenic pools that may be associated with lands which were converted into land use tiles during reported period . Does NOT include residue which is deposited into soil or litter; end of year values (not annual mean)", - "dimensions": "longitude latitude landUse time1", - "out_name": "cProductLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoil": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Soil Pool", - "comment": "Carbon mass in the full depth of the soil model.", - "dimensions": "longitude latitude time1", - "out_name": "cSoil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilLut": { - "modeling_realm": "land", - "standard_name": "soil_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where landuse time: point", - "cell_measures": "area: areacella", - "long_name": "carbon in soil pool on land use tiles", - "comment": "end of year values (not annual mean)", - "dimensions": "longitude latitude landUse time1", - "out_name": "cSoilLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVeg": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: point", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Vegetation", - "comment": "Carbon mass per unit area in vegetation.", - "dimensions": "longitude latitude time1", - "out_name": "cVeg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVegLut": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where landuse time: point", - "cell_measures": "area: areacella", - "long_name": "carbon in vegetation on land use tiles", - "comment": "end of year values (not annual mean)", - "dimensions": "longitude latitude landUse time1", - "out_name": "cVegLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cropFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Crop Fraction", - "comment": "Percentage of entire grid cell that is covered by crop.", - "dimensions": "longitude latitude time typecrop", - "out_name": "cropFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fracInLut": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: sum", - "cell_measures": "area: areacella", - "long_name": "annual gross fraction that was transferred into this tile from other land use tiles", - "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", - "dimensions": "longitude latitude landUse time", - "out_name": "fracInLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fracLut": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: point", - "cell_measures": "area: areacella", - "long_name": "fraction of grid cell for each land use tile", - "comment": "end of year values (not annual mean); note that fraction should be reported as fraction of land grid cell (example: frac_lnd = 0.5, frac_ocn = 0.5, frac_crop_lnd = 0.2 (of land portion of grid cell), then frac_lut(crp) = 0.5*0.2 = 0.1)", - "dimensions": "longitude latitude landUse time1", - "out_name": "fracLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fracOutLut": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: sum", - "cell_measures": "area: areacella", - "long_name": "annual gross fraction of land use tile that was transferred into other land use tiles", - "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", - "dimensions": "longitude latitude landUse time", - "out_name": "fracOutLut", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grassFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Natural Grass Fraction", - "comment": "Percentage of entire grid cell that is covered by natural grass.", - "dimensions": "longitude latitude time typenatgr", - "out_name": "grassFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "residualFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil", - "comment": "Percentage of entire grid cell that is land and is covered by neither vegetation nor bare-soil (e.g., urban, ice, lakes, etc.)", - "dimensions": "longitude latitude time typeresidual", - "out_name": "residualFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "shrubFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Shrub Fraction", - "comment": "Percentage of entire grid cell that is covered by shrub.", - "dimensions": "longitude latitude time typeshrub", - "out_name": "shrubFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Tree Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by trees.", - "dimensions": "longitude latitude time typetree", - "out_name": "treeFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vegFrac": { - "modeling_realm": "", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total vegetated fraction", - "comment": "fraction of grid cell that is covered by vegetation.This SHOULD be the sum of tree, grass, crop and shrub fractions.", - "dimensions": "longitude latitude time typeveg", - "out_name": "vegFrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfullo": { - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Ocean Layer", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time", - "out_name": "zfullo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxAnt.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxAnt.json deleted file mode 100644 index 2b4c727274..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxAnt.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table IfxAnt", - "realm": "landIce", - "frequency": "fx", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "areacellg": { - "modeling_realm": "land", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Grid Cell Area for Interpolated Grids", - "comment": "Area of the target grid (not the interpolated area of the source grid).", - "dimensions": "xant yant", - "out_name": "areacellg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeoubed": { - "modeling_realm": "landIce", - "standard_name": "upward_geothermal_heat_flux_at_ground_level_in_land_ice", - "units": "W m-2", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Geothermal Heat flux beneath land ice", - "comment": "Upward geothermal heat flux per unit area beneath land ice", - "dimensions": "xant yant", - "out_name": "hfgeoubed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lithk": { - "modeling_realm": "landIce", - "standard_name": "land_ice_thickness", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Ice Sheet Thickness", - "comment": "The thickness of the ice sheet", - "dimensions": "xant yant", - "out_name": "lithk", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "topg": { - "modeling_realm": "landIce", - "standard_name": "bedrock_altitude", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Bedrock Altitude", - "comment": "The bedrock topography beneath the land ice", - "dimensions": "xant yant", - "out_name": "topg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxGre.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxGre.json deleted file mode 100644 index ba35dba324..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IfxGre.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table IfxGre", - "realm": "landIce", - "frequency": "fx", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "areacellg": { - "modeling_realm": "land", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Grid Cell Area for Interpolated Grids", - "comment": "Area of the target grid (not the interpolated area of the source grid).", - "dimensions": "xgre ygre", - "out_name": "areacellg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeoubed": { - "modeling_realm": "landIce", - "standard_name": "upward_geothermal_heat_flux_at_ground_level_in_land_ice", - "units": "W m-2", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Geothermal Heat flux beneath land ice", - "comment": "Upward geothermal heat flux per unit area beneath land ice", - "dimensions": "xgre ygre", - "out_name": "hfgeoubed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lithk": { - "modeling_realm": "landIce", - "standard_name": "land_ice_thickness", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Ice Sheet Thickness", - "comment": "The thickness of the ice sheet", - "dimensions": "xgre ygre", - "out_name": "lithk", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "topg": { - "modeling_realm": "landIce", - "standard_name": "bedrock_altitude", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacellg", - "long_name": "Bedrock Altitude", - "comment": "The bedrock topography beneath the land ice", - "dimensions": "xgre ygre", - "out_name": "topg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonAnt.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonAnt.json deleted file mode 100644 index e680bc6b96..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonAnt.json +++ /dev/null @@ -1,494 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table ImonAnt", - "realm": "atmos", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "acabf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Mass Balance flux", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", - "dimensions": "xant yant time", - "out_name": "acabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "xant yant time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "xant yant time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "icem": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface ice melt flux", - "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xant yant time", - "out_name": "icem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lialb": { - "modeling_realm": "landIce", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice or snow albedo", - "comment": "Mean surface albedo of entire land ice covered part of the grid cell", - "dimensions": "xant yant time", - "out_name": "lialb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbffl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of floating ice shelf", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xant yant time", - "out_name": "libmassbffl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbfgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of grounded ice sheet", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xant yant time", - "out_name": "libmassbfgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "licalvf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice calving flux", - "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", - "dimensions": "xant yant time", - "out_name": "licalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lifmassbf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving_and_ice_front_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice vertical front mass balance flux", - "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", - "dimensions": "xant yant time", - "out_name": "lifmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotfl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of floating ice shelf", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xant yant time", - "out_name": "litempbotfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of grounded ice sheet", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xant yant time", - "out_name": "litempbotgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litemptop": { - "modeling_realm": "landIce", - "standard_name": "temperature_at_top_of_ice_sheet_model", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Temperature at top of ice sheet model", - "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", - "dimensions": "xant yant time", - "out_name": "litemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrroLi": { - "modeling_realm": "atmos", - "standard_name": "land_ice_runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land Ice Runoff Flux", - "comment": "Runoff flux over land ice is the difference between any available liquid water in the snowpack less any refreezing. Computed as the sum of rainfall and melt of snow or ice less any refreezing or water retained in the snowpack", - "dimensions": "xant yant time", - "out_name": "mrroLi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "xant yant time", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "modeling_realm": "atmos", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Rainfall Flux where Ice Free Ocean over Sea over Land Ice", - "comment": "", - "dimensions": "xant yant time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "xant yant time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "xant yant time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "xant yant time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "xant yant time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "xant yant time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "xant yant time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "snow cover fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "xant yant time", - "out_name": "snc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicefreez": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_refreezing_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface snow and ice refreeze flux", - "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xant yant time", - "out_name": "snicefreez", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicem": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface snow and ice melt flux", - "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xant yant time", - "out_name": "snicem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snm": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Snow Melt", - "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", - "dimensions": "xant yant time", - "out_name": "snm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "time height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "xant yant time", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsn": { - "modeling_realm": "landIce land", - "standard_name": "temperature_in_surface_snow", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Snow Internal Temperature", - "comment": "This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing in regions free of snow on land.", - "dimensions": "xant yant time", - "out_name": "tsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonGre.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonGre.json deleted file mode 100644 index b95e791829..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_ImonGre.json +++ /dev/null @@ -1,494 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table ImonGre", - "realm": "atmos", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "acabf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Mass Balance flux", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", - "dimensions": "xgre ygre time", - "out_name": "acabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "icem": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface ice melt flux", - "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xgre ygre time", - "out_name": "icem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lialb": { - "modeling_realm": "landIce", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice or snow albedo", - "comment": "Mean surface albedo of entire land ice covered part of the grid cell", - "dimensions": "xgre ygre time", - "out_name": "lialb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbffl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of floating ice shelf", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xgre ygre time", - "out_name": "libmassbffl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbfgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of grounded ice sheet", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xgre ygre time", - "out_name": "libmassbfgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "licalvf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice calving flux", - "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", - "dimensions": "xgre ygre time", - "out_name": "licalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lifmassbf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving_and_ice_front_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice vertical front mass balance flux", - "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", - "dimensions": "xgre ygre time", - "out_name": "lifmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotfl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of floating ice shelf", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xgre ygre time", - "out_name": "litempbotfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of grounded ice sheet", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xgre ygre time", - "out_name": "litempbotgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litemptop": { - "modeling_realm": "landIce", - "standard_name": "temperature_at_top_of_ice_sheet_model", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Temperature at top of ice sheet model", - "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", - "dimensions": "xgre ygre time", - "out_name": "litemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrroLi": { - "modeling_realm": "atmos", - "standard_name": "land_ice_runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land Ice Runoff Flux", - "comment": "Runoff flux over land ice is the difference between any available liquid water in the snowpack less any refreezing. Computed as the sum of rainfall and melt of snow or ice less any refreezing or water retained in the snowpack", - "dimensions": "xgre ygre time", - "out_name": "mrroLi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "xgre ygre time", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "modeling_realm": "atmos", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Rainfall Flux where Ice Free Ocean over Sea over Land Ice", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "xgre ygre time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "xgre ygre time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "xgre ygre time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "xgre ygre time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "snow cover fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "xgre ygre time", - "out_name": "snc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicefreez": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_refreezing_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface snow and ice refreeze flux", - "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xgre ygre time", - "out_name": "snicefreez", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicem": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface snow and ice melt flux", - "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "xgre ygre time", - "out_name": "snicem", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snm": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Snow Melt", - "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", - "dimensions": "xgre ygre time", - "out_name": "snm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "time height2m", - "out_name": "tas", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "xgre ygre time", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsn": { - "modeling_realm": "landIce land", - "standard_name": "temperature_in_surface_snow", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Snow Internal Temperature", - "comment": "This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing in regions free of snow on land.", - "dimensions": "xgre ygre time", - "out_name": "tsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrAnt.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrAnt.json deleted file mode 100644 index 043ebe2eb9..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrAnt.json +++ /dev/null @@ -1,579 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table IyrAnt", - "realm": "landIce", - "frequency": "yr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "365.00", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "acabf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Mass Balance flux", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", - "dimensions": "xant yant time", - "out_name": "acabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "areacelli": { - "modeling_realm": "landIce", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Ice-Sheet Grid Cell Area", - "comment": "Horizontal area of ice-sheet grid cells", - "dimensions": "xant yant time", - "out_name": "areacelli", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeoubed": { - "modeling_realm": "landIce", - "standard_name": "upward_geothermal_heat_flux_at_ground_level_in_land_ice", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Geothermal Heat flux beneath land ice", - "comment": "Upward geothermal heat flux per unit area beneath land ice", - "dimensions": "xant yant time", - "out_name": "hfgeoubed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "iareafl": { - "modeling_realm": "atmos", - "standard_name": "floating_ice_shelf_area", - "units": "m2", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "", - "long_name": "Area covered by floating ice shelves", - "comment": "Total area of the floating ice shelves (the component of ice sheet that flows over ocean)", - "dimensions": "time", - "out_name": "iareafl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "iareagr": { - "modeling_realm": "atmos", - "standard_name": "grounded_ice_sheet_area", - "units": "m2", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "", - "long_name": "Area covered by grounded ice sheet", - "comment": "Total area of the grounded ice sheets (the component of ice sheet resting over bedrock)", - "dimensions": "time", - "out_name": "iareagr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbffl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of floating ice shelf", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xant yant time", - "out_name": "libmassbffl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbfgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of grounded ice sheet", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xant yant time", - "out_name": "libmassbfgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "licalvf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice calving flux", - "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", - "dimensions": "xant yant time", - "out_name": "licalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lifmassbf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving_and_ice_front_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice vertical front mass balance flux", - "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", - "dimensions": "xant yant time", - "out_name": "lifmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lim": { - "modeling_realm": "atmos", - "standard_name": "land_ice_mass", - "units": "kg", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Ice sheet mass", - "comment": "The ice sheet mass is computed as the volume times density", - "dimensions": "time", - "out_name": "lim", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnsw": { - "modeling_realm": "atmos", - "standard_name": "land_ice_mass_not_displacing_sea_water", - "units": "kg", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "", - "long_name": "Ice sheet mass that does not displace sea water", - "comment": "The ice sheet mass is computed as the volume above flotation times density. Changes in land_ice_mass_not_displacing_sea_water will always result in a change in sea level, unlike changes in land_ice_mass which may not result in sea level change (such as melting of the floating ice shelves, or portion of ice that sits on bedrock below sea level)", - "dimensions": "time", - "out_name": "limnsw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotfl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of floating ice shelf", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xant yant time", - "out_name": "litempbotfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of grounded ice sheet", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xant yant time", - "out_name": "litempbotgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litemptop": { - "modeling_realm": "landIce", - "standard_name": "temperature_at_top_of_ice_sheet_model", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Temperature at top of ice sheet model", - "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", - "dimensions": "xant yant time", - "out_name": "litemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lithk": { - "modeling_realm": "landIce", - "standard_name": "land_ice_thickness", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Ice Sheet Thickness", - "comment": "The thickness of the ice sheet", - "dimensions": "xant yant time", - "out_name": "lithk", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "xant yant time", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftflf": { - "modeling_realm": "landIce", - "standard_name": "floating_ice_shelf_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", - "dimensions": "xant yant time typefis", - "out_name": "sftflf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgif": { - "modeling_realm": "land", - "standard_name": "land_ice_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Fraction of Grid Cell Covered with Glacier", - "comment": "Fraction of grid cell covered by land ice (ice sheet, ice shelf, ice cap, glacier)", - "dimensions": "xant yant time typeli", - "out_name": "sftgif", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgrf": { - "modeling_realm": "landIce", - "standard_name": "grounded_ice_sheet_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Grounded Ice Sheet Area Fraction", - "comment": "Fraction of grid cell covered by grounded ice sheet", - "dimensions": "xant yant time typegis", - "out_name": "sftgrf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "snow cover fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "xant yant time", - "out_name": "snc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "strbasemag": { - "modeling_realm": "landIce", - "standard_name": "magnitude_of_basal_drag_at_land_ice_base", - "units": "Pa", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land Ice Basal Drag", - "comment": "Magnitude of basal drag at land ice base", - "dimensions": "xant yant time", - "out_name": "strbasemag", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendacabf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_surface_mass_balance", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total surface mass balance flux", - "comment": "The total surface mass balance flux over land ice is a spatial integration of the surface mass balance flux", - "dimensions": "time", - "out_name": "tendacabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendlibmassbf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_basal_mass_balance", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total basal mass balance flux", - "comment": "The total basal mass balance flux over land ice is a spatial integration of the basal mass balance flux", - "dimensions": "time", - "out_name": "tendlibmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendlicalvf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_calving", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total calving flux", - "comment": "The total calving flux over land ice is a spatial integration of the calving flux", - "dimensions": "time", - "out_name": "tendlicalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "topg": { - "modeling_realm": "landIce", - "standard_name": "bedrock_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Bedrock Altitude", - "comment": "The bedrock topography beneath the land ice", - "dimensions": "xant yant time", - "out_name": "topg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", - "dimensions": "xant yant time", - "out_name": "xvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelmean": { - "modeling_realm": "landIce", - "standard_name": "land_ice_vertical_mean_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice vertical mean velocity", - "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", - "dimensions": "xant yant time", - "out_name": "xvelmean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.", - "dimensions": "xant yant time", - "out_name": "xvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", - "dimensions": "xant yant time", - "out_name": "yvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelmean": { - "modeling_realm": "landIce", - "standard_name": "land_ice_vertical_mean_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice vertical mean velocity", - "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", - "dimensions": "xant yant time", - "out_name": "yvelmean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.'", - "dimensions": "xant yant time", - "out_name": "yvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_upward_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Upward-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). 'basal' means the lower boundary of the atmosphere", - "dimensions": "xant yant time", - "out_name": "zvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_upward_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Upward component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface called 'surface' means the lower boundary of the atmosphere", - "dimensions": "xant yant time", - "out_name": "zvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrGre.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrGre.json deleted file mode 100644 index c134ae3bc7..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_IyrGre.json +++ /dev/null @@ -1,579 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table IyrGre", - "realm": "landIce", - "frequency": "yr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "365.00", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "acabf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Mass Balance flux", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", - "dimensions": "xgre ygre time", - "out_name": "acabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "areacelli": { - "modeling_realm": "landIce", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Ice-Sheet Grid Cell Area", - "comment": "Horizontal area of ice-sheet grid cells", - "dimensions": "xgre ygre time", - "out_name": "areacelli", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeoubed": { - "modeling_realm": "landIce", - "standard_name": "upward_geothermal_heat_flux_at_ground_level_in_land_ice", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Geothermal Heat flux beneath land ice", - "comment": "Upward geothermal heat flux per unit area beneath land ice", - "dimensions": "xgre ygre time", - "out_name": "hfgeoubed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "iareafl": { - "modeling_realm": "atmos", - "standard_name": "floating_ice_shelf_area", - "units": "m2", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "", - "long_name": "Area covered by floating ice shelves", - "comment": "Total area of the floating ice shelves (the component of ice sheet that flows over ocean)", - "dimensions": "time", - "out_name": "iareafl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "iareagr": { - "modeling_realm": "atmos", - "standard_name": "grounded_ice_sheet_area", - "units": "m2", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "", - "long_name": "Area covered by grounded ice sheet", - "comment": "Total area of the grounded ice sheets (the component of ice sheet resting over bedrock)", - "dimensions": "time", - "out_name": "iareagr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbffl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of floating ice shelf", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xgre ygre time", - "out_name": "libmassbffl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "libmassbfgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal specific mass balance flux of grounded ice sheet", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xgre ygre time", - "out_name": "libmassbfgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "licalvf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice calving flux", - "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", - "dimensions": "xgre ygre time", - "out_name": "licalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lifmassbf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_specific_mass_flux_due_to_calving_and_ice_front_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land ice vertical front mass balance flux", - "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", - "dimensions": "xgre ygre time", - "out_name": "lifmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lim": { - "modeling_realm": "atmos", - "standard_name": "land_ice_mass", - "units": "kg", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Ice sheet mass", - "comment": "The ice sheet mass is computed as the volume times density", - "dimensions": "time", - "out_name": "lim", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnsw": { - "modeling_realm": "atmos", - "standard_name": "land_ice_mass_not_displacing_sea_water", - "units": "kg", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "", - "long_name": "Ice sheet mass that does not displace sea water", - "comment": "The ice sheet mass is computed as the volume above flotation times density. Changes in land_ice_mass_not_displacing_sea_water will always result in a change in sea level, unlike changes in land_ice_mass which may not result in sea level change (such as melting of the floating ice shelves, or portion of ice that sits on bedrock below sea level)", - "dimensions": "time", - "out_name": "limnsw", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotfl": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where floating_ice_shelf (comment: mask=sftflf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of floating ice shelf", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", - "dimensions": "xgre ygre time", - "out_name": "litempbotfl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litempbotgr": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_temperature", - "units": "K", - "cell_methods": "area: time: mean where grounded_ice_sheet (comment: mask=sfgrlf)", - "cell_measures": "area: areacellg", - "long_name": "Basal temperature of grounded ice sheet", - "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", - "dimensions": "xgre ygre time", - "out_name": "litempbotgr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litemptop": { - "modeling_realm": "landIce", - "standard_name": "temperature_at_top_of_ice_sheet_model", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Temperature at top of ice sheet model", - "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", - "dimensions": "xgre ygre time", - "out_name": "litemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lithk": { - "modeling_realm": "landIce", - "standard_name": "land_ice_thickness", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Ice Sheet Thickness", - "comment": "The thickness of the ice sheet", - "dimensions": "xgre ygre time", - "out_name": "lithk", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "xgre ygre time", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftflf": { - "modeling_realm": "landIce", - "standard_name": "floating_ice_shelf_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", - "dimensions": "xgre ygre time typefis", - "out_name": "sftflf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgif": { - "modeling_realm": "land", - "standard_name": "land_ice_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Fraction of Grid Cell Covered with Glacier", - "comment": "Fraction of grid cell covered by land ice (ice sheet, ice shelf, ice cap, glacier)", - "dimensions": "xgre ygre time typeli", - "out_name": "sftgif", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgrf": { - "modeling_realm": "landIce", - "standard_name": "grounded_ice_sheet_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacellg", - "long_name": "Grounded Ice Sheet Area Fraction", - "comment": "Fraction of grid cell covered by grounded ice sheet", - "dimensions": "xgre ygre time typegis", - "out_name": "sftgrf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "snow cover fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "xgre ygre time", - "out_name": "snc", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "strbasemag": { - "modeling_realm": "landIce", - "standard_name": "magnitude_of_basal_drag_at_land_ice_base", - "units": "Pa", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Land Ice Basal Drag", - "comment": "Magnitude of basal drag at land ice base", - "dimensions": "xgre ygre time", - "out_name": "strbasemag", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendacabf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_surface_mass_balance", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total surface mass balance flux", - "comment": "The total surface mass balance flux over land ice is a spatial integration of the surface mass balance flux", - "dimensions": "time", - "out_name": "tendacabf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendlibmassbf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_basal_mass_balance", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total basal mass balance flux", - "comment": "The total basal mass balance flux over land ice is a spatial integration of the basal mass balance flux", - "dimensions": "time", - "out_name": "tendlibmassbf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tendlicalvf": { - "modeling_realm": "atmos", - "standard_name": "tendency_of_land_ice_mass_due_to_calving", - "units": "kg s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "", - "long_name": "Total calving flux", - "comment": "The total calving flux over land ice is a spatial integration of the calving flux", - "dimensions": "time", - "out_name": "tendlicalvf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "topg": { - "modeling_realm": "landIce", - "standard_name": "bedrock_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Bedrock Altitude", - "comment": "The bedrock topography beneath the land ice", - "dimensions": "xgre ygre time", - "out_name": "topg", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", - "dimensions": "xgre ygre time", - "out_name": "xvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelmean": { - "modeling_realm": "landIce", - "standard_name": "land_ice_vertical_mean_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice vertical mean velocity", - "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", - "dimensions": "xgre ygre time", - "out_name": "xvelmean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "xvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "X-component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.", - "dimensions": "xgre ygre time", - "out_name": "xvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", - "dimensions": "xgre ygre time", - "out_name": "yvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelmean": { - "modeling_realm": "landIce", - "standard_name": "land_ice_vertical_mean_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice vertical mean velocity", - "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", - "dimensions": "xgre ygre time", - "out_name": "yvelmean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "yvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Y-component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.'", - "dimensions": "xgre ygre time", - "out_name": "yvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zvelbase": { - "modeling_realm": "landIce", - "standard_name": "land_ice_basal_upward_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Upward-component of land ice basal velocity", - "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). 'basal' means the lower boundary of the atmosphere", - "dimensions": "xgre ygre time", - "out_name": "zvelbase", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zvelsurf": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_upward_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacellg", - "long_name": "Upward component of land ice surface velocity", - "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface called 'surface' means the lower boundary of the atmosphere", - "dimensions": "xgre ygre time", - "out_name": "zvelsurf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_LImon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_LImon.json deleted file mode 100644 index d2897e68e1..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_LImon.json +++ /dev/null @@ -1,647 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table LImon", - "realm": "landIce land", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "acabfIs": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_specific_mass_balance_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Mass Balance flux", - "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", - "dimensions": "longitude latitude time", - "out_name": "acabfIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "agesno": { - "modeling_realm": "landIce land", - "standard_name": "age_of_surface_snow", - "units": "day", - "cell_methods": "area: mean where land time: mean (with samples weighted by snow mass)", - "cell_measures": "area: areacella", - "long_name": "Snow Age", - "comment": "Age of Snow (when computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing data in regions free of snow on land.", - "dimensions": "longitude latitude time", - "out_name": "agesno", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfdsn": { - "modeling_realm": "landIce land", - "standard_name": "surface_downward_heat_flux_in_snow", - "units": "W m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Downward Heat Flux into Snow Where Land over Land", - "comment": "the net downward heat flux from the atmosphere into the snow that lies on land divided by the land area in the grid cell; reported as 0.0 for snow-free land regions or where the land fraction is 0.", - "dimensions": "longitude latitude time", - "out_name": "hfdsn", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hflsIs": { - "modeling_realm": "landIce", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Upward Latent Heat Flux", - "comment": "Upward latent heat flux from the ice sheet surface", - "dimensions": "longitude latitude time", - "out_name": "hflsIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfssIs": { - "modeling_realm": "landIce", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Upward Sensible Heat Flux", - "comment": "Upward sensible heat flux from the ice sheet surface", - "dimensions": "longitude latitude time", - "out_name": "hfssIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "icemIs": { - "modeling_realm": "landIce", - "standard_name": "land_ice_surface_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Ice Melt Flux", - "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "icemIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lialbIs": { - "modeling_realm": "landIce", - "standard_name": "surface_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Ice or Snow Albedo", - "comment": "Mean surface albedo of entire land ice covered part of the grid cell", - "dimensions": "longitude latitude time", - "out_name": "lialbIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "litemptopIs": { - "modeling_realm": "landIce", - "standard_name": "temperature_at_top_of_ice_sheet_model", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Temperature at top of ice sheet model", - "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", - "dimensions": "longitude latitude time", - "out_name": "litemptopIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lwsnl": { - "modeling_realm": "landIce land", - "standard_name": "liquid_water_content_of_snow_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid Water Content of Snow Layer", - "comment": "The total mass of liquid water contained interstitially within the whole depth of the snow layer of the land portion of a grid cell divided by the area of the land portion of the cell.", - "dimensions": "longitude latitude time", - "out_name": "lwsnl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrroIs": { - "modeling_realm": "landIce", - "standard_name": "runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Total Run-off", - "comment": "The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "mrroIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orogIs": { - "modeling_realm": "landIce", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Altitude", - "comment": "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.", - "dimensions": "longitude latitude time", - "out_name": "orogIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pflw": { - "modeling_realm": "landIce land", - "standard_name": "liquid_water_content_of_permafrost_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Liquid Water Content of Permafrost Layer", - "comment": "*where land over land*, i.e., this is the total mass of liquid water contained within the permafrost layer within the land portion of a grid cell divided by the area of the land portion of the cell.", - "dimensions": "longitude latitude time", - "out_name": "pflw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prraIs": { - "modeling_realm": "landIce", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Rainfall rate", - "comment": "Rainfall rate over the ice sheet", - "dimensions": "longitude latitude time", - "out_name": "prraIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsnIs": { - "modeling_realm": "landIce", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsnIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldsIs": { - "modeling_realm": "landIce", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rldsIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlusIs": { - "modeling_realm": "landIce", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlusIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdsIs": { - "modeling_realm": "landIce", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Downwelling Shortwave Radiation", - "comment": "Surface solar irradiance for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsdsIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsusIs": { - "modeling_realm": "landIce", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsusIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sblIs": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "sblIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftflf": { - "modeling_realm": "landIce", - "standard_name": "floating_ice_shelf_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", - "dimensions": "longitude latitude time typefis", - "out_name": "sftflf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgif": { - "modeling_realm": "land", - "standard_name": "land_ice_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Grid Cell Covered with Glacier", - "comment": "Fraction of grid cell covered by land ice (ice sheet, ice shelf, ice cap, glacier)", - "dimensions": "longitude latitude time typeli", - "out_name": "sftgif", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgrf": { - "modeling_realm": "landIce", - "standard_name": "grounded_ice_sheet_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Grounded Ice Sheet Area Fraction", - "comment": "Fraction of grid cell covered by grounded ice sheet", - "dimensions": "longitude latitude time typegis", - "out_name": "sftgrf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Area Fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "longitude latitude time", - "out_name": "snc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sncIs": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Snow Cover Percentage", - "comment": "Percentage of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "longitude latitude time", - "out_name": "sncIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snd": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_thickness", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Depth", - "comment": "where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction). Reported as 0.0 where the land fraction is 0.", - "dimensions": "longitude latitude time", - "out_name": "snd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicefreezIs": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_refreezing_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Snow and Ice Refreeze Flux", - "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "snicefreezIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snicemIs": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_and_ice_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Snow and Ice Melt Flux", - "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "snicemIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snm": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow Melt", - "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", - "dimensions": "longitude latitude time", - "out_name": "snm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snmIs": { - "modeling_realm": "landIce", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Snow Melt", - "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", - "dimensions": "longitude latitude time", - "out_name": "snmIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snw": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow Amount", - "comment": "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.", - "dimensions": "longitude latitude time", - "out_name": "snw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sootsn": { - "modeling_realm": "landIce land", - "standard_name": "soot_content_of_surface_snow", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Soot Content", - "comment": "the entire land portion of the grid cell is considered, with snow soot content set to 0.0 in regions free of snow.", - "dimensions": "longitude latitude time", - "out_name": "sootsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasIs": { - "modeling_realm": "landIce", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time", - "out_name": "tasIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tpf": { - "modeling_realm": "landIce land", - "standard_name": "permafrost_layer_thickness", - "units": "m", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Permafrost Layer Thickness", - "comment": "The mean thickness of the permafrost layer in the land portion of the grid cell. Reported as zero in permafrost-free regions.", - "dimensions": "longitude latitude time", - "out_name": "tpf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsIs": { - "modeling_realm": "landIce", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "tsIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsn": { - "modeling_realm": "landIce land", - "standard_name": "temperature_in_surface_snow", - "units": "K", - "cell_methods": "area: mean where land time: mean (with samples weighted by snow mass)", - "cell_measures": "area: areacella", - "long_name": "Snow Internal Temperature", - "comment": "This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing in regions free of snow on land.", - "dimensions": "longitude latitude time", - "out_name": "tsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsnIs": { - "modeling_realm": "landIce", - "standard_name": "temperature_in_surface_snow", - "units": "K", - "cell_methods": "area: time: mean where ice_sheet", - "cell_measures": "area: areacella", - "long_name": "Ice Sheet Snow Internal Temperature", - "comment": "This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing in regions free of snow on land.", - "dimensions": "longitude latitude time", - "out_name": "tsnIs", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Lmon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Lmon.json deleted file mode 100644 index db286de97a..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Lmon.json +++ /dev/null @@ -1,936 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Lmon", - "realm": "land", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "baresoilFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Bare Soil Fraction", - "comment": "Percentage of entire grid cell that is covered by bare soil.", - "dimensions": "longitude latitude time typebare", - "out_name": "baresoilFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "burntFractionAll": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Percentage of Entire Grid cell that is Covered by Burnt Vegetation (All Classes)", - "comment": "Percentage of grid cell burned due to all fires including natural and anthropogenic fires and those associated with anthropogenic land use change", - "dimensions": "longitude latitude time typeburnt", - "out_name": "burntFractionAll", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c3PftFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total C3 PFT Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by C3 PFTs (including grass, crops, and trees).", - "dimensions": "longitude latitude time typec3pft", - "out_name": "c3PftFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "c4PftFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total C4 PFT Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by C4 PFTs (including grass and crops).", - "dimensions": "longitude latitude time typec4pft", - "out_name": "c4PftFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cCwd": { - "modeling_realm": "land", - "standard_name": "wood_debris_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Coarse Woody Debris", - "comment": "Carbon mass per unit area in woody debris (dead organic matter composed of coarse wood. It is distinct from litter)", - "dimensions": "longitude latitude time", - "out_name": "cCwd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLeaf": { - "modeling_realm": "land", - "standard_name": "leaf_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Leaves", - "comment": "Carbon mass per unit area in leaves.", - "dimensions": "longitude latitude time", - "out_name": "cLeaf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitter": { - "modeling_realm": "land", - "standard_name": "litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Litter Pool", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitter", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterAbove": { - "modeling_realm": "land", - "standard_name": "surface_litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Above-Ground Litter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterAbove", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cLitterBelow": { - "modeling_realm": "land", - "standard_name": "subsurface_litter_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Below-Ground Litter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "cLitterBelow", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cProduct": { - "modeling_realm": "land", - "standard_name": "carbon_content_of_products_of_anthropogenic_land_use_change", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Products of Land Use Change", - "comment": "Carbon mass per unit area in that has been removed from the environment through landuse change.", - "dimensions": "longitude latitude time", - "out_name": "cProduct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cRoot": { - "modeling_realm": "land", - "standard_name": "root_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Roots", - "comment": "Carbon mass per unit area in roots, including fine and coarse roots.", - "dimensions": "longitude latitude time", - "out_name": "cRoot", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilFast": { - "modeling_realm": "land", - "standard_name": "fast_soil_pool_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Fast Soil Pool", - "comment": "Carbon mass per unit area in fast soil pool. Fast means a lifetime of less than 10 years for reference climate conditions (20th century) in the absence of water limitations.", - "dimensions": "longitude latitude time", - "out_name": "cSoilFast", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilMedium": { - "modeling_realm": "land", - "standard_name": "medium_soil_pool_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Medium Soil Pool", - "comment": "Carbon mass per unit area in medium (rate) soil pool. Medium means a lifetime of more than than 10 years and less than 100 years for reference climate conditions (20th century) in the absence of water limitations.", - "dimensions": "longitude latitude time", - "out_name": "cSoilMedium", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cSoilSlow": { - "modeling_realm": "land", - "standard_name": "slow_soil_pool_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Slow Soil Pool", - "comment": "Carbon mass per unit area in slow soil pool. Slow means a lifetime of more than 100 years for reference climate (20th century) in the absence of water limitations.", - "dimensions": "longitude latitude time", - "out_name": "cSoilSlow", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cVeg": { - "modeling_realm": "land", - "standard_name": "vegetation_carbon_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass in Vegetation", - "comment": "Carbon mass per unit area in vegetation.", - "dimensions": "longitude latitude time", - "out_name": "cVeg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cropFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Crop Fraction", - "comment": "Percentage of entire grid cell that is covered by crop.", - "dimensions": "longitude latitude time typecrop", - "out_name": "cropFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsblsoi": { - "modeling_realm": "land", - "standard_name": "water_evaporation_flux_from_soil", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Evaporation from Soil", - "comment": "Water evaporation from soil (including sublimation).", - "dimensions": "longitude latitude time", - "out_name": "evspsblsoi", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsblveg": { - "modeling_realm": "land", - "standard_name": "water_evaporation_flux_from_canopy", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Evaporation from Canopy", - "comment": "The canopy evaporation and sublimation (if present in model); may include dew formation as a negative flux.", - "dimensions": "longitude latitude time", - "out_name": "evspsblveg", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fFire": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to CO2 Emission from Fire", - "comment": "CO2 emissions (expressed as a carbon mass flux per unit area) from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosphere from Land Use Change).", - "dimensions": "longitude latitude time", - "out_name": "fFire", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fGrazing": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Grazing on Land", - "comment": "Carbon mass flux per unit area due to grazing on land", - "dimensions": "longitude latitude time", - "out_name": "fGrazing", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fHarvest": { - "modeling_realm": "land", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Crop Harvesting", - "comment": "Carbon mass flux per unit area due to crop harvesting", - "dimensions": "longitude latitude time", - "out_name": "fHarvest", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fLitterSoil": { - "modeling_realm": "land", - "standard_name": "carbon_mass_flux_into_soil_from_litter", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Litter to Soil", - "comment": "Carbon mass flux per unit area into soil from litter (dead plant material in or above the soil).", - "dimensions": "longitude latitude time", - "out_name": "fLitterSoil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegLitter": { - "modeling_realm": "land", - "standard_name": "litter_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation to Litter", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fVegLitter", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fVegSoil": { - "modeling_realm": "land", - "standard_name": "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Carbon Mass Flux from Vegetation Directly to Soil", - "comment": "Carbon mass flux per unit area from vegetation directly into soil, without intermediate conversion to litter.", - "dimensions": "longitude latitude time", - "out_name": "fVegSoil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "gpp": { - "modeling_realm": "land", - "standard_name": "gross_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "gpp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "grassFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Natural Grass Fraction", - "comment": "Percentage of entire grid cell that is covered by natural grass.", - "dimensions": "longitude latitude time typenatgr", - "out_name": "grassFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "lai": { - "modeling_realm": "land", - "standard_name": "leaf_area_index", - "units": "1.0", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Leaf Area Index", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "lai", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "landCoverFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Plant Functional Type Grid Fraction", - "comment": "Percentage of grid cell area occupied by different model vegetation/land cover categories. The categories may differ from model to model, depending on each model's subgrid land cover category definitions. Categories may include natural vegetation, anthropogenic vegetation, bare soil, lakes, urban areas, glaciers, etc. Sum of all should equal the fraction of the grid-cell that is land.", - "dimensions": "longitude latitude vegtype time", - "out_name": "landCoverFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrfso": { - "modeling_realm": "land landIce", - "standard_name": "soil_frozen_water_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Soil Frozen Water Content", - "comment": "The mass per unit area (summed over all model layers) of frozen water.", - "dimensions": "longitude latitude time", - "out_name": "mrfso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrlsl": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Content of Soil Layer", - "comment": "The mass of water in all phases, including ice, in soil layers. Report as missing for grid cells with no land.", - "dimensions": "longitude latitude sdepth time", - "out_name": "mrlsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrro": { - "modeling_realm": "land", - "standard_name": "runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Runoff", - "comment": "The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "mrro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrros": { - "modeling_realm": "land", - "standard_name": "surface_runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Runoff", - "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", - "dimensions": "longitude latitude time", - "out_name": "mrros", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrso": { - "modeling_realm": "land", - "standard_name": "soil_moisture_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Soil Moisture Content", - "comment": "the mass per unit area (summed over all soil layers) of water in all phases.", - "dimensions": "longitude latitude time", - "out_name": "mrso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsos": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Moisture in Upper Portion of Soil Column", - "comment": "The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions": "longitude latitude time sdepth1", - "out_name": "mrsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nbp": { - "modeling_realm": "land", - "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux out of Atmosphere due to Net Biospheric Production on Land", - "comment": "This is the net mass flux of carbon from atmosphere into land, calculated as photosynthesis MINUS the sum of plant and soil respiration, carbon fluxes from fire, harvest, grazing and land use change. Positive flux is into the land.", - "dimensions": "longitude latitude time", - "out_name": "nbp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "npp": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_biomass_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux out of Atmosphere due to Net Primary Production on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "npp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppLeaf": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_carbon_accumulated_in_leaves", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux due to NPP Allocation to Leaf", - "comment": "This is the rate of carbon uptake by leaves due to NPP", - "dimensions": "longitude latitude time", - "out_name": "nppLeaf", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppRoot": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_carbon_accumulated_in_roots", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux due to NPP Allocation to Roots", - "comment": "This is the rate of carbon uptake by roots due to NPP", - "dimensions": "longitude latitude time", - "out_name": "nppRoot", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nppWood": { - "modeling_realm": "land", - "standard_name": "net_primary_productivity_of_carbon_accumulated_in_wood", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux due to NPP Allocation to Wood", - "comment": "This is the rate of carbon uptake by wood due to NPP", - "dimensions": "longitude latitude time", - "out_name": "nppWood", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pastureFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Anthropogenic Pasture Fraction", - "comment": "Percentage of entire grid cell that is covered by anthropogenic pasture.", - "dimensions": "longitude latitude time typepasture", - "out_name": "pastureFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prveg": { - "modeling_realm": "land", - "standard_name": "precipitation_flux_onto_canopy", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation onto Canopy", - "comment": "The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", - "dimensions": "longitude latitude time", - "out_name": "prveg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rGrowth": { - "modeling_realm": "land", - "standard_name": "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Growth Autotrophic Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rGrowth", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rMaint": { - "modeling_realm": "land", - "standard_name": "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Maintenance Autotrophic Respiration on Land", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rMaint", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ra": { - "modeling_realm": "land", - "standard_name": "plant_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land", - "comment": "Carbon mass flux per unit area into atmosphere due to autotrophic respiration on land (respiration by producers) [see rh for heterotrophic production]", - "dimensions": "longitude latitude time", - "out_name": "ra", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "residualFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil", - "comment": "Percentage of entire grid cell that is land and is covered by neither vegetation nor bare-soil (e.g., urban, ice, lakes, etc.)", - "dimensions": "longitude latitude time typeresidual", - "out_name": "residualFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rh": { - "modeling_realm": "land", - "standard_name": "heterotrophic_respiration_carbon_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land", - "comment": "Carbon mass flux per unit area into atmosphere due to heterotrophic respiration on land (respiration by consumers)", - "dimensions": "longitude latitude time", - "out_name": "rh", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "shrubFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Shrub Fraction", - "comment": "Percentage of entire grid cell that is covered by shrub.", - "dimensions": "longitude latitude time typeshrub", - "out_name": "shrubFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tran": { - "modeling_realm": "land", - "standard_name": "transpiration_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Transpiration", - "comment": "Transpiration (may include dew formation as a negative flux).", - "dimensions": "longitude latitude time", - "out_name": "tran", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFrac": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Tree Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by trees.", - "dimensions": "longitude latitude time typetree", - "out_name": "treeFrac", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracPrimDec": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Primary Deciduous Tree Fraction", - "comment": "Percentage of the entire grid cell that is covered by total primary deciduous trees.", - "dimensions": "longitude latitude time typepdec", - "out_name": "treeFracPrimDec", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracPrimEver": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Primary Evergreen Tree Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by primary evergreen trees.", - "dimensions": "longitude latitude time typepever", - "out_name": "treeFracPrimEver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracSecDec": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Secondary Deciduous Tree Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by secondary deciduous trees.", - "dimensions": "longitude latitude time typesdec", - "out_name": "treeFracSecDec", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "treeFracSecEver": { - "modeling_realm": "land", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: mean where land over all_area_types time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Secondary Evergreen Tree Cover Fraction", - "comment": "Percentage of entire grid cell that is covered by secondary evergreen trees.", - "dimensions": "longitude latitude time typesever", - "out_name": "treeFracSecEver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tsl": { - "modeling_realm": "land", - "standard_name": "soil_temperature", - "units": "K", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", - "dimensions": "longitude latitude sdepth time", - "out_name": "tsl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oclim.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oclim.json deleted file mode 100644 index d5d5f2cd69..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oclim.json +++ /dev/null @@ -1,596 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Oclim", - "realm": "ocean", - "frequency": "monClim", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "difmxybo": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Momentum XY Biharmonic Diffusivity", - "comment": "Lateral biharmonic viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude olevel time2", - "out_name": "difmxybo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difmxybo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Momentum XY Biharmonic Diffusivity", - "comment": "Lateral biharmonic viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude time2", - "out_name": "difmxybo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difmxylo": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Momentum XY Laplacian Diffusivity", - "comment": "Lateral Laplacian viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude olevel time2", - "out_name": "difmxylo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difmxylo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Momentum XY Laplacian Diffusivity", - "comment": "Lateral Laplacian viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude time2", - "out_name": "difmxylo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrbbo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_bolus_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer Bolus Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrbbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrbbo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_bolus_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer Bolus Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude time2", - "out_name": "diftrbbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrblo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_bolus_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer Bolus Laplacian Diffusivity", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced advective transport. Sometimes this diffusivity is called the 'thickness' diffusivity. For CMIP5, this diagnostic was called 'ocean tracer bolus laplacian diffusivity'. The CMIP6 name is physically more relevant.", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrblo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrblo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_bolus_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer Bolus Laplacian Diffusivity", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced advective transport. Sometimes this diffusivity is called the 'thickness' diffusivity. For CMIP5, this diagnostic was called 'ocean tracer bolus laplacian diffusivity'. The CMIP6 name is physically more relevant.", - "dimensions": "longitude latitude time2", - "out_name": "diftrblo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrebo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_epineutral_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer Epineutral Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrebo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrebo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_epineutral_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer Epineutral Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude time2", - "out_name": "diftrebo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrelo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer Epineutral Laplacian Diffusivity", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced diffusive transport oriented along neutral or isopycnal directions. Sometimes this diffusivity is called the neutral diffusivity or isopycnal diffusivity or Redi diffusivity.", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrelo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrelo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer Epineutral Laplacian Diffusivity", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced diffusive transport oriented along neutral or isopycnal directions. Sometimes this diffusivity is called the neutral diffusivity or isopycnal diffusivity or Redi diffusivity.", - "dimensions": "longitude latitude time2", - "out_name": "diftrelo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrxybo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_xy_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer XY Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrxybo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrxybo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_xy_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer XY Biharmonic Diffusivity", - "comment": "", - "dimensions": "longitude latitude time2", - "out_name": "diftrxybo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrxylo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_xy_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Tracer XY Laplacian Diffusivity", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "diftrxylo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrxylo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_xy_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Tracer XY Laplacian Diffusivity", - "comment": "", - "dimensions": "longitude latitude time2", - "out_name": "diftrxylo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvho": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_heat_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Heat Diffusivity", - "comment": "Vertical/dianeutral diffusivity applied to prognostic temperature field.", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvmbo": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_momentum_diffusivity_due_to_background", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Momentum Diffusivity due to Background", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvmbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvmfdo": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_momentum_diffusivity_due_to_form_drag", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Momentum Diffusivity due to Form Drag", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvmfdo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvmo": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_momentum_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Momentum Diffusivity", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvmo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvmto": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_momentum_diffusivity_due_to_tides", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Momentum Diffusivity due to Tides", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvmto", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvso": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_salt_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Salt Diffusivity", - "comment": "Vertical/dianeutral diffusivity applied to prognostic salinity field.", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvtrbo": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_tracer_diffusivity_due_to_background", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Tracer Diffusivity due to Background", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvtrbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvtrto": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_tracer_diffusivity_due_to_tides", - "units": "m2 s-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Vertical Tracer Diffusivity due to Tides", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "difvtrto", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dispkevfo": { - "modeling_realm": "ocean", - "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to Vertical Friction", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "dispkevfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dispkexyfo": { - "modeling_realm": "ocean", - "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction", - "comment": "Depth integrated impacts on kinetic energy arising from lateral frictional dissipation associated with Laplacian and/or biharmonic viscosity. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude olevel time2", - "out_name": "dispkexyfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dispkexyfo2d": { - "modeling_realm": "ocean", - "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction", - "comment": "Depth integrated impacts on kinetic energy arising from lateral frictional dissipation associated with Laplacian and/or biharmonic viscosity. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude time2", - "out_name": "dispkexyfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnkebto": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport", - "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude olevel time2", - "out_name": "tnkebto", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnkebto2d": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello", - "long_name": "Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport", - "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude time2", - "out_name": "tnkebto", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnpeo": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_potential_energy_content", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Ocean Potential Energy Content", - "comment": "Rate that work is done against vertical stratification, as measured by the vertical heat and salt diffusivity. Report here as depth integrated two-dimensional field.", - "dimensions": "longitude latitude olevel time2", - "out_name": "tnpeo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnpeot": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_potential_energy_content_due_to_tides", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Ocean Potential Energy Content due to Tides", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "tnpeot", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnpeotb": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_potential_energy_content_due_to_background", - "units": "W m-2", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Ocean Potential Energy Content due to Background", - "comment": "", - "dimensions": "longitude latitude olevel time2", - "out_name": "tnpeotb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfullo": { - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Ocean Layer", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time2", - "out_name": "zfullo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zhalfo": { - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time2", - "out_name": "zhalfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oday.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oday.json deleted file mode 100644 index 761e264812..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oday.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Oday", - "realm": "ocnBgChem", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "chlos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Total Chlorophyll Mass Concentration", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations at the sea surface. In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", - "dimensions": "longitude latitude time", - "out_name": "chlos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "omldamax": { - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_mixing_scheme", - "units": "m", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacello", - "long_name": "Daily Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "omldamax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton organic carbon component concentrations at the sea surface", - "dimensions": "longitude latitude time", - "out_name": "phycos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Salinity", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sossq": { - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_salinity", - "units": "1e-06", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Salinity", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "K", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Temperature", - "comment": "temperature of liquid ocean. Note that the correct standard_name for this variable is 'sea_surface_temperature', not 'surface_temperature', but this was discovered too late to correct. To maintain consistency across CMIP5 models, the wrong standard_name will continue to be used.", - "dimensions": "longitude latitude time", - "out_name": "tos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tossq": { - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_temperature", - "units": "degC2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Temperature", - "comment": "square of temperature of liquid ocean, averaged over the day.", - "dimensions": "longitude latitude time", - "out_name": "tossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Odec.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Odec.json deleted file mode 100644 index 40438fe53b..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Odec.json +++ /dev/null @@ -1,426 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Odec", - "realm": "ocean", - "frequency": "dec", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "agessc": { - "modeling_realm": "ocean", - "standard_name": "sea_water_age_since_surface_contact", - "units": "yr", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Age Since Surface Contact", - "comment": "Time elapsed since water was last in surface layer of the ocean.", - "dimensions": "longitude latitude olevel time", - "out_name": "agessc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bigthetaoga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Conservative Temperature", - "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", - "dimensions": "time", - "out_name": "bigthetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasin": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Heat Transport", - "comment": "Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfds": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_heat_flux_in_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Heat Flux at Sea Water Surface", - "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", - "dimensions": "longitude latitude time", - "out_name": "hfds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masso": { - "modeling_realm": "ocean", - "standard_name": "sea_water_mass", - "units": "kg", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Mass", - "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", - "dimensions": "time", - "out_name": "masso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmyz": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Meridional Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmyz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfdsi": { - "modeling_realm": "ocean seaIce", - "standard_name": "downward_sea_ice_basal_salt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Sea Ice Basal Salt Flux", - "comment": "This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", - "dimensions": "longitude latitude time", - "out_name": "sfdsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfriver": { - "modeling_realm": "ocean", - "standard_name": "salt_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Salt Flux into Sea Water from Rivers", - "comment": "This field is physical, and it arises when rivers carry a nonzero salt content. Often this is zero, with rivers assumed to be fresh.", - "dimensions": "longitude latitude time", - "out_name": "sfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "so": { - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Salinity", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "so", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "soga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Mean Sea Water Salinity", - "comment": "", - "dimensions": "time", - "out_name": "soga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Salinity", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sosga": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Salinity", - "comment": "", - "dimensions": "time", - "out_name": "sosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauuo": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_x_stress", - "units": "N m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward X Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauuo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvo": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_y_stress", - "units": "N m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Y Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauvo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "thetao", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaoga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field", - "dimensions": "time", - "out_name": "thetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thkcello": { - "modeling_realm": "ocean", - "standard_name": "cell_thickness", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Model Cell Thickness", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "thkcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "K", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Temperature", - "comment": "temperature of liquid ocean. Note that the correct standard_name for this variable is 'sea_surface_temperature', not 'surface_temperature', but this was discovered too late to correct. To maintain consistency across CMIP5 models, the wrong standard_name will continue to be used.", - "dimensions": "longitude latitude time", - "out_name": "tos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tosga": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Temperature", - "comment": "This may differ from 'surface temperature' in regions of sea ice.This may differ from 'surface temperature' in regions of sea ice.For models using conservative temperature as prognostic field, they should report the SST as surface potent", - "dimensions": "time", - "out_name": "tosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_x_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water X Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "uo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_y_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Y Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "vo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "volo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_volume", - "units": "m3", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Volume", - "comment": "Total volume of liquid seawater.", - "dimensions": "time", - "out_name": "volo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfo": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water", - "comment": "computed as the water flux into the ocean divided by the area of the ocean portion of the grid cell. This is the sum of the next two variables in this table.", - "dimensions": "longitude latitude time", - "out_name": "wfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wo": { - "modeling_realm": "ocean", - "standard_name": "upward_sea_water_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Z Velocity", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "wo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Ofx.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Ofx.json deleted file mode 100644 index f3ba8bd78e..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Ofx.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Ofx", - "realm": "ocean", - "frequency": "fx", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "areacello": { - "modeling_realm": "ocean", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Grid-Cell Area", - "comment": "Horizontal area of ocean grid cells", - "dimensions": "longitude latitude", - "out_name": "areacello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "basin": { - "modeling_realm": "ocean", - "standard_name": "region", - "units": "1.0", - "cell_methods": "area: mean", - "cell_measures": "area: areacello", - "long_name": "Region Selection Index", - "comment": "", - "dimensions": "longitude latitude", - "out_name": "basin", - "type": "integer", - "positive": "", - "valid_min": "", - "valid_max": "", - "flag_values": "0 1 2 3 4 5 6 7 8 9 10", - "flag_meanings": "global_land southern_ocean atlantic_ocean pacific_ocean arctic_ocean indian_ocean mediterranean_sea black_sea hudson_bay baltic_sea red_sea", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "deptho": { - "modeling_realm": "ocean", - "standard_name": "sea_floor_depth_below_geoid", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Floor Depth Below Geoid", - "comment": "Ocean bathymetry. Reported here is the sea floor depth for present day relative to z=0 geoid. Reported as missing for land grid cells.", - "dimensions": "longitude latitude", - "out_name": "deptho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeou": { - "modeling_realm": "ocean", - "standard_name": "upward_geothermal_heat_flux_at_sea_floor", - "units": "W m-2", - "cell_methods": "area: mean", - "cell_measures": "area: areacello", - "long_name": "Upward Geothermal Heat Flux at Sea Floor", - "comment": "", - "dimensions": "longitude latitude", - "out_name": "hfgeou", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masscello": { - "modeling_realm": "ocean", - "standard_name": "sea_water_mass_per_unit_area", - "units": "kg m-2", - "cell_methods": "area: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Grid-Cell Mass per area", - "comment": "Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", - "dimensions": "longitude latitude olevel", - "out_name": "masscello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftof": { - "modeling_realm": "ocean", - "standard_name": "sea_area_fraction", - "units": "%", - "cell_methods": "area: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Area Fraction", - "comment": "This is the area fraction at the ocean surface.", - "dimensions": "longitude latitude typesea", - "out_name": "sftof", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thkcello": { - "modeling_realm": "ocean", - "standard_name": "cell_thickness", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Model Cell Thickness", - "comment": "", - "dimensions": "longitude latitude olevel", - "out_name": "thkcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ugrid": { - "modeling_realm": "ocean", - "standard_name": "missing", - "units": "", - "cell_methods": "", - "cell_measures": "--UGRID", - "long_name": "UGRID Grid Information", - "comment": "", - "dimensions": "longitude latitude", - "out_name": "ugrido", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "volcello": { - "modeling_realm": "ocean", - "standard_name": "ocean_volume", - "units": "m3", - "cell_methods": "area: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Grid-Cell Volume", - "comment": "grid-cell volume ca. 2000.", - "dimensions": "longitude latitude olevel", - "out_name": "volcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Omon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Omon.json deleted file mode 100644 index 0935e8ec9e..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Omon.json +++ /dev/null @@ -1,5016 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Omon", - "realm": "ocnBgChem", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "agessc": { - "modeling_realm": "ocean", - "standard_name": "sea_water_age_since_surface_contact", - "units": "yr", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Age Since Surface Contact", - "comment": "Time elapsed since water was last in surface layer of the ocean.", - "dimensions": "longitude latitude olevel time", - "out_name": "agessc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "arag": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Aragonite Concentration", - "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time depth0m", - "out_name": "arag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aragos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_aragonite_epressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Aragonite Concentration", - "comment": "sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time", - "out_name": "aragos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bacc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Bacterial Carbon Concentration", - "comment": "Sum of bacterial carbon component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "bacc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "baccos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Bacterial Carbon Concentration", - "comment": "sum of bacterial carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "baccos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "comment": "Sum of particulate organic iron component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "bfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bfeos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "comment": "sum of particulate organic iron component concentrations", - "dimensions": "longitude latitude time", - "out_name": "bfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bigthetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Convervative Temperature", - "comment": "Sea water conservative temperature (this should be contributed only for models using conservative temperature as prognostic field)", - "dimensions": "longitude latitude olevel time", - "out_name": "bigthetao", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bigthetaoga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Conservative Temperature", - "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", - "dimensions": "time", - "out_name": "bigthetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as silicon in sea water", - "comment": "Sum of particulate silica component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "bsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bsios": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Silicon in sea water", - "comment": "sum of particulate silica component concentrations", - "dimensions": "longitude latitude time", - "out_name": "bsios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "calc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Calcite Concentration", - "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time depth0m", - "out_name": "calc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "calcos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_calcite_epressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Calcite Concentration", - "comment": "sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time", - "out_name": "calcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc11": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc11_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Moles Per Unit Mass of CFC-11 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc11", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc12": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc12_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Moles Per Unit Mass of CFC-12 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc12", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chl": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Total Chlorophyll in sea water", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", - "dimensions": "longitude latitude time depth0m", - "out_name": "chl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "chlcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlcalcos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "chlcalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Diatom expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "chldiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiatos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diatoms expressed as Chlorophyll in sea water", - "comment": "chlorophyll from diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time", - "out_name": "chldiatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "chldiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiazos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "chldiazos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from additional phytoplankton component concentrations alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "chlmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlmiscos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll from additional phytoplankton component concentrations alone", - "dimensions": "longitude latitude time", - "out_name": "chlmiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Total Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations at the sea surface. In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", - "dimensions": "longitude latitude time", - "out_name": "chlos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlpico": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "chlpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlpicoos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "chlpicoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "co3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "co3abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3abioos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "co3abioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "co3nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3natos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "co3natos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3os": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "co3os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satarag": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Carbonate ion Concentration for sea water in equilibrium with pure Aragonite", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "co3satarag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3sataragos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_carbonate_expressed_as_carbon_for_sea_water_in_equilibrium_with_pure_aragonite", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Carbonate Ion in Equilibrium with Pure Aragonite in sea water", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "co3sataragos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Carbonate ion Concentration for sea water in equilibrium with pure Calcite", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "co3satcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satcalcos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_carbonate_expressed_as_carbon_for_sea_water_in_equilibrium_with_pure_calcite", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Carbonate Ion in Equilibrium with Pure Calcite in sea water", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "co3satcalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "detoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Detrital Organic Carbon Concentration", - "comment": "Sum of detrital organic carbon component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "detoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "detocos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Detrital Organic Carbon Concentration", - "comment": "sum of detrital organic carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "detocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Dissolved Iron in sea water", - "comment": "Dissolved iron in sea water, including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", - "dimensions": "longitude latitude time depth0m", - "out_name": "dfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfeos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Iron Concentration", - "comment": "dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron)", - "dimensions": "longitude latitude time", - "out_name": "dfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13c": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissi13c", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13cos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissi13cos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14cabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon14_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", - "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissi14cabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14cabioos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_carbon14_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic Dissolved Inorganic 14Carbon Concentration", - "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissi14cabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissic": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", - "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissicabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicabioos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic Dissolved Inorganic Carbon Concentration", - "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissicabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissicnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnatos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time", - "out_name": "dissicnatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissicos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Organic Carbon Concentration", - "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions": "longitude latitude time depth0m", - "out_name": "dissoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissocos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Organic Carbon Concentration", - "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions": "longitude latitude time", - "out_name": "dissocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dms": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "dms", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmso": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dimethyl_sulfide_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "Mole concentration of dimethyl sulphide in water", - "dimensions": "longitude latitude olevel time", - "out_name": "dmso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmsos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dimethyl_sulfide_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "dmsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Delta PCO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air_due_to_abiotic_component", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Delta PCO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air_due_to_natural_component", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Delta PCO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpo2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Delta PO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpo2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "eparag100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Aragonite", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "eparag100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epc100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particle Organic Carbon", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epc100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epcalc100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Calcite", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epcalc100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epfe100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Iron", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epfe100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epn100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_nitrogen_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Nitrogen", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epn100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epp100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_phosphorus_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Phosphorus", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epp100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epsi100": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Silica", - "comment": "", - "dimensions": "longitude latitude time depth100m", - "out_name": "epsi100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evs": { - "modeling_realm": "ocean", - "standard_name": "water_evaporation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Evaporation Flux Where Ice Free Ocean over Sea", - "comment": "computed as the total mass of water vapor evaporating from the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "evs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expc": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Carbon Flux", - "comment": "Downward flux of particulate organic carbon", - "dimensions": "longitude latitude olevel time", - "out_name": "expc", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtalk": { - "modeling_realm": "ocnBgChem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Biological Alkalinity due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of alkalinity", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdife": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdin": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdip": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Phosphorus due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of phosphate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdisi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Silicon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtalk": { - "modeling_realm": "ocnBgChem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Total Alkalinity", - "comment": "vertical integral of net time rate of change of alkalinity", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Carbon", - "comment": "", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdife": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Iron", - "comment": "vertical integral of net time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdin": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Nitrogen", - "comment": "Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdip": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Phosphate", - "comment": "vertical integral of net time rate of change of phosphate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdisi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Silicon", - "comment": "vertical integral of net time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg13co2": { - "modeling_realm": "ocnBgChem", - "standard_name": "air_sea_flux_of_13CO2", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 13CO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "fg13co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg14co2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_14_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 14CO2", - "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fg14co2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgcfc11": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_cfc11", - "units": "mol sec-1 m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward CFC11 flux", - "comment": "gas exchange flux of CFC11", - "dimensions": "longitude latitude time", - "out_name": "fgcfc11", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgcfc12": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_cfc12", - "units": "mol sec-1 m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward CFC12 flux", - "comment": "gas exchange flux of CFC12", - "dimensions": "longitude latitude time", - "out_name": "fgcfc12", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Total CO2", - "comment": "Gas exchange flux of CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic CO2", - "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_natural_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Natural CO2", - "comment": "Gas exchange flux of natural CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2nat", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgdms": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_upward_mole_flux_of_dimethyl_sulfide", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Upward Flux of DMS", - "comment": "Gas exchange flux of DMS (positive into atmosphere)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgdms", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgo2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mole_flux_of_molecular_oxygen", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of O2", - "comment": "Gas exchange flux of O2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgo2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgsf6": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_sf6", - "units": "mol sec-1 m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward SF6 flux", - "comment": "gas exchange flux of SF6", - "dimensions": "longitude latitude time", - "out_name": "fgsf6", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ficeberg": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_icebergs", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Water Flux into Sea Water From Icebergs", - "comment": "computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude olevel time", - "out_name": "ficeberg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ficeberg2d": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_icebergs", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water From Icebergs", - "comment": "computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "ficeberg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "frfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Loss to Sediments", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "frfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fric": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Inorganic Carbon Flux at Ocean Bottom", - "comment": "Inorganic Carbon loss to sediments", - "dimensions": "longitude latitude time", - "out_name": "fric", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "friver": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water From Rivers", - "comment": "computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "friver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "frn": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Loss to Sediments and through Denitrification", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "frn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "froc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Organic Carbon Flux at Ocean Bottom", - "comment": "Organic Carbon loss to sediments", - "dimensions": "longitude latitude time", - "out_name": "froc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Net Flux of Iron", - "comment": "Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc", - "dimensions": "longitude latitude time depth0m", - "out_name": "fsfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsitherm": { - "modeling_realm": "ocean seaIce", - "standard_name": "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water due to Sea Ice Thermodynamics", - "comment": "computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "fsitherm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsn": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Net Flux of Nitrogen", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "fsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "graz": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Grazing of Phytoplankton by Zooplankton", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "graz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasin": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Heat Transport", - "comment": "Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpadv": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "northward ocean heat transport due to parameterized eddy advection", - "comment": "Contributions to heat transport from parameterized eddy-induced advective transport due to any subgrid advective process. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpmadv": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "northward ocean heat transport due to parameterized mesoscale advection", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpmadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpmdiff": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "northward ocean heat transport due to parameterized mesoscale diffusion", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced diffusive transport (i.e., neutral diffusion). Diagnosed here as a function of latitude and basin.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpsmadv": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "area: areacella", - "long_name": "northward ocean heat transport due to parameterized submesoscale advection", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpsmadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfcorr": { - "modeling_realm": "ocean", - "standard_name": "heat_flux_correction", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux Correction", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfds": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_heat_flux_in_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Heat Flux at Sea Water Surface", - "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", - "dimensions": "longitude latitude time", - "out_name": "hfds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfevapds": { - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "hfevapds", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeou": { - "modeling_realm": "ocean", - "standard_name": "upward_geothermal_heat_flux_at_sea_floor", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Upward Geothermal Heat Flux at Sea Floor", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfgeou", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfibthermds": { - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "hfibthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfibthermds2d": { - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfibthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hflso": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Latent Heat Flux", - "comment": "This is defined as with the cell methods string: where ice_free_sea over sea", - "dimensions": "longitude latitude time", - "out_name": "hflso", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrainds": { - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water", - "comment": "This is defined as 'where ice_free_sea over sea'; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell. All such heat fluxes are computed based on Celsius scale.", - "dimensions": "longitude latitude time", - "out_name": "hfrainds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrunoffds": { - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "hfrunoffds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrunoffds2d": { - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfrunoffds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsifrazil": { - "modeling_realm": "ocean seaIce", - "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "hfsifrazil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsifrazil2d": { - "modeling_realm": "ocean seaIce", - "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfsifrazil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsnthermds": { - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "hfsnthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsnthermds2d": { - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfsnthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsso": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Sensible Heat Flux", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "hfsso", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfx": { - "modeling_realm": "ocean", - "standard_name": "ocean_heat_x_transport", - "units": "W", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Heat X Transport", - "comment": "Contains all contributions to 'x-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfx", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfy": { - "modeling_realm": "ocean", - "standard_name": "ocean_heat_y_transport", - "units": "W", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Heat Y Transport", - "comment": "Contains all contributions to 'y-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfy", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "htovgyre": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_gyre", - "units": "W", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Heat Transport due to Gyre", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "htovgyre", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "htovovrt": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_overturning", - "units": "W", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Heat Transport due to Overturning", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "htovovrt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "icfriver": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Flux of Inorganic Carbon Into Ocean Surface by Runoff", - "comment": "Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions": "longitude latitude time depth0m", - "out_name": "icfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "ocean_mass_content_of_dissolved_inorganic_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Inorganic Carbon Content", - "comment": "Vertically integrated DIC", - "dimensions": "longitude latitude time", - "out_name": "intdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intdoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "ocean_mass_content_of_dissolved_organic_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Organic Carbon Content", - "comment": "Vertically integrated DOC (explicit pools only)", - "dimensions": "longitude latitude time", - "out_name": "intdoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intparag": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Aragonite Production", - "comment": "Vertically integrated aragonite production", - "dimensions": "longitude latitude time", - "out_name": "intparag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Production", - "comment": "Vertically integrated biogenic iron production", - "dimensions": "longitude latitude time", - "out_name": "intpbfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbn": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Production", - "comment": "Vertically integrated biogenic nitrogen production", - "dimensions": "longitude latitude time", - "out_name": "intpbn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbp": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Phosphorus Production", - "comment": "Vertically integrated biogenic phosphorus production", - "dimensions": "longitude latitude time", - "out_name": "intpbp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Silica Production", - "comment": "Vertically integrated biogenic silica production", - "dimensions": "longitude latitude time", - "out_name": "intpbsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpcalcite": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Calcite Production", - "comment": "Vertically integrated calcite production", - "dimensions": "longitude latitude time", - "out_name": "intpcalcite", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpn2": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Fixation Rate in Ocean", - "comment": "Vertically integrated nitrogen fixation", - "dimensions": "longitude latitude time", - "out_name": "intpn2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Particulate Organic Carbon Content", - "comment": "Vertically integrated POC", - "dimensions": "longitude latitude time", - "out_name": "intpoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpp": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Organic Carbon Production by All Types of Phytoplankton", - "comment": "Vertically integrated total primary (organic carbon) production by phytoplankton. This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", - "dimensions": "longitude latitude time", - "out_name": "intpp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "intppcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppdiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Organic Carbon Production by Diatoms", - "comment": "Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "intppdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppdiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "intppdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Organic Carbon Production by Other Phytoplankton", - "comment": "Vertically integrated total primary (organic carbon) production by other phytoplankton components alone", - "dimensions": "longitude latitude time", - "out_name": "intppmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppnitrate": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone", - "comment": "Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone", - "dimensions": "longitude latitude time", - "out_name": "intppnitrate", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpppico": { - "modeling_realm": "ocnBgChem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "intpppico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfecalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "iron_limitation_of_calcareous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron limitation of Calcareous Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limfecalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfediat": { - "modeling_realm": "ocnBgChem", - "standard_name": "iron_limitation_of_diatoms", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron limitation of Diatoms", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limfediat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfediaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "iron_limitation_of_diazotrophs", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron limitation of Diazotrophs", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limfediaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfemisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "iron_limitation_of_miscellaneous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Other Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limfemisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfepico": { - "modeling_realm": "ocnBgChem", - "standard_name": "iron_limitation_of_picophytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron limitation of Picophytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limfepico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "irradiance_limitation_of_calcareous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance limitation of Calcareous Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limirrcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrdiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "irradiance_limitation_of_diatoms", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance limitation of Diatoms", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limirrdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrdiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "irradiance_limitation_of_diazotrophs", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance limitation of Diazotrophs", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limirrdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "irradiance_limitation_of_miscellaneous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Other Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limirrmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrpico": { - "modeling_realm": "ocnBgChem", - "standard_name": "irradiance_limitation_of_picophytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance limitation of Picophytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limirrpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limncalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "nitrogen_limitation_of_calcareous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen limitation of Calcareous Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limncalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limndiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "nitrogen_limitation_of_diatoms", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen limitation of Diatoms", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limndiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limndiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "nitrogen_limitation_of_diazotrophs", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen limitation of Diazotrophs", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limndiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "nitrogen_limitation_of_miscellaneous_phytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Other Phytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limnmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnpico": { - "modeling_realm": "ocnBgChem", - "standard_name": "nitrogen_limitation_of_picophytoplankton", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen limitation of Picophytoplankton", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "limnpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masscello": { - "modeling_realm": "ocean", - "standard_name": "sea_water_mass_per_unit_area", - "units": "kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Mass Per Unit Area", - "comment": "Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", - "dimensions": "longitude latitude olevel time", - "out_name": "masscello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masso": { - "modeling_realm": "ocean", - "standard_name": "sea_water_mass", - "units": "kg", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Mass", - "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", - "dimensions": "time", - "out_name": "masso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mfo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_transport_across_line", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Water Transport", - "comment": "", - "dimensions": "oline time", - "out_name": "mfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotst": { - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotst", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstmax": { - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacello", - "long_name": "Maximum Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotstmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstmin": { - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacello", - "long_name": "Minimum Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotstmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstsq": { - "modeling_realm": "ocean", - "standard_name": "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "mlotstsq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftbarot": { - "modeling_realm": "ocean", - "standard_name": "ocean_barotropic_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Barotropic Mass Streamfunction", - "comment": "Streamfunction or its approximation for free surface models. See OMDP document for details.", - "dimensions": "longitude latitude time", - "out_name": "msftbarot", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmrho": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Meridional Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude rho basin time", - "out_name": "msftmrho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmrhompa": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude rho basin time", - "out_name": "msftmrhompa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmyz": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Meridional Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmyz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmzmpa": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmzmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmzsmpa": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized submesoscale advection", - "comment": "Report only if there is a submesoscale eddy parameterization.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmzsmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyrho": { - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Y Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude rho basin time", - "out_name": "msftyrho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyrhompa": { - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "area: areacella", - "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude rho basin time", - "out_name": "msftyrhompa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyyz": { - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "area: areacella", - "long_name": "Ocean Y Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude olevel basin time", - "out_name": "msftyyz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyzmpa": { - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "area: areacella", - "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude olevel basin time", - "out_name": "msftyzmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyzsmpa": { - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "area: areacella", - "long_name": "ocean Y overturning mass streamfunction due to parameterized submesoscale advection", - "comment": "Report only if there is a submesoscale eddy parameterization.", - "dimensions": "latitude olevel basin time", - "out_name": "msftyzsmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh4": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_ammonium_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Ammonium Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "nh4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh4os": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_ammonium_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Ammonium Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "nh4os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no3": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_nitrate_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Nitrate Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "no3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no3os": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_nitrate_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Nitrate Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "no3os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Oxygen Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "o2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2min": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Oxygen Minimum Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "o2min", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2os": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Oxygen Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "o2os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2sat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Oxygen Concentration at Saturation", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "o2sat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2satos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Oxygen Concentration at Saturation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "o2satos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "obvfsq": { - "modeling_realm": "ocean", - "standard_name": "square_of_brunt_vaisala_frequency_in_sea_water", - "units": "s-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Square of Brunt Vaisala Frequency in Sea Water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "obvfsq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocfriver": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Flux of Organic Carbon Into Ocean Surface by Runoff", - "comment": "Organic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions": "longitude latitude time depth0m", - "out_name": "ocfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Biogenic Iron Production", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "pbfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_pressure_at_sea_floor", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Pressure at Sea floor", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "pbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Biogenic Silica Production", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "pbsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ph": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "pH", - "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time depth0m", - "out_name": "ph", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_abiotic_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1 (abiotic component)..", - "dimensions": "longitude latitude time depth0m", - "out_name": "phabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phabioos": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_abiotic_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phnat": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_natural_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time depth0m", - "out_name": "phnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phnatos": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_natural_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phnatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phos": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", - "dimensions": "longitude latitude time depth0m", - "out_name": "phyc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "phycalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycalcos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phycalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycos": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton organic carbon component concentrations at the sea surface", - "dimensions": "longitude latitude time", - "out_name": "phycos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Diatoms expressed as Carbon in sea water", - "comment": "carbon from the diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "phydiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiatos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Diatoms expressed as Carbon in Sea Water", - "comment": "carbon from the diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time", - "out_name": "phydiatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Diazotrophs Expressed as Carbon in sea water", - "comment": "carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "phydiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiazos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water", - "comment": "carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phydiazos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Iron in sea water", - "comment": "sum of phytoplankton iron component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "phyfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyfeos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "sum of phytoplankton iron component concentrations", - "dimensions": "longitude latitude time", - "out_name": "phyfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phymisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from additional phytoplankton component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "phymisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phymiscos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from additional phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phymiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyn": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Nitrogen in sea water", - "comment": "sum of phytoplankton nitrogen component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "phyn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phynos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Phytoplankton Nitrogen in sea water", - "comment": "sum of phytoplankton nitrogen component concentrations", - "dimensions": "longitude latitude time", - "out_name": "phynos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyp": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "comment": "sum of phytoplankton phosphorus components", - "dimensions": "longitude latitude time depth0m", - "out_name": "phyp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypico": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "phypico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypicoos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "phypicoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "comment": "sum of phytoplankton phosphorus components", - "dimensions": "longitude latitude time", - "out_name": "phypos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "physi": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "comment": "sum of phytoplankton silica component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "physi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "physios": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "comment": "sum of phytoplankton silica component concentrations", - "dimensions": "longitude latitude time", - "out_name": "physios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pnitrate": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Carbon Production by Phytoplankton due to Nitrate Uptake Alone", - "comment": "Primary (organic carbon) production by phytoplankton due to nitrate uptake alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "pnitrate", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "po4": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Total Dissolved Inorganic Phosphorus Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "po4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "po4os": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Total Dissolved Inorganic Phosphorus Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "po4os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pon": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "comment": "sum of particulate organic nitrogen component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "pon", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ponos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "comment": "sum of particulate organic nitrogen component concentrations", - "dimensions": "longitude latitude time", - "out_name": "ponos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pop": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "comment": "sum of particulate organic phosphorus component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "pop", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "popos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "comment": "sum of particulate organic phosphorus component concentrations", - "dimensions": "longitude latitude time", - "out_name": "popos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pp": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Carbon Production by Total Phytoplankton", - "comment": "total primary (organic carbon) production by phytoplankton", - "dimensions": "longitude latitude time depth0m", - "out_name": "pp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "modeling_realm": "atmos", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Rainfall Flux where Ice Free Ocean over Sea", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Snowfall Flux where Ice Free Ocean over Sea", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pso": { - "modeling_realm": "ocean", - "standard_name": "sea_water_pressure_at_sea_water_surface", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Pressure at Sea Water Surface", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "pso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlntds": { - "modeling_realm": "ocean", - "standard_name": "surface_net_downward_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Net Downward Longwave Radiation", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "rlntds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdo": { - "modeling_realm": "ocean", - "standard_name": "downwelling_shortwave_flux_in_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Downwelling Shortwave Radiation in Sea Water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "rsdo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsntds": { - "modeling_realm": "ocean", - "standard_name": "net_downward_shortwave_flux_at_sea_water_surface", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Downward Shortwave Radiation at Sea Water Surface", - "comment": "This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean.", - "dimensions": "longitude latitude time", - "out_name": "rsntds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sf6": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_sulfur_hexafluoride_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Moles Per Unit Mass of SF6 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "sf6", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfdsi": { - "modeling_realm": "ocean seaIce", - "standard_name": "downward_sea_ice_basal_salt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Sea Ice Basal Salt Flux", - "comment": "This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", - "dimensions": "longitude latitude time", - "out_name": "sfdsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfriver": { - "modeling_realm": "ocean", - "standard_name": "salt_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Salt Flux into Sea Water from Rivers", - "comment": "This field is physical, and it arises when rivers carry a nonzero salt content. Often this is zero, with rivers assumed to be fresh.", - "dimensions": "longitude latitude time", - "out_name": "sfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "si": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Total Dissolved Inorganic Silicon Concentration", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "si", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sios": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Total Dissolved Inorganic Silicon Concentration", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltovgyre": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport_due_to_gyre", - "units": "kg s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Salt Transport due to Gyre", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "sltovgyre", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltovovrt": { - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport_due_to_overturning", - "units": "kg s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Ocean Salt Transport due to Overturning", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "sltovovrt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "so": { - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Salinity", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "so", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sob": { - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity_at_sea_floor", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "sea water salinity at sea floor", - "comment": "Model prognostic salinity at bottom-most model grid cell", - "dimensions": "longitude latitude time", - "out_name": "sob", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "soga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Mean Sea Water Salinity", - "comment": "", - "dimensions": "time", - "out_name": "soga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Salinity", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sosga": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Salinity", - "comment": "", - "dimensions": "time", - "out_name": "sosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sossq": { - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_salinity", - "units": "1e-06", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Salinity", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "sossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Aqueous Partial Pressure of CO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water_due_to_abiotic_component", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Surface Aqueous Partial Pressure of CO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water_due_to_natural_component", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Surface Aqueous Partial Pressure of CO2", - "comment": "", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talk": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", - "dimensions": "longitude latitude time depth0m", - "out_name": "talk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talknat": { - "modeling_realm": "ocnBgChem", - "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time depth0m", - "out_name": "talknat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talknatos": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent_due_to_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time", - "out_name": "talknatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talkos": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components)", - "dimensions": "longitude latitude time", - "out_name": "talkos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauucorr": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_x_stress_correction", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward X Stress Correction", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauucorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauuo": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_x_stress", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward X Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauuo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvcorr": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_y_stress_correction", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward Y Stress Correction", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauvcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvo": { - "modeling_realm": "ocean", - "standard_name": "surface_downward_y_stress", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward Y Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauvo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetao": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "thetao", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaoga": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field", - "dimensions": "time", - "out_name": "thetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thkcello": { - "modeling_realm": "ocean", - "standard_name": "cell_thickness", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Model Cell Thickness", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "thkcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tob": { - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature_at_sea_floor", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Potential Temperature at Sea Floor", - "comment": "Potential temperature at the ocean bottom-most grid cell.", - "dimensions": "longitude latitude time", - "out_name": "tob", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "K", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Temperature", - "comment": "temperature of liquid ocean. Note that the correct standard_name for this variable is 'sea_surface_temperature', not 'surface_temperature', but this was discovered too late to correct. To maintain consistency across CMIP5 models, the wrong standard_name will continue to be used.", - "dimensions": "longitude latitude time", - "out_name": "tos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tosga": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Temperature", - "comment": "This may differ from 'surface temperature' in regions of sea ice.This may differ from 'surface temperature' in regions of sea ice.For models using conservative temperature as prognostic field, they should report the SST as surface potent", - "dimensions": "time", - "out_name": "tosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tossq": { - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_temperature", - "units": "degC2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Temperature", - "comment": "square of temperature of liquid ocean, averaged over the day.", - "dimensions": "longitude latitude time", - "out_name": "tossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "umo": { - "modeling_realm": "ocean", - "standard_name": "ocean_mass_x_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Mass X Transport", - "comment": "X-ward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "umo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_x_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water X Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "uo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vmo": { - "modeling_realm": "ocean", - "standard_name": "ocean_mass_y_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Mass Y Transport", - "comment": "Y-ward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "vmo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_y_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Y Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "vo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "volo": { - "modeling_realm": "ocean", - "standard_name": "sea_water_volume", - "units": "m3", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Volume", - "comment": "Total volume of liquid seawater.", - "dimensions": "time", - "out_name": "volo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsf": { - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water", - "comment": "It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfcorr": { - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux Correction", - "comment": "It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsfcorr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfevap": { - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_evaporation", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Evaporation", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfevap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfpr": { - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_rainfall", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Rainfall", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfpr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfriver": { - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water From Rivers", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfsit": { - "modeling_realm": "ocean seaIce", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics", - "comment": "This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsfsit", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfcorr": { - "modeling_realm": "ocean", - "standard_name": "water_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux Correction", - "comment": "Positive flux implies correction adds water to ocean.", - "dimensions": "longitude latitude time", - "out_name": "wfcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfo": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water", - "comment": "computed as the water flux into the ocean divided by the area of the ocean portion of the grid cell. This is the sum of the next two variables in this table.", - "dimensions": "longitude latitude time", - "out_name": "wfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfonocorr": { - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_without_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water Without Flux Correction", - "comment": "computed as the water flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "wfonocorr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wmo": { - "modeling_realm": "ocean", - "standard_name": "upward_ocean_mass_transport", - "units": "kg s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Upward Ocean Mass Transport", - "comment": "Upward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "wmo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wo": { - "modeling_realm": "ocean", - "standard_name": "upward_sea_water_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Z Velocity", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "wo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfullo": { - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Ocean Layer", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time", - "out_name": "zfullo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zhalfo": { - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time", - "out_name": "zhalfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmeso": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "zmeso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmesoos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "zmesoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmicro": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude time depth0m", - "out_name": "zmicro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmicroos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "zmicroos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Mole Concetration of Other Zooplankton expressed as Carbon in sea water", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude time depth0m", - "out_name": "zmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmiscos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentraiton of Other Zooplankton expressed as Carbon in sea water", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude time", - "out_name": "zmiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zo2min": { - "modeling_realm": "ocnBgChem", - "standard_name": "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Depth of Oxygen Minimum Concentration", - "comment": "Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower)", - "dimensions": "longitude latitude time", - "out_name": "zo2min", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zooc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Zooplankton Carbon Concentration", - "comment": "sum of zooplankton carbon component concentrations", - "dimensions": "longitude latitude time depth0m", - "out_name": "zooc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoocos": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Zooplankton Carbon Concentration", - "comment": "sum of zooplankton carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "zoocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zos": { - "modeling_realm": "ocean", - "standard_name": "sea_surface_height_above_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Height Above Geoid", - "comment": "This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.", - "dimensions": "longitude latitude time", - "out_name": "zos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zossq": { - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_height_above_geoid", - "units": "m2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Height Above Geoid", - "comment": "Surface ocean geoid defines z=0.", - "dimensions": "longitude latitude time", - "out_name": "zossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zostoga": { - "modeling_realm": "ocean", - "standard_name": "global_average_thermosteric_sea_level_change", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Thermosteric Sea Level Change", - "comment": "There is no CMIP6 request for zosga nor zossga.", - "dimensions": "time", - "out_name": "zostoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zsatarag": { - "modeling_realm": "ocnBgChem", - "standard_name": "minimum_depth_of_aragonite_undersaturation_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Aragonite Saturation Depth", - "comment": "Depth of aragonite saturation horizon (0 if undersaturated at all depths, 'missing' if supersaturated at all depths; if multiple horizons exist, the shallowest should be taken).", - "dimensions": "longitude latitude time", - "out_name": "zsatarag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zsatcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "minimum_depth_of_calcite_undersaturation_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Calcite Saturation Depth", - "comment": "Depth of calcite saturation horizon (0 if undersaturated at all depths, and missing saturated through whole depth; if two or more horizons exist, then the shallowest is reported)", - "dimensions": "longitude latitude time", - "out_name": "zsatcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oyr.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oyr.json deleted file mode 100644 index 90e6de9fd0..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_Oyr.json +++ /dev/null @@ -1,2143 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table Oyr", - "realm": "ocnBgChem", - "frequency": "yr", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "365.00000", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "arag": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Aragonite Concentration", - "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude olevel time", - "out_name": "arag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bacc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Bacterial Carbon Concentration", - "comment": "Sum of bacterial carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bacc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtalk": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Alkalinity due to Biological Activity", - "comment": "Net total of biological terms in time rate of change of alkalinity", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtdic": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", - "comment": "Net total of biological terms in time rate of change of dissolved inorganic carbon", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtdife": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", - "comment": "Net total of biological terms in time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtdin": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Nitrogen Nutrient due to Biological Activity", - "comment": "Net total of biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtdip": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved phosphorus due to Biological Activity", - "comment": "Net of biological terms in time rate of change of dissolved phosphate", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bddtdisi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_silicon_in_sea_water_due_to_biological_processes", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Rate of Change of Dissolved Inorganic silicon due to Biological Activity", - "comment": "Net of biological terms in time rate of change of dissolved inorganic silicon", - "dimensions": "longitude latitude olevel time", - "out_name": "bddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "comment": "Sum of particulate organic iron component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as silicon in sea water", - "comment": "Sum of particulate silica component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "calc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Calcite Concentration", - "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude olevel time", - "out_name": "calc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc11": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc11_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of CFC-11 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc11", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc12": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc12_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of CFC-12 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc12", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chl": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Total Chlorophyll in sea water", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "chl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Diatom expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chldiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chldiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from additional phytoplankton component concentrations alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlpico": { - "modeling_realm": "ocnBgChem", - "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "co3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "co3abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water_due_to_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Carbonate ion Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "co3nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satarag": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Carbonate ion Concentration for sea water in equilibrium with pure Aragonite", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "co3satarag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Carbonate ion Concentration for sea water in equilibrium with pure Calcite", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "co3satcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "darag": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_dissolution", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Aragonite Dissolution", - "comment": "Rate of change of Aragonite carbon mole concentration due to dissolution", - "dimensions": "longitude latitude olevel time", - "out_name": "darag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Calcite Dissolution", - "comment": "Rate of change of Calcite carbon mole concentration due to dissolution", - "dimensions": "longitude latitude olevel time", - "out_name": "dcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "detoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Detrital Organic Carbon Concentration", - "comment": "Sum of detrital organic carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "detoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Dissolved Iron in sea water", - "comment": "Dissolved iron in sea water, including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", - "dimensions": "longitude latitude olevel time", - "out_name": "dfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difmxybo": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", - "units": "m4 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean momentum xy biharmonic diffusivity", - "comment": "Lateral biharmonic viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude olevel time", - "out_name": "difmxybo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difmxylo": { - "modeling_realm": "ocean", - "standard_name": "ocean_momentum_xy_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean momentum xy laplacian diffusivity", - "comment": "Lateral Laplacian viscosity applied to the momentum equitions.", - "dimensions": "longitude latitude olevel time", - "out_name": "difmxylo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrblo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_bolus_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean tracer diffusivity due to parameterized mesoscale advection", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced advective transport. Sometimes this diffusivity is called the 'thickness' diffusivity. For CMIP5, this diagnostic was called 'ocean tracer bolus laplacian diffusivity'. The CMIP6 name is physically more relevant.", - "dimensions": "longitude latitude olevel time", - "out_name": "diftrblo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "diftrelo": { - "modeling_realm": "ocean", - "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean tracer epineutral laplacian diffusivity", - "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced diffusive transport oriented along neutral or isopycnal directions. Sometimes this diffusivity is called the neutral diffusivity or isopycnal diffusivity or Redi diffusivity.", - "dimensions": "longitude latitude olevel time", - "out_name": "diftrelo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvho": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_heat_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean vertical heat diffusivity", - "comment": "Vertical/dianeutral diffusivity applied to prognostic temperature field.", - "dimensions": "longitude latitude olevel time", - "out_name": "difvho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "difvso": { - "modeling_realm": "ocean", - "standard_name": "ocean_vertical_salt_diffusivity", - "units": "m2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "ocean vertical salt diffusivity", - "comment": "Vertical/dianeutral diffusivity applied to prognostic salinity field.", - "dimensions": "longitude latitude olevel time", - "out_name": "difvso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dispkexyfo": { - "modeling_realm": "ocean", - "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "ocean kinetic energy dissipation per unit area due to xy friction", - "comment": "Depth integrated impacts on kinetic energy arising from lateral frictional dissipation associated with Laplacian and/or biharmonic viscosity. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude time", - "out_name": "dispkexyfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13c": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi13c", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14cabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon14_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", - "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi14cabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissic": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", - "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissicabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude olevel time", - "out_name": "dissicnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Organic Carbon Concentration", - "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions": "longitude latitude olevel time", - "out_name": "dissoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dms": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "dms", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpocdtcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Calcareous Phytoplankton", - "comment": "Primary (organic carbon) production by the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpocdtdiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Diazotrophs", - "comment": "Primary (organic carbon) production by the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpocdtpico": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Picophytoplankton", - "comment": "Primary (organic carbon) production by the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "exparag": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Aragonite Flux", - "comment": "Downward flux of Aragonite", - "dimensions": "longitude latitude olevel time", - "out_name": "exparag", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expc": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Carbon Flux", - "comment": "Downward flux of particulate organic carbon", - "dimensions": "longitude latitude olevel time", - "out_name": "expc", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Calcite Flux", - "comment": "Downward flux of Calcite", - "dimensions": "longitude latitude olevel time", - "out_name": "expcalc", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Iron Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expfe", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expn": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Nitrogen Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expn", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expp": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Phosphorus Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expp", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Silica Flux", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "expsi", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fediss": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Particle Source of Dissolved Iron", - "comment": "Dissolution, remineralization and desorption of iron back to the dissolved phase", - "dimensions": "longitude latitude olevel time", - "out_name": "fediss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fescav": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Nonbiogenic Iron Scavenging", - "comment": "Dissolved Fe removed through nonbiogenic scavenging onto particles", - "dimensions": "longitude latitude olevel time", - "out_name": "fescav", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg13co2": { - "modeling_realm": "ocnBgChem", - "standard_name": "air_sea_flux_of_13CO2", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 13CO2", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "fg13co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg14co2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_14_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 14CO2", - "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", - "dimensions": "longitude latitude time", - "out_name": "fg14co2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Total CO2", - "comment": "Gas exchange flux of CO2 (positive into ocean)", - "dimensions": "longitude latitude time", - "out_name": "fgco2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2abio": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_abiotic_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic CO2", - "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", - "dimensions": "longitude latitude time", - "out_name": "fgco2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2nat": { - "modeling_realm": "ocnBgChem", - "standard_name": "surface_downward_mass_flux_of_natural_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Natural CO2", - "comment": "Gas exchange flux of natural CO2 (positive into ocean)", - "dimensions": "longitude latitude time", - "out_name": "fgco2nat", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "graz": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Grazing of Phytoplankton by Zooplankton", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "graz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh4": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_ammonium_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Ammonium Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "nh4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no3": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_nitrate_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Nitrate Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "no3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Oxygen Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "o2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2sat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Oxygen Concentration at Saturation", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "o2sat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontempdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized dianeutral mixing", - "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontempdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontempmint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", - "units": "degC kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and conservative temperature", - "comment": "Full column sum of density*cell thickness*conservative temperature. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", - "dimensions": "longitude latitude time", - "out_name": "ocontempmint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized eddy advection", - "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized mesoscale diffusion", - "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemppsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized submesoscale advection", - "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemppsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemprmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content due to residual mean (sum of Eulerian + parameterized) advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemprmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocontemptend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water conservative temperature expressed as heat content", - "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "ocontemptend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottempdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized dianeutral mixing", - "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottempdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottempmint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", - "units": "degC kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and potential temperature", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "opottempmint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized eddy advection", - "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized mesoscale diffusion", - "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemppsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized submesoscale advection", - "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemppsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemprmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content due to residual mean advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemprmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "opottemptend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water potential temperature expressed as heat content", - "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use potential temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "opottemptend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized dianeutral mixing", - "comment": "Tendency of salt content for a grid cell from parameterized dianeutral mixing.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized eddy advection", - "comment": "Tendency of salt content for a grid cell from parameterized eddy advection (any form of eddy advection).", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpmdiff": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized mesoscale diffusion", - "comment": "Tendency of salt content for a grid cell from parameterized mesoscale eddy diffusion.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltpsmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to parameterized submesoscale advection", - "comment": "Tendency of salt content for a grid cell from parameterized submesoscale eddy advection.", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltpsmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osaltrmadvect": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content due to residual mean advection", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "osaltrmadvect", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "osalttend": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "tendency of sea water salinity expressed as salt content", - "comment": "Tendency of salt content for a grid cell from all processes.", - "dimensions": "longitude latitude olevel time", - "out_name": "osalttend", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "parag": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Aragonite Production", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "parag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Biogenic Iron Production", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "pbfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbsi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Biogenic Silica Production", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "pbsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Calcite Production", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "pcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pdi": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Diatom Primary Carbon Production", - "comment": "Primary (organic carbon) production by the diatom component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "pdi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ph": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "pH", - "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude olevel time", - "out_name": "ph", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phabio": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_abiotic_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1 (abiotic component)..", - "dimensions": "longitude latitude olevel time", - "out_name": "phabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phnat": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_ph_reported_on_total_scale_due_to_natural_component", - "units": "1.0", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude olevel time", - "out_name": "phnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", - "dimensions": "longitude latitude olevel time", - "out_name": "phyc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phycalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Diatoms expressed as Carbon in sea water", - "comment": "carbon from the diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phydiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Diazotrophs Expressed as Carbon in sea water", - "comment": "carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phydiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyfe": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Iron in sea water", - "comment": "sum of phytoplankton iron component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "phyfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phymisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from additional phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phymisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyn": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Nitrogen in sea water", - "comment": "sum of phytoplankton nitrogen component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "phyn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyp": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "comment": "sum of phytoplankton phosphorus components", - "dimensions": "longitude latitude olevel time", - "out_name": "phyp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypico": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phypico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "physi": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "comment": "sum of phytoplankton silica component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "physi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pnitrate": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Primary Carbon Production by Phytoplankton due to Nitrate Uptake Alone", - "comment": "Primary (organic carbon) production by phytoplankton due to nitrate uptake alone", - "dimensions": "longitude latitude olevel time", - "out_name": "pnitrate", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "po4": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Dissolved Inorganic Phosphorus Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "po4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pon": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "comment": "sum of particulate organic nitrogen component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "pon", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pop": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "comment": "sum of particulate organic phosphorus component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "pop", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pp": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Primary Carbon Production by Total Phytoplankton", - "comment": "total primary (organic carbon) production by phytoplankton", - "dimensions": "longitude latitude olevel time", - "out_name": "pp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppcalc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", - "comment": "Primary (organic carbon) production by the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppdiat": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Organic Carbon Production by Diatoms", - "comment": "Primary (organic carbon) production by the diatom component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppdiaz": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", - "comment": "Primary (organic carbon) production by the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Organic Carbon Production by Other Phytoplankton", - "comment": "Primary (organic carbon) production by other phytoplankton components alone", - "dimensions": "longitude latitude olevel time", - "out_name": "ppmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pppico": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", - "comment": "Primary (organic carbon) production by the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "pppico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "remoc": { - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_organic_matter_expressed_as_carbon_in_sea_water_due_to_remineralization", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Remineralization of Organic Carbon", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "remoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdoabsorb": { - "modeling_realm": "ocean", - "standard_name": "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "net rate of absorption of shortwave energy in ocean layer", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "rsdoabsorb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sf6": { - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_sulfur_hexafluoride_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of SF6 in sea water", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "sf6", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "si": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Dissolved Inorganic Silicon Concentration", - "comment": "", - "dimensions": "longitude latitude olevel time", - "out_name": "si", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "somint": { - "modeling_realm": "ocean", - "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_salinity", - "units": "1e-3 kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "integral wrt depth of product of sea water density and salinity", - "comment": "Full column sum of density*cell thickness*prognostic salinity. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", - "dimensions": "longitude latitude time", - "out_name": "somint", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talk": { - "modeling_realm": "ocnBgChem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", - "dimensions": "longitude latitude olevel time", - "out_name": "talk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talknat": { - "modeling_realm": "ocnBgChem", - "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude olevel time", - "out_name": "talknat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnkebto": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "tendency of ocean eddy kinetic energy content due to parameterized eddy advection", - "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", - "dimensions": "longitude latitude time", - "out_name": "tnkebto", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tnpeo": { - "modeling_realm": "ocean", - "standard_name": "tendency_of_ocean_potential_energy_content", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "tendency of ocean potential energy content", - "comment": "Rate that work is done against vertical stratification, as measured by the vertical heat and salt diffusivity. Report here as depth integrated two-dimensional field.", - "dimensions": "longitude latitude time", - "out_name": "tnpeo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmeso": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zmeso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmicro": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zmicro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmisc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concetration of Other Zooplankton expressed as Carbon in sea water", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude olevel time", - "out_name": "zmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zooc": { - "modeling_realm": "ocnBgChem", - "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Zooplankton Carbon Concentration", - "comment": "sum of zooplankton carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "zooc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SIday.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SIday.json deleted file mode 100644 index 289befec99..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SIday.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table SIday", - "realm": "seaIce", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "siconc": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_fraction", - "units": "%", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Ice Area Fraction", - "comment": "Area fraction of grid cell covered by sea ice", - "dimensions": "longitude latitude time typesi", - "out_name": "siconc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siconco": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Ice Area Fraction", - "comment": "Area fraction of grid cell covered by sea ice", - "dimensions": "longitude latitude time typesi", - "out_name": "siconco", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisnthick": { - "modeling_realm": "seaIce", - "standard_name": "surface_snow_thickness", - "units": "m", - "cell_methods": "area: mean where snow over sea_ice area: time: mean where sea_ice", - "cell_measures": "area: areacella", - "long_name": "Snow thickness", - "comment": "Actual thickness of snow (snow volume divided by snow-covered area)", - "dimensions": "longitude latitude time", - "out_name": "sisnthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sispeed": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_speed", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice speed", - "comment": "Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", - "dimensions": "longitude latitude time", - "out_name": "sispeed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitemptop": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Surface temperature of sea ice", - "comment": "Report surface temperature of snow where snow covers the sea ice.", - "dimensions": "longitude latitude time", - "out_name": "sitemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sithick": { - "modeling_realm": "seaIce ocean", - "standard_name": "sea_ice_thickness", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea Ice Thickness", - "comment": "Actual (floe) thickness of sea ice (NOT volume divided by grid area as was done in CMIP5)", - "dimensions": "longitude latitude time", - "out_name": "sithick", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitimefrac": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_time_fraction", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of time steps with sea ice", - "comment": "Fraction of time steps of the averaging period during which sea ice is present (siconc >0 ) in a grid cell", - "dimensions": "longitude latitude time", - "out_name": "sitimefrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siu": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "X-component of sea ice velocity", - "comment": "The x-velocity of ice on native model grid", - "dimensions": "longitude latitude time", - "out_name": "siu", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siv": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Y-component of sea ice velocity", - "comment": "The y-velocity of ice on native model grid", - "dimensions": "longitude latitude time", - "out_name": "siv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SImon.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SImon.json deleted file mode 100644 index ecfcd3c635..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_SImon.json +++ /dev/null @@ -1,1548 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table SImon", - "realm": "seaIce", - "frequency": "mon", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "siage": { - "modeling_realm": "seaIce", - "standard_name": "age_of_sea_ice", - "units": "s", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Age of sea ice", - "comment": "Age of sea ice", - "dimensions": "longitude latitude time", - "out_name": "siage", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sialb": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_albedo", - "units": "1.0", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice or snow albedo", - "comment": "Mean surface albedo of entire ice-covered part of grid cell", - "dimensions": "longitude latitude time", - "out_name": "sialb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siareaacrossline": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_transport_across_line", - "units": "m2 s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea ice area flux through straits", - "comment": "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 Archipelego = (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)", - "dimensions": "siline time", - "out_name": "siareaacrossline", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siarean": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area", - "units": "1e6 km2", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice area North", - "comment": "total area of sea ice in the Northern hemisphere", - "dimensions": "time", - "out_name": "siarean", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siareas": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area", - "units": "1e6 km2", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice area South", - "comment": "total area of sea ice in the Southern hemisphere", - "dimensions": "time", - "out_name": "siareas", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sicompstren": { - "modeling_realm": "seaIce", - "standard_name": "compressive_strength_of_sea_ice", - "units": "N m-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Compressive sea ice strength", - "comment": "Computed strength of the ice pack, defined as the energy (J m-2) dissipated per unit area removed from the ice pack under compression, and assumed proportional to the change in potential energy caused by ridging. For Hibler-type models, this is P (= P*hexp(-C(1-A)))", - "dimensions": "longitude latitude time", - "out_name": "sicompstren", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siconc": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_fraction", - "units": "%", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Ice Area Fraction", - "comment": "Area fraction of grid cell covered by sea ice", - "dimensions": "longitude latitude time typesi", - "out_name": "siconc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siconco": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Ice Area Fraction", - "comment": "Area fraction of grid cell covered by sea ice", - "dimensions": "longitude latitude time typesi", - "out_name": "siconco", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidconcdyn": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_area_fraction_due_to_dynamics", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice area fraction change from dynamics", - "comment": "Total change in sea-ice area fraction through dynamics-related processes (advection, divergence...)", - "dimensions": "longitude latitude time", - "out_name": "sidconcdyn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidconcth": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_area_fraction_due_to_thermodynamics", - "units": "s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice area fraction change from thermodynamics", - "comment": "Total change in sea-ice area fraction through thermodynamic processes", - "dimensions": "longitude latitude time", - "out_name": "sidconcth", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidivvel": { - "modeling_realm": "seaIce", - "standard_name": "divergence_of_sea_ice_velocity", - "units": "s-1", - "cell_methods": "area: mean where sea_ice (comment: mask=siconc) time: point", - "cell_measures": "area: areacella", - "long_name": "Divergence of the sea-ice velocity field", - "comment": "Divergence of sea-ice velocity field (first shear strain invariant)", - "dimensions": "longitude latitude time1", - "out_name": "sidivvel", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassdyn": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_dynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change from dynamics", - "comment": "Total change in sea-ice mass through dynamics-related processes (advection,...) divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmassdyn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassevapsubl": { - "modeling_realm": "seaIce", - "standard_name": "water_evaporation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through evaporation and sublimation", - "comment": "The rate of change of sea-ice mass change through evaporation and sublimation divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmassevapsubl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassgrowthbot": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through basal growth", - "comment": "The rate of change of sea ice mass due to vertical growth of existing sea ice at its base divided by grid-cell area.", - "dimensions": "longitude latitude time", - "out_name": "sidmassgrowthbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassgrowthwat": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_freezing_in_open_water", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through growth in supercooled open water (aka frazil)", - "comment": "The rate of change of sea ice mass due to sea ice formation in supercooled water (often through frazil formation) divided by grid-cell area. Together, sidmassgrowthwat and sidmassgrowthbot should give total ice growth", - "dimensions": "longitude latitude time", - "out_name": "sidmassgrowthwat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmasslat": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_lateral_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Lateral sea ice melt rate", - "comment": "The rate of change of sea ice mass through lateral melting divided by grid-cell area (report 0 if not explicitly calculated thermodynamically)", - "dimensions": "longitude latitude time", - "out_name": "sidmasslat", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassmeltbot": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_basal_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through bottom melting", - "comment": "The rate of change of sea ice mass through melting at the ice bottom divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmassmeltbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassmelttop": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_surface_melting", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through surface melting", - "comment": "The rate of change of sea ice mass through melting at the ice surface divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmassmelttop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmasssi": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_snow_conversion", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change through snow-to-ice conversion", - "comment": "The rate of change of sea ice mass due to transformation of snow to sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmasssi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmassth": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_sea_ice_amount_due_to_thermodynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "sea-ice mass change from thermodynamics", - "comment": "Total change in sea-ice mass from thermodynamic processes divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sidmassth", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmasstranx": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_x_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--MODEL", - "long_name": "X-component of sea-ice mass transport", - "comment": "Includes transport of both sea ice and snow by advection", - "dimensions": "longitude latitude time", - "out_name": "sidmasstranx", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidmasstrany": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_y_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--MODEL", - "long_name": "Y-component of sea-ice mass transport", - "comment": "Includes transport of both sea ice and snow by advection", - "dimensions": "longitude latitude time", - "out_name": "sidmasstrany", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidragbot": { - "modeling_realm": "seaIce", - "standard_name": "surface_drag_coefficient_for_momentum_in_water", - "units": "1.0", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Ocean drag coefficient", - "comment": "Oceanic drag coefficient that is used to calculate the oceanic momentum drag on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sidragbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sidragtop": { - "modeling_realm": "seaIce", - "standard_name": "surface_drag_coefficient_for_momentum_in_air", - "units": "1.0", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Atmospheric drag coefficient", - "comment": "Atmospheric drag coefficient that is used to calculate the atmospheric momentum drag on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sidragtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siextentn": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_extent", - "units": "1e6 km2", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice extent North", - "comment": "Total area of all Northern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", - "dimensions": "time", - "out_name": "siextentn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siextents": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_extent", - "units": "1e6 km2", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice extent South", - "comment": "Total area of all Southern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", - "dimensions": "time", - "out_name": "siextents", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sifb": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_freeboard", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice freeboard", - "comment": "Mean height of sea-ice surface (=snow-ice interface when snow covered) above sea level", - "dimensions": "longitude latitude time", - "out_name": "sifb", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflcondbot": { - "modeling_realm": "seaIce", - "standard_name": "conductive_heat_flux_at_sea_ice_bottom", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Net conductive heat fluxes in ice at the bottom", - "comment": "the net heat conduction flux at the ice base", - "dimensions": "longitude latitude time", - "out_name": "siflcondbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflcondtop": { - "modeling_realm": "seaIce", - "standard_name": "conductive_heat_flux_at_sea_ice_surface", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Net conductive heat flux in ice at the surface", - "comment": "the net heat conduction flux at the ice surface", - "dimensions": "longitude latitude time", - "out_name": "siflcondtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflfwbot": { - "modeling_realm": "seaIce", - "standard_name": "freshwater_flux_from_ice", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Freshwater flux from sea ice", - "comment": "Total flux of fresh water from water into sea ice divided by grid-cell area; This flux is negative during ice growth (liquid water mass decreases, hence upward flux of freshwater), positive during ice melt (liquid water mass increases, hence downward flux of freshwater)", - "dimensions": "longitude latitude time", - "out_name": "siflfwbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflfwdrain": { - "modeling_realm": "seaIce", - "standard_name": "freshwater_flux_from_ice_surface", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Freshwater flux from sea-ice surface", - "comment": "Total flux of fresh water from sea-ice surface into underlying ocean. This combines both surface melt water that drains directly into the ocean and the drainage of surface melt pond. By definition, this flux is always positive.", - "dimensions": "longitude latitude time", - "out_name": "siflfwdrain", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sifllatstop": { - "modeling_realm": "seaIce", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Net latent heat flux over sea ice", - "comment": "the net latent heat flux over sea ice", - "dimensions": "longitude latitude time", - "out_name": "sifllatstop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sifllwdtop": { - "modeling_realm": "seaIce", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Downwelling longwave flux over sea ice", - "comment": "the downwelling longwave flux over sea ice (always positive)", - "dimensions": "longitude latitude time", - "out_name": "sifllwdtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sifllwutop": { - "modeling_realm": "seaIce", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Upward longwave flux over sea ice", - "comment": "the upward longwave flux over sea ice (always negative)", - "dimensions": "longitude latitude time", - "out_name": "sifllwutop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflsaltbot": { - "modeling_realm": "seaIce", - "standard_name": "salt_flux_from_ice", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Salt flux from sea ice", - "comment": "Total flux of salt from water into sea ice divided by grid-cell area; salt flux is upward (negative) during ice growth when salt is embedded into the ice and downward (positive) during melt when salt from sea ice is again released to the ocean", - "dimensions": "longitude latitude time", - "out_name": "siflsaltbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflsenstop": { - "modeling_realm": "seaIce", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Net sensible heat flux over sea ice", - "comment": "the net sensible heat flux over sea ice", - "dimensions": "longitude latitude time", - "out_name": "siflsenstop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflsensupbot": { - "modeling_realm": "seaIce", - "standard_name": "ice_ocean_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Net sensible heat flux under sea ice", - "comment": "the net sensible heat flux under sea ice from the ocean", - "dimensions": "longitude latitude time", - "out_name": "siflsensupbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflswdbot": { - "modeling_realm": "seaIce", - "standard_name": "bottom_downwelling_shortwave_flux_into_ocean", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Downwelling shortwave flux under sea ice", - "comment": "the downwelling shortwave flux underneath sea ice (always positive)", - "dimensions": "longitude latitude time", - "out_name": "siflswdbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflswdtop": { - "modeling_realm": "seaIce", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Downwelling shortwave flux over sea ice", - "comment": "the downwelling shortwave flux over sea ice (always positive by sign convention)", - "dimensions": "longitude latitude time", - "out_name": "siflswdtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siflswutop": { - "modeling_realm": "seaIce", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Upward shortwave flux over sea ice", - "comment": "the upward shortwave flux over sea ice (always negative)", - "dimensions": "longitude latitude time", - "out_name": "siflswutop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforcecoriolx": { - "modeling_realm": "seaIce", - "standard_name": "coriolis_force_on_sea_ice_x", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Coriolis force term in force balance (x-component)", - "comment": "X-component of force on sea ice caused by coriolis force", - "dimensions": "longitude latitude time", - "out_name": "siforcecoriolx", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforcecorioly": { - "modeling_realm": "seaIce", - "standard_name": "coriolis_force_on_sea_ice_y", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Coriolis force term in force balance (y-component)", - "comment": "Y-component of force on sea ice caused by coriolis force", - "dimensions": "longitude latitude time", - "out_name": "siforcecorioly", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforceintstrx": { - "modeling_realm": "seaIce", - "standard_name": "internal_stress_in_sea_ice_x", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Internal stress term in force balance (x-component)", - "comment": "X-component of force on sea ice caused by internal stress (divergence of sigma)", - "dimensions": "longitude latitude time", - "out_name": "siforceintstrx", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforceintstry": { - "modeling_realm": "seaIce", - "standard_name": "internal_stress_in_sea_ice_y", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Internal stress term in force balance (y-component)", - "comment": "Y-component of force on sea ice caused by internal stress (divergence of sigma)", - "dimensions": "longitude latitude time", - "out_name": "siforceintstry", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforcetiltx": { - "modeling_realm": "seaIce", - "standard_name": "sea_surface_tilt_force_on_sea_ice_x", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Sea-surface tilt term in force balance (x-component)", - "comment": "X-component of force on sea ice caused by sea-surface tilt", - "dimensions": "longitude latitude time", - "out_name": "siforcetiltx", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siforcetilty": { - "modeling_realm": "seaIce", - "standard_name": "sea_surface_tilt_force_on_sea_ice_y", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Sea-surface tilt term in force balance (y-component)", - "comment": "Y-component of force on sea ice caused by sea-surface tilt", - "dimensions": "longitude latitude time", - "out_name": "siforcetilty", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sihc": { - "modeling_realm": "seaIce", - "standard_name": "integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", - "units": "J m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea-ice heat content per unit area", - "comment": "Heat content of all ice in grid cell divided by total grid-cell area. Water at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of snow, but does include heat content of brine. Heat content is always negative, since both the sensible and the latent heat content of ice are less than that of water", - "dimensions": "longitude latitude time", - "out_name": "sihc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siitdconc": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_area_fraction_over_categories", - "units": "%", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice area fractions in thickness categories", - "comment": "Area fraction of grid cell covered by each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", - "dimensions": "longitude latitude iceband time", - "out_name": "siitdconc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siitdsnconc": { - "modeling_realm": "seaIce", - "standard_name": "snow_area_fraction_over_categories", - "units": "%", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siitdconc)", - "cell_measures": "area: areacella", - "long_name": "Snow area fractions in thickness categories", - "comment": "Area fraction of grid cell covered by snow in each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", - "dimensions": "longitude latitude iceband time", - "out_name": "siitdsnconc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siitdsnthick": { - "modeling_realm": "seaIce", - "standard_name": "snow_thickness_over_categories", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siitdconc)", - "cell_measures": "area: areacella", - "long_name": "Snow thickness in thickness categories", - "comment": "Actual thickness of snow in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", - "dimensions": "longitude latitude iceband time", - "out_name": "siitdsnthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siitdthick": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_thickness_over_categories", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siitdconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice thickness in thickness categories", - "comment": "Actual (floe) thickness of sea ice in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", - "dimensions": "longitude latitude iceband time", - "out_name": "siitdthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "simass": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_amount", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea-ice mass per area", - "comment": "Total mass of sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "simass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "simassacrossline": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_transport_across_line", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea mass area flux through straits", - "comment": "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 Archipelego = (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)", - "dimensions": "siline time", - "out_name": "simassacrossline", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "simpconc": { - "modeling_realm": "seaIce", - "standard_name": "area_fraction", - "units": "%", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Percentage Cover of Sea-Ice by Meltpond", - "comment": "Fraction of sea ice, by area, which is covered by melt ponds, giving equal weight to every square metre of sea ice .", - "dimensions": "longitude latitude time typemp", - "out_name": "simpconc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "simpmass": { - "modeling_realm": "seaIce", - "standard_name": "surface_liquid_water_amount", - "units": "kg m-2", - "cell_methods": "area: time: mean where sea_ice_melt_pond (comment: mask=simpconc)", - "cell_measures": "area: areacella", - "long_name": "Meltpond Mass per Unit Area", - "comment": "Meltpond mass per area of sea ice.", - "dimensions": "longitude latitude time", - "out_name": "simpmass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "simprefrozen": { - "modeling_realm": "seaIce", - "standard_name": "melt_pond_refrozen_ice", - "units": "m", - "cell_methods": "area: time: mean where sea_ice_melt_pond (comment: mask=simpconc)", - "cell_measures": "area: areacella", - "long_name": "Thickness of Refrozen Ice on Melt Pond", - "comment": "Volume of refrozen ice on melt ponds divided by meltpond covered area", - "dimensions": "longitude latitude time", - "out_name": "simprefrozen", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sipr": { - "modeling_realm": "seaIce", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Rainfall rate over sea ice", - "comment": "mass of liquid precipitation falling onto sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sipr", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sirdgconc": { - "modeling_realm": "seaIce", - "standard_name": "fraction_of_ridged_sea_ice", - "units": "1.0", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Percentage Cover of Sea-Ice by Ridging", - "comment": "Fraction of sea ice, by area, which is covered by sea ice ridges, giving equal weight to every square metre of sea ice .", - "dimensions": "longitude latitude time", - "out_name": "sirdgconc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sirdgthick": { - "modeling_realm": "seaIce", - "standard_name": "thickness_of_ridged_sea_ice", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=sirdgconc - ridges only)", - "cell_measures": "area: areacella", - "long_name": "Ridged ice thickness", - "comment": "Sea Ice Ridge Height (representing mean height over the ridged area)", - "dimensions": "longitude latitude time", - "out_name": "sirdgthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisali": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_salinity", - "units": "0.001", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea ice salinity", - "comment": "Mean sea-ice salinity of all sea ice in grid cell", - "dimensions": "longitude latitude time", - "out_name": "sisali", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisaltmass": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_salt_mass", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass of salt in sea ice per area", - "comment": "Total mass of all salt in sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sisaltmass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sishevel": { - "modeling_realm": "seaIce", - "standard_name": "maximum_shear_of_sea_ice_velocity", - "units": "s-1", - "cell_methods": "area: mean where sea_ice (comment: mask=siconc) time: point", - "cell_measures": "area: areacella", - "long_name": "Maximum shear of sea-ice velocity field", - "comment": "Maximum shear of sea-ice velocity field (second shear strain invariant)", - "dimensions": "longitude latitude time1", - "out_name": "sishevel", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisnconc": { - "modeling_realm": "seaIce", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Snow area fraction", - "comment": "Fraction of sea ice, by area, which is covered by snow, giving equal weight to every square metre of sea ice . Exclude snow that lies on land or land ice.", - "dimensions": "longitude latitude time", - "out_name": "sisnconc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisnhc": { - "modeling_realm": "seaIce", - "standard_name": "thermal_energy_content_of_surface_snow", - "units": "J m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Snow-heat content per unit area", - "comment": "Heat-content of all snow in grid cell divided by total grid-cell area. Snow-water equivalent at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of sea ice.", - "dimensions": "longitude latitude time", - "out_name": "sisnhc", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisnmass": { - "modeling_realm": "seaIce", - "standard_name": "liquid_water_content_of_surface_snow", - "units": "kg m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Snow mass per area", - "comment": "Total mass of snow on sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sisnmass", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sisnthick": { - "modeling_realm": "seaIce", - "standard_name": "surface_snow_thickness", - "units": "m", - "cell_methods": "area: mean where snow over sea_ice area: time: mean where sea_ice", - "cell_measures": "area: areacella", - "long_name": "Snow thickness", - "comment": "Actual thickness of snow (snow volume divided by snow-covered area)", - "dimensions": "longitude latitude time", - "out_name": "sisnthick", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sispeed": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_speed", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea-ice speed", - "comment": "Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", - "dimensions": "longitude latitude time", - "out_name": "sispeed", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistremax": { - "modeling_realm": "seaIce", - "standard_name": "maximum_shear_stress", - "units": "N m-1", - "cell_methods": "area: mean where sea_ice (comment: mask=siconc) time: point", - "cell_measures": "area: areacella", - "long_name": "Maximum shear stress in sea ice", - "comment": "Maximum shear stress in sea ice (second stress invariant)", - "dimensions": "longitude latitude time1", - "out_name": "sistremax", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistresave": { - "modeling_realm": "seaIce", - "standard_name": "average_normal_stress", - "units": "N m-1", - "cell_methods": "area: mean where sea_ice (comment: mask=siconc) time: point", - "cell_measures": "area: areacella", - "long_name": "Average normal stress in sea ice", - "comment": "Average normal stress in sea ice (first stress invariant)", - "dimensions": "longitude latitude time1", - "out_name": "sistresave", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistrxdtop": { - "modeling_realm": "seaIce", - "standard_name": "surface_downward_x_stress", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "X-component of atmospheric stress on sea ice", - "comment": "X-component of atmospheric stress on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sistrxdtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistrxubot": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_base_upward_x_stress", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "X-component of ocean stress on sea ice", - "comment": "X-component of ocean stress on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sistrxubot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistrydtop": { - "modeling_realm": "seaIce", - "standard_name": "surface_downward_y_stress", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Y-component of atmospheric stress on sea ice", - "comment": "Y-component of atmospheric stress on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sistrydtop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sistryubot": { - "modeling_realm": "seaIce", - "standard_name": "downward_y_stress_at_sea_ice_base", - "units": "N m-2", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Y-component of ocean stress on sea ice", - "comment": "Y-component of ocean stress on sea ice", - "dimensions": "longitude latitude time", - "out_name": "sistryubot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitempbot": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_bottom_temperature", - "units": "K", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Temperature at ice-ocean interface", - "comment": "Report temperature at interface, NOT temperature within lowermost model layer", - "dimensions": "longitude latitude time", - "out_name": "sitempbot", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitempsnic": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Temperature at snow-ice interface", - "comment": "Report surface temperature of ice where snow thickness is zero", - "dimensions": "longitude latitude time", - "out_name": "sitempsnic", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitemptop": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_surface_temperature", - "units": "K", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Surface temperature of sea ice", - "comment": "Report surface temperature of snow where snow covers the sea ice.", - "dimensions": "longitude latitude time", - "out_name": "sitemptop", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sithick": { - "modeling_realm": "seaIce ocean", - "standard_name": "sea_ice_thickness", - "units": "m", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "area: areacella", - "long_name": "Sea Ice Thickness", - "comment": "Actual (floe) thickness of sea ice (NOT volume divided by grid area as was done in CMIP5)", - "dimensions": "longitude latitude time", - "out_name": "sithick", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sitimefrac": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_time_fraction", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of time steps with sea ice", - "comment": "Fraction of time steps of the averaging period during which sea ice is present (siconc >0 ) in a grid cell", - "dimensions": "longitude latitude time", - "out_name": "sitimefrac", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siu": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_x_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "X-component of sea ice velocity", - "comment": "The x-velocity of ice on native model grid", - "dimensions": "longitude latitude time", - "out_name": "siu", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "siv": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_y_velocity", - "units": "m s-1", - "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc)", - "cell_measures": "--MODEL", - "long_name": "Y-component of sea ice velocity", - "comment": "The y-velocity of ice on native model grid", - "dimensions": "longitude latitude time", - "out_name": "siv", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sivol": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_thickness", - "units": "m", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea-ice volume per area", - "comment": "Total volume of sea ice divided by grid-cell area (this used to be called ice thickness in CMIP5)", - "dimensions": "longitude latitude time", - "out_name": "sivol", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sivoln": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_volume", - "units": "1e3 km3", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice volume North", - "comment": "total volume of sea ice in the Northern hemisphere", - "dimensions": "time", - "out_name": "sivoln", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sivols": { - "modeling_realm": "seaIce", - "standard_name": "sea_ice_volume", - "units": "1e3 km3", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Sea ice volume South", - "comment": "total volume of sea ice in the Southern hemisphere", - "dimensions": "time", - "out_name": "sivols", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmassdyn": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_snow_mass_due_to_sea_ice_dynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Mass Rate of Change through Avection by Sea-ice Dynamics", - "comment": "the rate of change of snow mass through advection with sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmassdyn", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmassmelt": { - "modeling_realm": "seaIce", - "standard_name": "surface_snow_melt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Mass Rate of Change through Melt", - "comment": "the rate of change of snow mass through melt divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmassmelt", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmasssi": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Mass Rate of Change through Snow-to-Ice Conversion", - "comment": "the rate of change of snow mass due to transformation of snow to sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmasssi", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmasssnf": { - "modeling_realm": "seaIce", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "snow mass change through snow fall", - "comment": "mass of solid precipitation falling onto sea ice divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmasssnf", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmasssubl": { - "modeling_realm": "seaIce", - "standard_name": "surface_snow_sublimation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Mass Rate of Change through Evaporation or Sublimation", - "comment": "the rate of change of snow mass through sublimation and evaporation divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmasssubl", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sndmasswindrif": { - "modeling_realm": "seaIce", - "standard_name": "tendency_of_snow_mass_due_to_drifting_snow", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Mass Rate of Change through Wind Drift of Snow", - "comment": "the rate of change of snow mass through wind drift of snow (from sea-ice into the sea) divided by grid-cell area", - "dimensions": "longitude latitude time", - "out_name": "sndmasswindrif", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snmassacrossline": { - "modeling_realm": "seaIce", - "standard_name": "snow_mass_transport_across_line", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow mass flux through straits", - "comment": "net (sum of transport in all directions) snow mass 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 Archipelego = (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)", - "dimensions": "siline time", - "out_name": "snmassacrossline", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_coordinate.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_coordinate.json deleted file mode 100644 index fb408219f9..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_coordinate.json +++ /dev/null @@ -1,2929 +0,0 @@ -{ - "axis_entry": { - "alev1": { - "standard_name": "", - "units": "", - "axis": "Z", - "long_name": "lowest atmospheric model level", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "alt16": { - "standard_name": "altitude", - "units": "m", - "axis": "Z", - "long_name": "altitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "alt16", - "positive": "up", - "requested": [ - "0", - "250", - "750", - "1250", - "1750", - "2250", - "2750", - "3500", - "4500", - "6000", - "8000", - "10000", - "12000", - "14500", - "16000", - "18000" - ], - "requested_bounds": [ - "-99000.0", - "0.0", - "0.0", - "500.0", - "500.0", - "1000.0", - "1000.0", - "1500.0", - "1500.0", - "2000.0", - "2000.0", - "2500.0", - "2500.0", - "3000.0", - "3000.0", - "4000.0", - "4000.0", - "5000.0", - "5000.0", - "7000.0", - "7000.0", - "9000.0", - "9000.0", - "11000.0", - "11000.0", - "13000.0", - "13000.0", - "15000.0", - "15000.0", - "17000.0", - "17000.0", - "99000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "alt40": { - "standard_name": "altitude", - "units": "m", - "axis": "Z", - "long_name": "altitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "alt40", - "positive": "up", - "requested": [ - "240.", - "720.", - "1200.", - "1680.", - "2160.", - "2640.", - "3120.", - "3600.", - "4080.", - "4560.", - "5040.", - "5520.", - "6000.", - "6480.", - "6960.", - "7440.", - "7920.", - "8400.", - "8880.", - "9360.", - "9840.", - "10320.", - "10800.", - "11280.", - "11760.", - "12240.", - "12720.", - "13200.", - "13680.", - "14160.", - "14640.", - "15120.", - "15600.", - "16080.", - "16560.", - "17040.", - "17520.", - "18000.", - "18480.", - "18960." - ], - "requested_bounds": [ - "0.0", - "480.0", - "480.0", - "960.0", - "960.0", - "1440.0", - "1440.0", - "1920.0", - "1920.0", - "2400.0", - "2400.0", - "2880.0", - "2880.0", - "3360.0", - "3360.0", - "3840.0", - "3840.0", - "4320.0", - "4320.0", - "4800.0", - "4800.0", - "5280.0", - "5280.0", - "5760.0", - "5760.0", - "6240.0", - "6240.0", - "6720.0", - "6720.0", - "7200.0", - "7200.0", - "7680.0", - "7680.0", - "8160.0", - "8160.0", - "8640.0", - "8640.0", - "9120.0", - "9120.0", - "9600.0", - "9600.0", - "10080.0", - "10080.0", - "10560.0", - "10560.0", - "11040.0", - "11040.0", - "11520.0", - "11520.0", - "12000.0", - "12000.0", - "12480.0", - "12480.0", - "12960.0", - "12960.0", - "13440.0", - "13440.0", - "13920.0", - "13920.0", - "14400.0", - "14400.0", - "14880.0", - "14880.0", - "15360.0", - "15360.0", - "15840.0", - "15840.0", - "16320.0", - "16320.0", - "16800.0", - "16800.0", - "17280.0", - "17280.0", - "17760.0", - "17760.0", - "18240.0", - "18240.0", - "18720.0", - "18720.0", - "19200.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "alternate_hybrid_sigma": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = ap + b*ps", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", - "z_factors": "ap: ap b: b ps: ps", - "bounds_values": "" - }, - "basin": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean basin", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "basin", - "positive": "", - "requested": [ - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "dbze": { - "standard_name": "equivalent_reflectivity_factor", - "units": "dBZ", - "axis": "", - "long_name": "CloudSat simulator equivalent radar reflectivity factor", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "dbze", - "positive": "", - "requested": [ - "-47.5", - "-42.5", - "-37.5", - "-32.5", - "-27.5", - "-22.5", - "-17.5", - "-12.5", - "-7.5", - "-2.5", - "2.5", - "7.5", - "12.5", - "17.5", - "22.5" - ], - "requested_bounds": [ - "-50.0", - "-45.0", - "-45.0", - "-40.0", - "-40.0", - "-35.0", - "-35.0", - "-30.0", - "-30.0", - "-25.0", - "-25.0", - "-20.0", - "-20.0", - "-15.0", - "-15.0", - "-10.0", - "-10.0", - "-5.0", - "-5.0", - "0.0", - "0.0", - "5.0", - "5.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth0m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "100.0", - "valid_min": "0.0", - "value": "0.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth100m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "120.0", - "valid_min": "80.0", - "value": "100.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth2000m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "2200.0", - "valid_min": "1980.0", - "value": "2000", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth300m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "320.0", - "valid_min": "280.0", - "value": "300", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth700m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "720.0", - "valid_min": "680.0", - "value": "700", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "depth_coord": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "ocean depth coordinate", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "12000.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "effectRadIc": { - "standard_name": "", - "units": "micron", - "axis": "", - "long_name": "Effective Radius [Values to be specified]", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "effectRadIc", - "positive": "", - "requested": [ - "5.", - "15.", - "25.", - "35.", - "50.", - "75." - ], - "requested_bounds": [ - "0.0", - "10.0", - "10.0", - "20.0", - "20.0", - "30.0", - "30.0", - "40.0", - "40.0", - "60.0", - "60.0", - "90.0" - ], - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "effectRadLi": { - "standard_name": "", - "units": "micron", - "axis": "", - "long_name": "Effective Radius [Values to be specified]", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "effectRadLi", - "positive": "", - "requested": [ - "4.", - "9.", - "11.5", - "14.", - "17.5", - "25." - ], - "requested_bounds": [ - "0.0", - "8.0", - "8.0", - "10.0", - "10.0", - "13.0", - "13.0", - "15.0", - "15.0", - "20.0", - "20.0", - "30.0" - ], - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "height100m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "120.0", - "valid_min": "80.0", - "value": "100.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "height10m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "30.0", - "valid_min": "1.0", - "value": "10.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "height2m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "10.0", - "valid_min": "1.0", - "value": "2.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "hybrid_height": { - "standard_name": "atmosphere_hybrid_height_coordinate", - "units": "m", - "axis": "Z", - "long_name": "hybrid height coordinate", - "climatology": "", - "formula": "z = a + b*orog", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", - "z_factors": "a: lev b: b orog: orog", - "bounds_values": "" - }, - "iceband": { - "standard_name": "sea_ice_thickness", - "units": "m", - "axis": "", - "long_name": "Ice Depth Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "iceband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "icesheet": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "Ice Sheet", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "region", - "positive": "", - "requested": [ - "antarctic", - "greenland" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "landUse": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land use type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "landuse", - "positive": "", - "requested": [ - "primary_and_secondary_land", - "pastures", - "crops", - "urban" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "latitude": { - "standard_name": "latitude", - "units": "degrees_north", - "axis": "Y", - "long_name": "latitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lat", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "90.0", - "valid_min": "-90.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "location": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "location index", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "loc", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "integer", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "longitude": { - "standard_name": "longitude", - "units": "degrees_east", - "axis": "X", - "long_name": "longitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lon", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "360.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "misrBands": { - "standard_name": "wave_frequency", - "units": "s-1", - "axis": "", - "long_name": "MISR Spectral Frequency Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "spectband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "natural_log_pressure": { - "standard_name": "atmosphere_ln_pressure_coordinate", - "units": "", - "axis": "Z", - "long_name": "atmosphere natural log pressure coordinate", - "climatology": "", - "formula": "p = p0 * exp(-lev)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "20.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "p0: p0 lev: lev_bnds", - "z_factors": "p0: p0 lev: lev", - "bounds_values": "" - }, - "ocean_double_sigma": { - "standard_name": "ocean_double_sigma", - "units": "", - "axis": "Z", - "long_name": "ocean double sigma coordinate", - "climatology": "", - "formula": "for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", - "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", - "bounds_values": "" - }, - "ocean_s": { - "standard_name": "ocean_s_coordinate", - "units": "", - "axis": "Z", - "long_name": "ocean s-coordinate", - "climatology": "", - "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "0.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", - "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", - "bounds_values": "" - }, - "ocean_sigma": { - "standard_name": "ocean_sigma_coordinate", - "units": "", - "axis": "Z", - "long_name": "ocean sigma coordinate", - "climatology": "", - "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "0.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", - "z_factors": "sigma: lev eta: eta depth: depth", - "bounds_values": "" - }, - "ocean_sigma_z": { - "standard_name": "ocean_sigma_z", - "units": "", - "axis": "Z", - "long_name": "ocean sigma over z coordinate", - "climatology": "", - "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", - "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", - "bounds_values": "" - }, - "olayer100m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "100.0", - "valid_min": "0.0", - "value": "50.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 100.0" - }, - "oline": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean passage", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "line", - "positive": "", - "requested": [ - "barents_opening", - "bering_strait", - "canadian_archipelago", - "denmark_strait", - "drake_passage", - "english_channel", - "pacific_equatorial_undercurrent", - "faroe_scotland_channel", - "florida_bahamas_strait", - "fram_strait", - "iceland_faroe_channel", - "indonesian_throughflow", - "mozambique_channel", - "taiwan_luzon_straits", - "windward_passage" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p10": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "1000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p100": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "10000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p1000": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "100000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p200": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "20000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p220": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "22000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "44000.0 0.0" - }, - "p500": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "50000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p560": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "56000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "68000.0 44000.0" - }, - "p700": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "70000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "p840": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "84000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "100000.0 68000.0" - }, - "p850": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "85000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "pl700": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "70000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "85000.0 60000.0" - }, - "plev10": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "85000.", - "70000.", - "50000.", - "25000.", - "15000.", - "10000.", - "7000.", - "5000.", - "1000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev19": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "500.", - "100." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev23": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "100.", - "40." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev27": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "97500.", - "95000.", - "92500.", - "90000.", - "87500.", - "85000.", - "82500.", - "80000.", - "77500.", - "75000.", - "70000.", - "65000.", - "60000.", - "55000.", - "50000.", - "45000.", - "40000.", - "35000.", - "30000.", - "25000.", - "22500.", - "20000.", - "17500.", - "15000.", - "12500.", - "10000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev3": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "85000.", - "50000.", - "25000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev39": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "17000.", - "15000.", - "13000.", - "11500.", - "10000.", - "9000.", - "8000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1500.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "150.", - "100.", - "70.", - "50.", - "40.", - "30.", - "20.", - "15.", - "10.", - "7.", - "5.", - "3." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev3h": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "10000.", - "1000.", - "100." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev4": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "92500.", - "85000.", - "50000.", - "25000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev7": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": [ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds": [ - "100000.", - "80000.", - "80000.", - "68000.", - "68000.", - "56000.", - "56000.", - "44000.", - "44000.", - "31000.", - "31000.", - "18000.", - "18000.", - " 0." - ], - "stored_direction": "decreasing", - "tolerance": "0.001", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev7c": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": [ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds": [ - "100000.0", - "80000.0", - "80000.0", - "68000.0", - "68000.0", - "56000.0", - "56000.0", - "44000.0", - "44000.0", - "31000.0", - "31000.0", - "18000.0", - "18000.0", - "0.0" - ], - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev7h": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "25000.", - "5000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "plev8": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "85000.", - "70000.", - "50000.", - "25000.", - "10000.", - "5000.", - "1000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "rho": { - "standard_name": "sea_water_potential_density", - "units": "kg m-3", - "axis": "Z", - "long_name": "potential density referenced to 2000 dbar", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "rho", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "scatratio": { - "standard_name": "backscattering_ratio", - "units": "1.0", - "axis": "", - "long_name": "lidar backscattering ratio", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "scatratio", - "positive": "", - "requested": [ - "0.005", - "0.605", - "2.1", - "4.", - "6.", - "8.5", - "12.5", - "17.5", - "22.5", - "27.5", - "35.", - "45.", - "55.", - "70.", - "50040." - ], - "requested_bounds": [ - "0.0", - "0.01", - "0.01", - "1.2", - "1.2", - "3.0", - "3.0", - "5.0", - "5.0", - "7.0", - "7.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0", - "25.0", - "30.0", - "30.0", - "40.0", - "40.0", - "50.0", - "50.0", - "60.0", - "60.0", - "80.0", - "80.0", - "100000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "0.005, 0.605, 2.1, 4, 6, 8.5, 12.5, 17.5, 22.5, 27.5, 35, 45, 55, 70, 50040", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 0.01 1.2 3.0 5.0 7.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 80.0 100000.0" - }, - "sdepth": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "200.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "sdepth1": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "0.2", - "valid_min": "0.0", - "value": "0.05", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 0.1" - }, - "siline": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean passage", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "line", - "positive": "", - "requested": [ - "Fram", - "Strait,", - "Canadian", - "Archipelego,", - "Barents", - "opening,", - "Bering", - "Strait" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "site": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "site index", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "site", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "integer", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "smooth_level": { - "standard_name": "atmosphere_sleve_coordinate", - "units": "m", - "axis": "Z", - "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", - "climatology": "", - "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "800000.0", - "valid_min": "-200.0", - "value": "", - "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "bounds_values": "" - }, - "snowband": { - "standard_name": "surface_snow_thickness", - "units": "m", - "axis": "", - "long_name": "Snow Depth Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "snowband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "snowdepth": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "200.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "spectband": { - "standard_name": "sensor_band_central_radiation_wavenumber", - "units": "m-1", - "axis": "", - "long_name": "Spectral Frequency Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "spectband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "standard_hybrid_sigma": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = a*p0 + b*ps", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", - "z_factors": "p0: p0 a: a b: b ps: ps", - "bounds_values": "" - }, - "standard_sigma": { - "standard_name": "atmosphere_sigma_coordinate", - "units": "", - "axis": "Z", - "long_name": "sigma coordinate", - "climatology": "", - "formula": "p = ptop + sigma*(ps - ptop)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", - "z_factors": "ptop: ptop sigma: lev ps: ps", - "bounds_values": "" - }, - "sza5": { - "standard_name": "solar_zenith_angle", - "units": "degree", - "axis": "", - "long_name": "solar zenith angle", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "sza", - "positive": "", - "requested": [ - "0.", - "20.", - "40.", - "60.", - "80." - ], - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "tau": { - "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", - "axis": "", - "long_name": "cloud optical thickness", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "tau", - "positive": "", - "requested": [ - "0.15", - "0.8", - "2.45", - "6.5", - "16.2", - "41.5", - "100." - ], - "requested_bounds": [ - "0.0", - "0.3", - "0.3", - "1.3", - "1.3", - "3.6", - "3.6", - "9.4", - "9.4", - "23.0", - "23.0", - "60.0", - "60.0", - "100000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "time": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "time1": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "time2": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "time3": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typebare": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "bare_ground", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeburnt": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Burnt vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "burnt_vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typec3pft": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "c3_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typec4pft": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "c4_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typecloud": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Cloud area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "cloud", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typecrop": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Crop area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "crops", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typefis": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Floating Ice Shelf area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "floating_ice_shelf", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typegis": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Grounded Ice Sheet area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "grounded_ice_sheet", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeland": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "land", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeli": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land Ice area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "land_ice", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typemp": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Melt pond area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea_ice_melt_pond", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typenatgr": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Natural grass area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "natural_grasses", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typenwd": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Non-Woody Vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "non_woody_vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typepasture": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Pasture area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "pastures", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typepdec": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "primary_deciduous_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typepever": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "primary_evergreen_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeresidual": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "Residual area", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "residual", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typesdec": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "secondary_decidous_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typesea": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Ocean area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typesever": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "secondary_evergreen_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeshrub": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Shrub area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "shrubs", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typesi": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Sea Ice area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea_ice", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typetree": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typetreebd": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Broadleaf Deciduous)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typetreebe": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Broadleaf Evergreen)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typetreend": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Narrowleaf Deciduous)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typetreene": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Narrowleaf Evergreen)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typeveg": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "typewetla": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Wetland", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "vegtype": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "plant functional type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "xant": { - "standard_name": "projection_x_coordinate", - "units": "km", - "axis": "", - "long_name": "", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "xant", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "xgre": { - "standard_name": "projection_x_coordinate", - "units": "km", - "axis": "", - "long_name": "", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "xgre", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "yant": { - "standard_name": "projection_y_coordinate", - "units": "km", - "axis": "", - "long_name": "", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "yant", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, - "ygre": { - "standard_name": "projection_y_coordinate", - "units": "km", - "axis": "", - "long_name": "", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "ygre", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_day.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_day.json deleted file mode 100644 index 8f19bbd382..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_day.json +++ /dev/null @@ -1,630 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table day", - "realm": "atmos", - "frequency": "day", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "1.00000", - "generic_levels": "", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "clt": { - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "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 plev8 time", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hurs": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude time height2m", - "out_name": "hurs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hursmax": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Surface Daily Maximum Relative Humidity", - "comment": "", - "dimensions": "longitude latitude time height2m", - "out_name": "hursmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hursmin": { - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacella", - "long_name": "Surface Daily Minimum Relative Humidity", - "comment": "", - "dimensions": "longitude latitude time height2m", - "out_name": "hursmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "", - "dimensions": "longitude latitude plev8 time", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1.0", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrro": { - "modeling_realm": "land", - "standard_name": "runoff_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Runoff", - "comment": "The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "mrro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrso": { - "modeling_realm": "land", - "standard_name": "soil_moisture_content", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Soil Moisture Content", - "comment": "the mass per unit area (summed over all soil layers) of water in all phases.", - "dimensions": "longitude latitude time", - "out_name": "mrso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsos": { - "modeling_realm": "land", - "standard_name": "moisture_content_of_soil_layer", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Moisture in Upper Portion of Soil Column", - "comment": "The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions": "longitude latitude time sdepth1", - "out_name": "mrsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_sea_level", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiation", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time", - "out_name": "rlut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "", - "dimensions": "longitude latitude time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Daily-Mean Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWindmax": { - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Wind Speed", - "comment": "Daily maximum near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWindmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snc": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snow Area Fraction", - "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions": "longitude latitude time", - "out_name": "snc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "snw": { - "modeling_realm": "landIce land", - "standard_name": "surface_snow_amount", - "units": "kg m-2", - "cell_methods": "area: mean where land time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow Amount", - "comment": "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.", - "dimensions": "longitude latitude time", - "out_name": "snw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "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 plev8 time", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time height2m", - "out_name": "tas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmax": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Air Temperature", - "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmin": { - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Air Temperature", - "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tslsi": { - "modeling_realm": "land", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean (comment: over land and sea ice)", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature Where Land or Sea Ice", - "comment": "'skin' temperature of all surfaces except open ocean.", - "dimensions": "longitude latitude time", - "out_name": "tslsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "", - "dimensions": "longitude latitude plev8 time", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time height10m", - "out_name": "uas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "", - "dimensions": "longitude latitude plev8 time", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "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 plev8 time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "", - "dimensions": "longitude latitude plev8 time", - "out_name": "zg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_formula_terms.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_formula_terms.json deleted file mode 100644 index 82a73c3c4e..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_formula_terms.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "variable_entry": { - "a": { - "long_name": "vertical coordinate formula term: a(k)", - "units": "", - "dimensions": "alevel", - "type": "double" - }, - "ps": { - "long_name": "Surface Air Pressure", - "units": "Pa", - "dimensions": "longitude latitude time", - "type": "real" - }, - "p0": { - "long_name": "vertical coordinate formula term: reference pressure", - "units": "Pa", - "dimensions": "", - "type": "" - }, - "b": { - "long_name": "vertical coordinate formula term: b(k)", - "units": "", - "dimensions": "alevel", - "type": "double" - }, - "b_bnds": { - "long_name": "vertical coordinate formula term: b(k+1/2)", - "units": "", - "dimensions": "alevel", - "type": "double" - }, - "ap_bnds": { - "long_name": "vertical coordinate formula term: ap(k+1/2)", - "units": "Pa", - "dimensions": "alevel", - "type": "double" - }, - "ap": { - "long_name": "vertical coordinate formula term: ap(k)", - "units": "Pa", - "dimensions": "alevel", - "type": "double" - }, - "orog": { - "long_name": "Surface Altitude", - "units": "m", - "dimensions": "longitude latitude", - "type": "real" - }, - "ztop": { - "long_name": "height of top of model", - "units": "m", - "dimensions": "", - "type": "" - }, - "ptop": { - "long_name": "pressure at top of model", - "units": "Pa", - "dimensions": "", - "type": "" - }, - "a_bnds": { - "long_name": "vertical coordinate formula term: a(k+1/2)", - "units": "", - "dimensions": "alevel", - "type": "double" - }, - "depth_c": { - "long_name": "vertical coordinate formula term: depth_c", - "units": "", - "dimensions": "", - "type": "double" - }, - "nsigma": { - "long_name": "vertical coordinate formula term: nsigma", - "units": "", - "dimensions": "", - "type": "integer" - }, - "href": { - "long_name": "vertical coordinate formula term: href", - "units": "", - "dimensions": "", - "type": "double" - }, - "zlev": { - "long_name": "vertical coordinate formula term: zlev(k)", - "units": "", - "dimensions": "olevel", - "type": "double" - }, - "zlev_bnds": { - "long_name": "vertical coordinate formula term: zlev(k+1/2)", - "units": "", - "dimensions": "olevel", - "type": "double" - }, - "z1": { - "long_name": "vertical coordinate formula term: z1", - "units": "", - "dimensions": "", - "type": "double" - }, - "z2": { - "long_name": "vertical coordinate formula term: z2", - "units": "", - "dimensions": "", - "type": "double" - }, - "sigma_bnds": { - "long_name": "vertical coordinate formula term: sigma(k+1/2)", - "units": "", - "dimensions": "olevel", - "type": "double" - }, - "depth": { - "long_name": "Sea Floor Depth: formula term: thetao", - "units": "m", - "dimensions": "longitude latitude", - "type": "real" - }, - "eta": { - "long_name": "Sea Surface Height formula term: thetao", - "units": "m", - "dimensions": "longitude latitude time", - "type": "real" - }, - "k_c": { - "long_name": "vertical coordinate formula term: k_c", - "units": "", - "dimensions": "", - "type": "integer" - }, - "sigma": { - "long_name": "vertical coordinate formula term: sigma(k)", - "units": "", - "dimensions": "olevel", - "type": "double" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_fx.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_fx.json deleted file mode 100644 index 04c8ee60a4..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_fx.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.10", - "table_id": "Table fx", - "realm": "land", - "frequency": "fx", - "cmor_version": "3.2", - "table_date": "10 May 2017", - "missing_value": "1e20", - "product": "model-output", - "approx_interval": "0.00000", - "generic_levels": "alevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.0" - }, - "variable_entry": { - "areacella": { - "modeling_realm": "atmos land", - "standard_name": "cell_area", - "units": "m2", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Atmosphere Grid-Cell Area", - "comment": "For atmospheres with more than 1 mesh (e.g., staggered grids), report areas that apply to surface vertical fluxes of energy.", - "dimensions": "longitude latitude", - "out_name": "areacella", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mrsofc": { - "modeling_realm": "land", - "standard_name": "soil_moisture_content_at_field_capacity", - "units": "kg m-2", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Capacity of Soil to Store Water", - "comment": "'reported *where land*: divide the total water holding capacity of all the soil in the grid cell by the land area in the grid cell; reported as *missing* where the land fraction is 0.'", - "dimensions": "longitude latitude", - "out_name": "mrsofc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "orog": { - "modeling_realm": "land", - "standard_name": "surface_altitude", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Altitude", - "comment": "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.", - "dimensions": "longitude latitude", - "out_name": "orog", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rootd": { - "modeling_realm": "land", - "standard_name": "root_depth", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Maximum Root Depth", - "comment": "report the maximum soil depth reachable by plant roots (if defined in model), i.e., the maximum soil depth from which they can extract moisture; report as *missing* where the land fraction is 0.", - "dimensions": "longitude latitude", - "out_name": "rootd", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftgif": { - "modeling_realm": "land", - "standard_name": "land_ice_area_fraction", - "units": "%", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Grid Cell Covered with Glacier", - "comment": "Fraction of grid cell covered by land ice (ice sheet, ice shelf, ice cap, glacier)", - "dimensions": "longitude latitude typeli", - "out_name": "sftgif", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sftlf": { - "modeling_realm": "atmos", - "standard_name": "land_area_fraction", - "units": "%", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Land Area Fraction", - "comment": "Please express 'X_area_fraction' as the percentage of horizontal area occupied by X.", - "dimensions": "longitude latitude typeland", - "out_name": "sftlf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfull": { - "modeling_realm": "atmos", - "standard_name": "height_above_reference_ellipsoid", - "units": "m", - "cell_methods": "area: mean", - "cell_measures": "area: areacella", - "long_name": "Altitude of Model Full-Levels", - "comment": "", - "dimensions": "longitude latitude alevel", - "out_name": "zfull", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_grids.json b/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_grids.json deleted file mode 100644 index c6e2d179d9..0000000000 --- a/esmvaltool/cmor/tables/cmip6/Tables/CMIP6_grids.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "Header": { - "product": "output", - "cmor_version": "3.2", - "Conventions": "CF-1.7 CMIP-6.0", - "table_id": "Table grids", - "data_specs_version": "01.00.10", - "missing_value": "1e20", - "table_date": "10 May 2017" - }, - "mapping_entry": { - "sample_user_mapping": { - "parameter1": "false_easting", - "coordinates": "rlon rlat", - "parameter2": "false_northing" - } - }, - "axis_entry": { - "grid_latitude": { - "long_name": "latitude in rotated pole grid", - "standard_name": "grid_latitude", - "out_name": "rlat", - "units": "degrees", - "type": "", - "axis": "Y" - }, - "y_deg": { - "long_name": "y coordinate of projection", - "standard_name": "projection_y_coordinate", - "out_name": "y", - "units": "degrees", - "type": "", - "axis": "Y" - }, - "l_index": { - "long_name": "cell index along fourth dimension", - "standard_name": "", - "out_name": "l", - "units": "1", - "type": "integer", - "axis": "" - }, - "grid_longitude": { - "long_name": "longitude in rotated pole grid", - "standard_name": "grid_longitude", - "out_name": "rlon", - "units": "degrees", - "type": "", - "axis": "X" - }, - "k_index": { - "long_name": "cell index along third dimension", - "standard_name": "", - "out_name": "k", - "units": "1", - "type": "integer", - "axis": "" - }, - "vertices": { - "long_name": "", - "standard_name": "", - "out_name": "", - "units": "", - "type": "", - "axis": "" - }, - "x_deg": { - "long_name": "x coordinate of projection", - "standard_name": "projection_x_coordinate", - "out_name": "x", - "units": "degrees", - "type": "", - "axis": "X" - }, - "i_index": { - "long_name": "cell index along first dimension", - "standard_name": "", - "out_name": "i", - "units": "1", - "type": "integer", - "axis": "" - }, - "j_index": { - "long_name": "cell index along second dimension", - "standard_name": "", - "out_name": "j", - "units": "1", - "type": "integer", - "axis": "" - }, - "y": { - "long_name": "y coordinate of projection", - "standard_name": "projection_y_coordinate", - "out_name": "", - "units": "m", - "type": "", - "axis": "Y" - }, - "x": { - "long_name": "x coordinate of projection", - "standard_name": "projection_x_coordinate", - "out_name": "", - "units": "m", - "type": "", - "axis": "X" - }, - "m_index": { - "long_name": "cell index along fifth dimension", - "standard_name": "", - "out_name": "m", - "units": "1", - "type": "integer", - "axis": "" - } - }, - "variable_entry": { - "latitude": { - "dimensions": "longitude latitude", - "valid_min": "-90.0", - "long_name": "", - "standard_name": "", - "out_name": "latitude", - "units": "degrees_north", - "valid_max": "90.0" - }, - "vertices_latitude": { - "dimensions": "vertices longitude latitude", - "valid_min": "-90.0", - "long_name": "", - "standard_name": "", - "out_name": "vertices_latitude", - "units": "degrees_north", - "valid_max": "90.0" - }, - "vertices_longitude": { - "dimensions": "vertices longitude latitude", - "valid_min": "0.0", - "long_name": "", - "standard_name": "", - "out_name": "vertices_longitude", - "units": "degrees_east", - "valid_max": "360.0" - }, - "longitude": { - "dimensions": "longitude latitude", - "valid_min": "0.0", - "long_name": "", - "standard_name": "", - "out_name": "longitude", - "units": "degrees_east", - "valid_max": "360.0" - } - } -} diff --git a/esmvaltool/cmor/tables/custom/CMOR_alb.dat b/esmvaltool/cmor/tables/custom/CMOR_alb.dat deleted file mode 100644 index caa3513fd5..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_alb.dat +++ /dev/null @@ -1,20 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: alb -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: albedo at the surface -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_amoc.dat b/esmvaltool/cmor/tables/custom/CMOR_amoc.dat deleted file mode 100644 index 0f951078df..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_amoc.dat +++ /dev/null @@ -1,21 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: amoc -!============ -modeling_realm: ocean -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Atlantic Meridional Overturning Circulation -comment: AMOC at the Rapid array (26.5 N) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -type: real -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat deleted file mode 100644 index 588264e55a..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clhmtisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP High Level Medium-Thickness Cloud Area Fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clhtkisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clhtkisccp.dat deleted file mode 100644 index 080fe2e76a..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clhtkisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clhtkisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP high level thick cloud area fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clisccp.dat deleted file mode 100644 index b86353b3ed..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clisccp.dat +++ /dev/null @@ -1,21 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Cloud Area Fraction -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs tau time -out_name: clisccp -type: real -!---------------------------------- -! \ No newline at end of file diff --git a/esmvaltool/cmor/tables/custom/CMOR_cllmtisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_cllmtisccp.dat deleted file mode 100644 index de48310ff6..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_cllmtisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: cllmtisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Low Level Medium-Thickness Cloud Area Fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clltkisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clltkisccp.dat deleted file mode 100644 index 01affe0170..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clltkisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clltkisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP low level thick cloud area fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clmmtisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clmmtisccp.dat deleted file mode 100644 index e2fa6bde2c..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clmmtisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clmmtisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Middle Level Medium-Thickness Cloud Area Fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_clmtkisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clmtkisccp.dat deleted file mode 100644 index 4e3e41ceea..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_clmtkisccp.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: clmtkisccp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: ISCCP Middle Level Thick Cloud Area Fraction -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_cltStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_cltStderr.dat deleted file mode 100644 index 507e62e425..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_cltStderr.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: cltStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: % -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Cloud Fraction Error -comment: for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: cltStderr -type: real -valid_min: 0 -valid_max: 0.01 -ok_min_mean_abs: 0 -ok_max_mean_abs: 0.01 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_coordinates.dat b/esmvaltool/cmor/tables/custom/CMOR_coordinates.dat deleted file mode 100644 index 8ad131fb4b..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_coordinates.dat +++ /dev/null @@ -1,106 +0,0 @@ -!============ -axis_entry: longitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: longitude -units: degrees_east -axis: X ! X, Y, Z, T (default: undeclared) -long_name: longitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lon -valid_min: 0.0 -valid_max: 360.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: latitude -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: latitude -units: degrees_north -axis: Y ! X, Y, Z, T (default: undeclared) -long_name: latitude -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: lat -valid_min: -90.0 -valid_max: 90.0 -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: plevs -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: air_pressure -units: Pa -axis: Z ! X, Y, Z, T (default: undeclared) -positive: down -long_name: pressure -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: plev -valid_min: 0.0 -valid_max: 110000.0 -stored_direction: decreasing -type: double -must_have_bounds: no -!---------------------------------- -! - - -!============ -axis_entry: time -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: time -units: days since ? -axis: T ! X, Y, Z, T (default: undeclared) -long_name: time -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: time -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! - -!============ -axis_entry: tau -!============ -!---------------------------------- -! Axis attributes: -!---------------------------------- -standard_name: atmosphere_optical_thickness_due_to_cloud -units: 1 -long_name: cloud optical thickness -!---------------------------------- -! Additional axis information: -!---------------------------------- -out_name: tau -stored_direction: increasing -type: double -must_have_bounds: yes -!---------------------------------- -! \ No newline at end of file diff --git a/esmvaltool/cmor/tables/custom/CMOR_dos.dat b/esmvaltool/cmor/tables/custom/CMOR_dos.dat deleted file mode 100644 index ef24f2e740..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_dos.dat +++ /dev/null @@ -1,27 +0,0 @@ -SOURCE: CMIP5 (adapted from mrso) -!============ -variable_entry: dos -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: m3 m-3 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Degree of Soil Saturation -comment: (unitless) degree of soil saturation for comparing mass based models with volumetric observations. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dos -type: real -valid_min: 0 -valid_max: 2 -ok_min_mean_abs: 0 -ok_max_mean_abs: 1 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/custom/CMOR_dosStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_dosStderr.dat deleted file mode 100644 index 41cbe68923..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_dosStderr.dat +++ /dev/null @@ -1,24 +0,0 @@ -SOURCE: CMIP5 (adapted from mrso) -!============ -variable_entry: dosStderr -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: m3 m-3 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Degree of Soil Saturation Error -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: dosStderr -type: real -valid_min: 0.0 -valid_max: 1.0 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/custom/CMOR_et.dat b/esmvaltool/cmor/tables/custom/CMOR_et.dat deleted file mode 100644 index a962ae3f29..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_et.dat +++ /dev/null @@ -1,21 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: et -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: mm day-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Evapotranspiration -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: down -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_etStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_etStderr.dat deleted file mode 100644 index 685da2a8de..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_etStderr.dat +++ /dev/null @@ -1,24 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: etStderr -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: mm day-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Evapotranspiration Error -comment: Standard deviation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: etStderr -type: real -valid_min: 0 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/custom/CMOR_fgco2_grid.dat b/esmvaltool/cmor/tables/custom/CMOR_fgco2_grid.dat deleted file mode 100644 index 0ec33ca258..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_fgco2_grid.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: fgco2_grid -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 s-1 -cell_methods: time: mean area: mean -cell_measures: area: areacello -long_name: Surface Downward CO2 Flux relative to grid cell area -comment: Gas exchange flux of CO2 (positive into ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: fgco2_grid -type: real -positive: down -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_gppStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_gppStderr.dat deleted file mode 100644 index b33d2c19c0..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_gppStderr.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: gppStderr -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land Error -comment: Standard deviation calculated based on median absolute deviation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: gppStderr -type: real -valid_min: 0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_gtfgco2.dat b/esmvaltool/cmor/tables/custom/CMOR_gtfgco2.dat deleted file mode 100644 index dba2aa00c6..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_gtfgco2.dat +++ /dev/null @@ -1,21 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: gtfgco2 -!============ -modeling_realm: ocnBgchem -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg s-1 -cell_methods: time: mean area: where sea -cell_measures: area: areacello -long_name: Global Total Surface Downward CO2 Flux -comment: Gas exchange flux of CO2 (positive into ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: time -type: real -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_husStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_husStderr.dat deleted file mode 100644 index b053d1d4fd..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_husStderr.dat +++ /dev/null @@ -1,25 +0,0 @@ -SOURCE: obs4mips -!============ -variable_entry: husStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Specific Humidity Error -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude plevs time -out_name: husStderr -type: real -valid_min: -0.000299 -valid_max: 0.02841 -ok_min_mean_abs: -0.0003539 -ok_max_mean_abs: 0.01041 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_iwpStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_iwpStderr.dat deleted file mode 100644 index 088b372487..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_iwpStderr.dat +++ /dev/null @@ -1,25 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: iwpStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Condensed Ice Path Error -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: iwpStderr -type: real -valid_min: 0.0 -valid_max: 5.0 -ok_min_mean_abs: 0.0 -ok_max_mean_abs: 1.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_lwcre.dat b/esmvaltool/cmor/tables/custom/CMOR_lwcre.dat deleted file mode 100644 index 1088e87bb0..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_lwcre.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: lwcre -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Longwave Cloud Radiative Effect -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_lwp.dat b/esmvaltool/cmor/tables/custom/CMOR_lwp.dat deleted file mode 100644 index 2e4dc38d24..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_lwp.dat +++ /dev/null @@ -1,24 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: lwp -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Liquid Water Path -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -valid_min: 0.0 -valid_max: 5.0 -ok_min_mean_abs: 0.0 -ok_max_mean_abs: 1.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_lwpStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_lwpStderr.dat deleted file mode 100644 index fd2bf63555..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_lwpStderr.dat +++ /dev/null @@ -1,25 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: lwpStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Liquid Water Path Error -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: lwpStderr -type: real -valid_min: 0.0 -valid_max: 5.0 -ok_min_mean_abs: 0.0 -ok_max_mean_abs: 1.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_nbp_grid.dat b/esmvaltool/cmor/tables/custom/CMOR_nbp_grid.dat deleted file mode 100644 index 9c70aebc26..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_nbp_grid.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: nbp_grid -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 s-1 -cell_methods: time: mean area: mean -cell_measures: area: areacella -long_name: Carbon Mass Flux out of Atmosphere due to Net Biospheric Production on Land relative to grid cell area -comment: This is the net mass flux of carbon between land and atmosphere calculated as photosynthesis MINUS the sum of plant and soil respiration, carbonfluxes from fire, harvest, grazing and land use change. Positive flux is into the land. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: nbp_grid -type: real -positive: down -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_netcre.dat b/esmvaltool/cmor/tables/custom/CMOR_netcre.dat deleted file mode 100644 index 6525abd2b6..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_netcre.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CCMI1 -!============ -variable_entry: netcre -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Net Cloud Radiative Effect -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_od550aerStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_od550aerStderr.dat deleted file mode 100644 index 5a43465e9a..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_od550aerStderr.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: od550aerStderr -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Optical Thickness at 550 nm Error -comment: AOD error from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: od550aerStderr -type: real -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_od870aerStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_od870aerStderr.dat deleted file mode 100644 index fb8c316ca4..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_od870aerStderr.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: od870aerStderr -!============ -modeling_realm: aerosol -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ambient Aerosol Optical Thickness at 870 nm Error -comment: AOD error from the ambient aerosls (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: od870aerStderr -type: real -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_prStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_prStderr.dat deleted file mode 100644 index 4e8ecd30e7..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_prStderr.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: prStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: kg m-2 s-1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Precipitation Standard Error -comment: at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: prStderr -type: real -valid_min: 0 -valid_max: 0.001 -ok_min_mean_abs: 0 -ok_max_mean_abs: 0.001 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rlns.dat b/esmvaltool/cmor/tables/custom/CMOR_rlns.dat deleted file mode 100644 index 05841ab7e2..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rlns.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rlns -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Net downward Longwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rluscs.dat b/esmvaltool/cmor/tables/custom/CMOR_rluscs.dat deleted file mode 100644 index df4d2601ed..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rluscs.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rluscs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Upwelling Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rluscs -type: real -positive: up -valid_min: 43.75 -valid_max: 658 -ok_min_mean_abs: 325.6 -ok_max_mean_abs: 376.3 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rlut.dat b/esmvaltool/cmor/tables/custom/CMOR_rlut.dat deleted file mode 100644 index 66cae228e6..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rlut.dat +++ /dev/null @@ -1,27 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rlut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Longwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlut -type: real -positive: up -valid_min: 67.48 -valid_max: 383.2 -ok_min_mean_abs: 207.4 -ok_max_mean_abs: 234.4 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rlutcs.dat b/esmvaltool/cmor/tables/custom/CMOR_rlutcs.dat deleted file mode 100644 index 204e4bb4b0..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rlutcs.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rlutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_longwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Longwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rlutcs -type: real -positive: up -valid_min: 70.59 -valid_max: 377.5 -ok_min_mean_abs: 228.9 -ok_max_mean_abs: 260.4 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rsns.dat b/esmvaltool/cmor/tables/custom/CMOR_rsns.dat deleted file mode 100644 index 966c3bb6cf..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rsns.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rsns -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Net downward Shortwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rsnt.dat b/esmvaltool/cmor/tables/custom/CMOR_rsnt.dat deleted file mode 100644 index 32a7da45de..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rsnt.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rsnt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Net downward Shortwave Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rsut.dat b/esmvaltool/cmor/tables/custom/CMOR_rsut.dat deleted file mode 100644 index a2fd561b34..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rsut.dat +++ /dev/null @@ -1,27 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rsut -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Shortwave Radiation -comment: at the top of the atmosphere -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsut -type: real -positive: up -valid_min: -0.02689 -valid_max: 421.9 -ok_min_mean_abs: 96.72 -ok_max_mean_abs: 114.1 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rsutcs.dat b/esmvaltool/cmor/tables/custom/CMOR_rsutcs.dat deleted file mode 100644 index 3039856aec..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rsutcs.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rsutcs -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Outgoing Clear-Sky Shortwave Radiation -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: rsutcs -type: real -positive: up -valid_min: 0 -valid_max: 444 -ok_min_mean_abs: 54.7 -ok_max_mean_abs: 73.36 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_rtnt.dat b/esmvaltool/cmor/tables/custom/CMOR_rtnt.dat deleted file mode 100644 index b3697aa344..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_rtnt.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: rtnt -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Net downward Total Radiation -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_sm.dat b/esmvaltool/cmor/tables/custom/CMOR_sm.dat deleted file mode 100644 index 31858bb292..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_sm.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 (adapted from mrsos) -!============ -variable_entry: sm -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: m3 m-3 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Volumetric Moisture in Upper Portion of Soil Column -comment: the volume of water in all phases in a thin surface soil layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: sm -type: real -valid_min: 0 -valid_max: 1 -ok_min_mean_abs: 0 -ok_max_mean_abs: 1 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_smStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_smStderr.dat deleted file mode 100644 index 7da194878c..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_smStderr.dat +++ /dev/null @@ -1,25 +0,0 @@ -SOURCE: CMIP5 (adapted from mrsos) -!============ -variable_entry: smStderr -!============ -modeling_realm: land -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: m3 m-3 -cell_methods: time: mean area: mean where land -cell_measures: area: areacella -long_name: Volumetric Moisture in Upper Portion of Soil Column Error -comment: Error of the volume of water in all phases in a thin surface soil layer. -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: smStderr -type: real -valid_min: 0.0 -valid_max: 1.0 -!---------------------------------- -! - diff --git a/esmvaltool/cmor/tables/custom/CMOR_swcre.dat b/esmvaltool/cmor/tables/custom/CMOR_swcre.dat deleted file mode 100644 index 096d6ca77e..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_swcre.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: swcre -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: W m-2 -cell_methods: time: mean -cell_measures: area: areacella -long_name: TOA Shortwave Cloud Radiative Effect -comment: at the top of the atmosphere (to be compared with satellite measurements) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -positive: up -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_tasa.dat b/esmvaltool/cmor/tables/custom/CMOR_tasa.dat deleted file mode 100644 index 1ad03eb64e..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_tasa.dat +++ /dev/null @@ -1,25 +0,0 @@ -SOURCE: CMIP5 (adapted from tas) -!============ -variable_entry: tasa -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Near-Surface Air Temperature Anomaly -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tasa -type: real -valid_min: -20.0 -valid_max: 20.0 -ok_min_mean_abs: -20 -ok_max_mean_abs: 20. -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_toz.dat b/esmvaltool/cmor/tables/custom/CMOR_toz.dat deleted file mode 100644 index 6d319a171b..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_toz.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CCMI1 -!============ -variable_entry: toz -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: DU -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Ozone Column -comment: total ozone column in DU -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -valid_min: 0.0 -valid_max: 5000.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_tozStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_tozStderr.dat deleted file mode 100644 index 240247c84c..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_tozStderr.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CCMI1 -!============ -variable_entry: tozStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: DU -cell_methods: time: mean -cell_measures: area: areacella -long_name: Total Ozone Column Error -comment: total ozone column in DU -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -type: real -valid_min: 0.0 -valid_max: 5000.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_tro3prof.dat b/esmvaltool/cmor/tables/custom/CMOR_tro3prof.dat deleted file mode 100644 index efe6e651c0..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_tro3prof.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: tro3prof -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1e-9 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ozone Volume Mixing Ratio -comment: -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude plevs time -type: real -valid_min: 0.0 -valid_max: 1.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_tro3profStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_tro3profStderr.dat deleted file mode 100644 index d5fc63027d..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_tro3profStderr.dat +++ /dev/null @@ -1,23 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: tro3profStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1e-9 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Ozone Volume Mixing Ratio Error -comment: -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: latitude plevs time -type: real -valid_min: 0.0 -valid_max: 1.0 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_tsStderr.dat b/esmvaltool/cmor/tables/custom/CMOR_tsStderr.dat deleted file mode 100644 index 4bd6530a17..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_tsStderr.dat +++ /dev/null @@ -1,26 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: tsStderr -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: K -cell_methods: time: mean -cell_measures: area: areacella -long_name: Surface Temperature Error -comment: ""skin"" temperature error (i.e., SST for open ocean) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: tsStderr -type: real -valid_min: 0 -valid_max: 10 -ok_min_mean_abs: 0 -ok_max_mean_abs: 10 -!---------------------------------- -! diff --git a/esmvaltool/cmor/tables/custom/CMOR_xch4.dat b/esmvaltool/cmor/tables/custom/CMOR_xch4.dat deleted file mode 100644 index 779a6da6df..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_xch4.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: xch4 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Column-average Dry-air Mole Fraction of Atmospheric Methane -comment: Satellite retrieved column-average dry-air mole fraction of atmospheric methane (XCH4) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: xch4 -type: real -!---------------------------------- -! \ No newline at end of file diff --git a/esmvaltool/cmor/tables/custom/CMOR_xco2.dat b/esmvaltool/cmor/tables/custom/CMOR_xco2.dat deleted file mode 100644 index dcdde3bbf7..0000000000 --- a/esmvaltool/cmor/tables/custom/CMOR_xco2.dat +++ /dev/null @@ -1,22 +0,0 @@ -SOURCE: CMIP5 -!============ -variable_entry: xco2 -!============ -modeling_realm: atmos -!---------------------------------- -! Variable attributes: -!---------------------------------- -standard_name: -units: 1e-6 -cell_methods: time: mean -cell_measures: area: areacella -long_name: Column-average Dry-air Mole Fraction of Atmospheric Carbon Dioxide -comment: Satellite retrieved column-average dry-air mole fraction of atmospheric carbon dioxide (XCO2) -!---------------------------------- -! Additional variable information: -!---------------------------------- -dimensions: longitude latitude time -out_name: xco2 -type: real -!---------------------------------- -! \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Aday.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Aday.json deleted file mode 100644 index 0f945e4327..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Aday.json +++ /dev/null @@ -1,631 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"1.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"atmos", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_Aday" - }, - "variable_entry":{ - "clt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Total Cloud Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clt", - "positive":"", - "standard_name":"cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hfls":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Upward Latent Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfls", - "positive":"up", - "standard_name":"surface_upward_latent_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfss":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Upward Sensible Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfss", - "positive":"up", - "standard_name":"surface_upward_sensible_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hur":{ - "cell_measures":"", - "cell_methods":"time: mean", - "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 plev8 time", - "frequency":"day", - "long_name":"Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hur", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hurs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Near-Surface Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hurs", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hursmax":{ - "cell_measures":"", - "cell_methods":"area: mean time: maximum", - "comment":"", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Surface Daily Maximum Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hursmax", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hursmin":{ - "cell_measures":"", - "cell_methods":"area: mean time: minimum", - "comment":"", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Surface Daily Minimum Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hursmin", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hus":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"Specific Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hus", - "positive":"", - "standard_name":"specific_humidity", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "huss":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Near-surface (usually, 2 meter) specific humidity.", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Near-Surface Specific Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"huss", - "positive":"", - "standard_name":"specific_humidity", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "mrro":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Total Runoff", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrro", - "positive":"", - "standard_name":"runoff_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "mrso":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"the mass per unit area (summed over all soil layers) of water in all phases.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Total Soil Moisture Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrso", - "positive":"", - "standard_name":"soil_moisture_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "mrsos":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions":"longitude latitude time sdepth1", - "frequency":"day", - "long_name":"Moisture in Upper Portion of Soil Column", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrsos", - "positive":"", - "standard_name":"moisture_content_of_soil_layer", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "pr":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"includes both liquid and solid phases", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Precipitation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pr", - "positive":"", - "standard_name":"precipitation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prc":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Convective Precipitation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prc", - "positive":"", - "standard_name":"convective_precipitation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prsn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"at surface; includes precipitation of all forms of water in the solid phase", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Snowfall Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prsn", - "positive":"", - "standard_name":"snowfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "psl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Sea Level Pressure", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Sea Level Pressure", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"psl", - "positive":"", - "standard_name":"air_pressure_at_sea_level", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "rlds":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Downwelling Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlds", - "positive":"down", - "standard_name":"surface_downwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rlus":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Upwelling Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlus", - "positive":"up", - "standard_name":"surface_upwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rlut":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"TOA Outgoing Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlut", - "positive":"up", - "standard_name":"toa_outgoing_longwave_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsds":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"surface solar irradiance for UV calculations", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Downwelling Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsds", - "positive":"down", - "standard_name":"surface_downwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsus":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Upwelling Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsus", - "positive":"up", - "standard_name":"surface_upwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "sfcWind":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"near-surface (usually, 10 meters) wind speed.", - "dimensions":"longitude latitude time height10m", - "frequency":"day", - "long_name":"Daily-Mean Near-Surface Wind Speed", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfcWind", - "positive":"", - "standard_name":"wind_speed", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "sfcWindmax":{ - "cell_measures":"", - "cell_methods":"area: mean time: maximum", - "comment":"Daily maximum near-surface (usually, 10 meters) wind speed.", - "dimensions":"longitude latitude time height10m", - "frequency":"day", - "long_name":"Daily Maximum Near-Surface Wind Speed", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfcWindmax", - "positive":"", - "standard_name":"wind_speed", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "snc":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Snow Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"snc", - "positive":"", - "standard_name":"surface_snow_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "snw":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"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.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Snow Amount", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"snw", - "positive":"", - "standard_name":"surface_snow_amount", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "ta":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Air Temperature", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ta", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"near-surface (usually, 2 meter) air temperature", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tas", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tasmax":{ - "cell_measures":"", - "cell_methods":"area: mean time: maximum", - "comment":"maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Daily Maximum Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tasmax", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tasmin":{ - "cell_measures":"", - "cell_methods":"area: mean time: minimum", - "comment":"minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions":"longitude latitude time height2m", - "frequency":"day", - "long_name":"Daily Minimum Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tasmin", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tslsi":{ - "cell_measures":"", - "cell_methods":"area: time: mean (comment: over land and sea ice)", - "comment":"Surface temperature of all surfaces except open ocean.", - "dimensions":"longitude latitude time", - "frequency":"day", - "long_name":"Surface Temperature Where Land or Sea Ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tslsi", - "positive":"", - "standard_name":"surface_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "ua":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"Eastward Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ua", - "positive":"", - "standard_name":"eastward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "uas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions":"longitude latitude time height10m", - "frequency":"day", - "long_name":"Eastward Near-Surface Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"uas", - "positive":"", - "standard_name":"eastward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "va":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"Northward Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"va", - "positive":"", - "standard_name":"northward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "vas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Northward component of the near surface wind", - "dimensions":"longitude latitude time height10m", - "frequency":"day", - "long_name":"Northward Near-Surface Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vas", - "positive":"", - "standard_name":"northward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "wap":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"omega (=dp/dt)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wap", - "positive":"", - "standard_name":"lagrangian_tendency_of_air_pressure", - "type":"real", - "units":"Pa s-1", - "valid_max":"", - "valid_min":"" - }, - "zg":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev8 time", - "frequency":"day", - "long_name":"Geopotential Height", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zg", - "positive":"", - "standard_name":"geopotential_height", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Amon.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Amon.json deleted file mode 100644 index 8862bb46d7..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Amon.json +++ /dev/null @@ -1,1464 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"alevel alevhalf", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"atmos", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_Amon" - }, - "variable_entry":{ - "ccb":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Air Pressure at Convective Cloud Base", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ccb", - "positive":"", - "standard_name":"air_pressure_at_convective_cloud_base", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "cct":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Air Pressure at Convective Cloud Top", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cct", - "positive":"", - "standard_name":"air_pressure_at_convective_cloud_top", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "cfc113global":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of CFC113", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cfc113global", - "positive":"", - "standard_name":"mole_fraction_of_cfc113_in_air", - "type":"real", - "units":"1e-12", - "valid_max":"", - "valid_min":"" - }, - "cfc11global":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of CFC11", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cfc11global", - "positive":"", - "standard_name":"mole_fraction_of_cfc11_in_air", - "type":"real", - "units":"1e-12", - "valid_max":"", - "valid_min":"" - }, - "cfc12global":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of CFC12", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cfc12global", - "positive":"", - "standard_name":"mole_fraction_of_cfc12_in_air", - "type":"real", - "units":"1e-12", - "valid_max":"", - "valid_min":"" - }, - "ch4":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Mole Fraction of CH4", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ch4", - "positive":"", - "standard_name":"mole_fraction_of_methane_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "ch4Clim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"", - "dimensions":"longitude latitude plev19 time2", - "frequency":"monC", - "long_name":"Mole Fraction of CH4", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ch4", - "positive":"", - "standard_name":"mole_fraction_of_methane_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "ch4global":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Global Mean Mole Fraction of CH4", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of CH4", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ch4global", - "positive":"", - "standard_name":"mole_fraction_of_methane_in_air", - "type":"real", - "units":"1e-09", - "valid_max":"", - "valid_min":"" - }, - "ch4globalClim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"Global Mean Mole Fraction of CH4", - "dimensions":"time2", - "frequency":"monC", - "long_name":"Global Mean Mole Fraction of CH4", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ch4global", - "positive":"", - "standard_name":"mole_fraction_of_methane_in_air", - "type":"real", - "units":"1e-09", - "valid_max":"", - "valid_min":"" - }, - "ci":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Fraction of time that convection occurs in the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Fraction of Time Convection Occurs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ci", - "positive":"", - "standard_name":"convection_time_fraction", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "cl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Percentage cloud cover, including both large-scale and convective cloud.", - "dimensions":"longitude latitude alevel time", - "frequency":"mon", - "long_name":"Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cl", - "positive":"", - "standard_name":"cloud_area_fraction_in_atmosphere_layer", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clCCI":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Percentage cloud cover in optical depth categories.", - "dimensions":"longitude latitude plev7c tau time", - "frequency":"mon", - "long_name":"CCI Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clCCI", - "positive":"", - "standard_name":"cloud_area_fraction_in_atmosphere_layer", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clCLARA":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean", - "comment":"Percentage cloud cover in optical depth categories.", - "dimensions":"longitude latitude plev7c tau time", - "frequency":"mon", - "long_name":"CLARA Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clCLARA", - "positive":"", - "standard_name":"cloud_area_fraction_in_atmosphere_layer", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "cli":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions":"longitude latitude alevel time", - "frequency":"mon", - "long_name":"Mass Fraction of Cloud Ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cli", - "positive":"", - "standard_name":"mass_fraction_of_cloud_ice_in_air", - "type":"real", - "units":"kg kg-1", - "valid_max":"", - "valid_min":"" - }, - "clivi":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ice Water Path", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clivi", - "positive":"", - "standard_name":"atmosphere_cloud_ice_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "clt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Cloud Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clt", - "positive":"", - "standard_name":"cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "cltCCI":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CCI Total Cloud Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cltCCI", - "positive":"", - "standard_name":"cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "cltCLARA":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean", - "comment":"Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CLARA Total Cloud Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cltCLARA", - "positive":"", - "standard_name":"cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clw":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions":"longitude latitude alevel time", - "frequency":"mon", - "long_name":"Mass Fraction of Cloud Liquid Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clw", - "positive":"", - "standard_name":"mass_fraction_of_cloud_liquid_water_in_air", - "type":"real", - "units":"kg kg-1", - "valid_max":"", - "valid_min":"" - }, - "clwCCI":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Percentage liquid cloud cover in optical depth categories.", - "dimensions":"longitude latitude plev7c tau time", - "frequency":"mon", - "long_name":"CCI Liquid Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clwCCI", - "positive":"", - "standard_name":"liquid_water_cloud_area_fraction_in_atmosphere_layer", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clwCLARA":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean", - "comment":"Percentage liquid cloud cover in optical depth categories.", - "dimensions":"longitude latitude plev7c tau time", - "frequency":"mon", - "long_name":"CLARA Liquid Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clwCLARA", - "positive":"", - "standard_name":"liquid_water_cloud_area_fraction_in_atmosphere_layer", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clwtCCI":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CCI Total Liquid Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clwtCCI", - "positive":"", - "standard_name":"liquid_water_cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clwtCLARA":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CLARA Total Liquid Cloud Area Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clwtCLARA", - "positive":"", - "standard_name":"liquid_water_cloud_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "clwvi":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Condensed Water Path", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"clwvi", - "positive":"", - "standard_name":"atmosphere_cloud_condensed_water_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "co2":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Mole Fraction of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co2", - "positive":"", - "standard_name":"mole_fraction_of_carbon_dioxide_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "co2Clim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"", - "dimensions":"longitude latitude plev19 time2", - "frequency":"monC", - "long_name":"Mole Fraction of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co2", - "positive":"", - "standard_name":"mole_fraction_of_carbon_dioxide_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "co2mass":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total atmospheric mass of Carbon Dioxide", - "dimensions":"time", - "frequency":"mon", - "long_name":"Total Atmospheric Mass of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co2mass", - "positive":"", - "standard_name":"atmosphere_mass_of_carbon_dioxide", - "type":"real", - "units":"kg", - "valid_max":"", - "valid_min":"" - }, - "co2massClim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"Total atmospheric mass of Carbon Dioxide", - "dimensions":"time2", - "frequency":"monC", - "long_name":"Total Atmospheric Mass of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co2mass", - "positive":"", - "standard_name":"atmosphere_mass_of_carbon_dioxide", - "type":"real", - "units":"kg", - "valid_max":"", - "valid_min":"" - }, - "evspsbl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Evaporation at surface: flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Evaporation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"evspsbl", - "positive":"", - "standard_name":"water_evaporation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fco2antt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fco2antt", - "positive":"", - "standard_name":"tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fco2fos":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fco2fos", - "positive":"", - "standard_name":"tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fco2nat":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fco2nat", - "positive":"", - "standard_name":"surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "hcfc22global":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of HCFC22", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hcfc22global", - "positive":"", - "standard_name":"mole_fraction_of_hcfc22_in_air", - "type":"real", - "units":"1e-12", - "valid_max":"", - "valid_min":"" - }, - "hfls":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Upward Latent Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfls", - "positive":"up", - "standard_name":"surface_upward_latent_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfss":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Upward Sensible Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfss", - "positive":"up", - "standard_name":"surface_upward_sensible_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hur":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hur", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hurs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions":"longitude latitude time height2m", - "frequency":"mon", - "long_name":"Near-Surface Relative Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hurs", - "positive":"", - "standard_name":"relative_humidity", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "hus":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Specific Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hus", - "positive":"", - "standard_name":"specific_humidity", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "huss":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Near-surface (usually, 2 meter) specific humidity.", - "dimensions":"longitude latitude time height2m", - "frequency":"mon", - "long_name":"Near-Surface Specific Humidity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"huss", - "positive":"", - "standard_name":"specific_humidity", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "mc":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions":"longitude latitude alevhalf time", - "frequency":"mon", - "long_name":"Convective Mass Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mc", - "positive":"up", - "standard_name":"atmosphere_net_upward_convective_mass_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "n2o":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Mole Fraction of N2O", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"n2o", - "positive":"", - "standard_name":"mole_fraction_of_nitrous_oxide_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "n2oClim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"", - "dimensions":"longitude latitude plev19 time2", - "frequency":"monC", - "long_name":"Mole Fraction of N2O", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"n2o", - "positive":"", - "standard_name":"mole_fraction_of_nitrous_oxide_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "n2oglobal":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Global mean Nitrous Oxide (N2O)", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Mole Fraction of N2O", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"n2oglobal", - "positive":"", - "standard_name":"mole_fraction_of_nitrous_oxide_in_air", - "type":"real", - "units":"1e-09", - "valid_max":"", - "valid_min":"" - }, - "n2oglobalClim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"Global mean Nitrous Oxide (N2O)", - "dimensions":"time2", - "frequency":"monC", - "long_name":"Global Mean Mole Fraction of N2O", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"n2oglobal", - "positive":"", - "standard_name":"mole_fraction_of_nitrous_oxide_in_air", - "type":"real", - "units":"1e-09", - "valid_max":"", - "valid_min":"" - }, - "o3":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Mole Fraction of O3", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o3", - "positive":"", - "standard_name":"mole_fraction_of_ozone_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "o3Clim":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean within years time: mean over years", - "comment":"", - "dimensions":"longitude latitude plev19 time2", - "frequency":"monC", - "long_name":"Mole Fraction of O3", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o3", - "positive":"", - "standard_name":"mole_fraction_of_ozone_in_air", - "type":"real", - "units":"mol mol-1", - "valid_max":"", - "valid_min":"" - }, - "pctCCI":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CCI Mean Cloud Top Pressure", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pctCCI", - "positive":"", - "standard_name":"air_pressure_at_cloud_top", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "pctCLARA":{ - "cell_measures":"", - "cell_methods":"area: mean time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"CLARA Mean Cloud Top Pressure", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pctCLARA", - "positive":"", - "standard_name":"air_pressure_at_cloud_top", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "pme":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Net flux of water (in all phases) between the atmosphere and underlying surface including vegetation), mainly resulting from the difference of precipitation and evaporation", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Freshwater Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pme", - "positive":"", - "standard_name":"surface_downward_water_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "pr":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"includes both liquid and solid phases", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Precipitation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pr", - "positive":"", - "standard_name":"precipitation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prc":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Convective Precipitation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prc", - "positive":"", - "standard_name":"convective_precipitation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prsn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"at surface; includes precipitation of all forms of water in the solid phase", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snowfall Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prsn", - "positive":"", - "standard_name":"snowfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prw":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"vertically integrated through the atmospheric column", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Vapor Path", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prw", - "positive":"", - "standard_name":"atmosphere_water_vapor_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "ps":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Air Pressure", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ps", - "positive":"", - "standard_name":"surface_air_pressure", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "psl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Sea Level Pressure", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Level Pressure", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"psl", - "positive":"", - "standard_name":"air_pressure_at_sea_level", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "rlds":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downwelling Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlds", - "positive":"down", - "standard_name":"surface_downwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rldscs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Surface downwelling clear-sky longwave radiation", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downwelling Clear-Sky Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rldscs", - "positive":"down", - "standard_name":"surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rlus":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Upwelling Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlus", - "positive":"up", - "standard_name":"surface_upwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rlut":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"TOA Outgoing Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlut", - "positive":"up", - "standard_name":"toa_outgoing_longwave_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rlutcs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Upwelling clear-sky longwave radiation at top of atmosphere", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"TOA Outgoing Clear-Sky Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlutcs", - "positive":"up", - "standard_name":"toa_outgoing_longwave_flux_assuming_clear_sky", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsds":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"surface solar irradiance for UV calculations", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downwelling Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsds", - "positive":"down", - "standard_name":"surface_downwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsdscs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"surface solar irradiance clear sky for UV calculations", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downwelling Clear-Sky Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsdscs", - "positive":"down", - "standard_name":"surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsdt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Shortwave radiation incident at the top of the atmosphere", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"TOA Incident Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsdt", - "positive":"down", - "standard_name":"toa_incoming_shortwave_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsus":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Upwelling Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsus", - "positive":"up", - "standard_name":"surface_upwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsuscs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Upwelling Clear-Sky Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsuscs", - "positive":"up", - "standard_name":"surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsut":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"at the top of the atmosphere", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"TOA Outgoing Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsut", - "positive":"up", - "standard_name":"toa_outgoing_shortwave_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsutcs":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Calculated in the absence of clouds.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"TOA Outgoing Clear-Sky Shortwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsutcs", - "positive":"up", - "standard_name":"toa_outgoing_shortwave_flux_assuming_clear_sky", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rtmt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Downward Flux at Top of Model", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rtmt", - "positive":"down", - "standard_name":"net_downward_radiative_flux_at_top_of_atmosphere_model", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "sbl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Snow and Ice Sublimation Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sbl", - "positive":"", - "standard_name":"surface_snow_and_ice_sublimation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sci":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Fraction of time that shallow convection occurs in the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Fraction of Time Shallow Convection Occurs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sci", - "positive":"", - "standard_name":"shallow_convection_time_fraction", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "sfcWind":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"near-surface (usually, 10 meters) wind speed.", - "dimensions":"longitude latitude time height10m", - "frequency":"mon", - "long_name":"Near-Surface Wind Speed", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfcWind", - "positive":"", - "standard_name":"wind_speed", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "ta":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Air Temperature", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ta", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"near-surface (usually, 2 meter) air temperature", - "dimensions":"longitude latitude time height2m", - "frequency":"mon", - "long_name":"Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tas", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tasmax":{ - "cell_measures":"", - "cell_methods":"area: mean time: maximum within days time: mean over days", - "comment":"maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions":"longitude latitude time height2m", - "frequency":"mon", - "long_name":"Daily Maximum Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tasmax", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tasmin":{ - "cell_measures":"", - "cell_methods":"area: mean time: minimum within days time: mean over days", - "comment":"minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions":"longitude latitude time height2m", - "frequency":"mon", - "long_name":"Daily Minimum Near-Surface Air Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tasmin", - "positive":"", - "standard_name":"air_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "tauu":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Downward eastward wind stress at the surface", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Eastward Wind Stress", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauu", - "positive":"down", - "standard_name":"surface_downward_eastward_stress", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "tauv":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Downward northward wind stress at the surface", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Northward Wind Stress", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauv", - "positive":"down", - "standard_name":"surface_downward_northward_stress", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "ts":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Temperature of the lower boundary of the atmosphere", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ts", - "positive":"", - "standard_name":"surface_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "ttbr":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Top of Atmosphere Brightness Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ttbr", - "positive":"", - "standard_name":"toa_brightness_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "ua":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Eastward Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ua", - "positive":"", - "standard_name":"eastward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "uas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions":"longitude latitude time height10m", - "frequency":"mon", - "long_name":"Eastward Near-Surface Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"uas", - "positive":"", - "standard_name":"eastward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "va":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Northward Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"va", - "positive":"", - "standard_name":"northward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "vas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Northward component of the near surface wind", - "dimensions":"longitude latitude time height10m", - "frequency":"mon", - "long_name":"Northward Near-Surface Wind", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vas", - "positive":"", - "standard_name":"northward_wind", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "wap":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"omega (=dp/dt)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wap", - "positive":"", - "standard_name":"lagrangian_tendency_of_air_pressure", - "type":"real", - "units":"Pa s-1", - "valid_max":"", - "valid_min":"" - }, - "zg":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude plev19 time", - "frequency":"mon", - "long_name":"Geopotential Height", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zg", - "positive":"", - "standard_name":"geopotential_height", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_CV.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_CV.json deleted file mode 100644 index 5f30ba78aa..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_CV.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "CV":{ - "activity_id":"obs4MIPs", - "frequency":{ - "1hr":"sampled hourly", - "1hrCM":"monthly-mean diurnal cycle resolving each day into 1-hour means", - "1hrPt":"sampled hourly, at specified time point within an hour", - "3hr":"sampled every 3 hours", - "3hrPt":"sampled 3 hourly, at specified time point within the time period", - "6hr":"sampled every 6 hours", - "6hrPt":"sampled 6 hourly, at specified time point within the time period", - "day":"daily mean samples", - "dec":"decadal mean samples", - "fx":"fixed (time invariant) field", - "mon":"monthly mean samples", - "monC":"monthly climatology computed from monthly mean samples", - "monPt":"sampled monthly, at specified time point within the time period", - "subhrPt":"sampled sub-hourly, at specified time point within an hour", - "yr":"annual mean samples", - "yrPt":"sampled yearly, at specified time point within the time period" - }, - "grid_label":{ - "gm":"global mean data", - "gn":"data reported on a model's native grid", - "gna":"data reported on a native grid in the region of Antarctica", - "gng":"data reported on a native grid in the region of Greenland", - "gnz":"zonal mean data reported on a model's native latitude grid", - "gr":"regridded data reported on the data provider's preferred target grid", - "gr1":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr1a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr1g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr1z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr2":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr2a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr2g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr2z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr3":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr3a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr3g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr3z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr4":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr4a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr4g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr4z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr5":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr5a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr5g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr5z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr6":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr6a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr6g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr6z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr7":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr7a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr7g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr7z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr8":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr8a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr8g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr8z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr9":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr9a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr9g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr9z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gra":"regridded data in the region of Antarctica reported on the data provider's preferred target grid", - "grg":"regridded data in the region of Greenland reported on the data provider's preferred target grid", - "grz":"regridded zonal mean data reported on the data provider's preferred latitude target grid" - }, - "institution_id":{ - "DWD":"Deutscher Wetterdienst, Offenbach 63067, Germany", - "NASA-JPL":"NASA's Jet Propulsion Laboratory, Pasadena, CA 91109, USA", - "NOAA-NCEI":"NOAA's National Centers for Environmental Information, Asheville, NC 28801, USA", - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", - "RSS":"Remote Sensing Systems, Santa Rosa, CA 95401, USA" - }, - "license":"Data in this file produced by is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Use of the data must be acknowledged following guidelines found at . Further information about this data, including some limitations, can be found via .)", - "nominal_resolution":[ - "0.5 km", - "1 km", - "10 km", - "100 km", - "1000 km", - "10000 km", - "1x1 degree", - "2.5 km", - "25 km", - "250 km", - "2500 km", - "5 km", - "50 km", - "500 km", - "5000 km" - ], - "product":[ - "observations", - "reanalysis" - ], - "realm":[ - "aerosol", - "atmos", - "atmosChem", - "land", - "landIce", - "ocean", - "ocnBgchem", - "seaIce" - ], - "region":[ - "africa", - "antarctica", - "arabian_sea", - "aral_sea", - "arctic_ocean", - "asia", - "atlantic_ocean", - "australia", - "baltic_sea", - "barents_opening", - "barents_sea", - "beaufort_sea", - "bellingshausen_sea", - "bering_sea", - "bering_strait", - "black_sea", - "canadian_archipelago", - "caribbean_sea", - "caspian_sea", - "central_america", - "chukchi_sea", - "contiguous_united_states", - "denmark_strait", - "drake_passage", - "east_china_sea", - "english_channel", - "eurasia", - "europe", - "faroe_scotland_channel", - "florida_bahamas_strait", - "fram_strait", - "global", - "global_land", - "global_ocean", - "great_lakes", - "greenland", - "gulf_of_alaska", - "gulf_of_mexico", - "hudson_bay", - "iceland_faroe_channel", - "indian_ocean", - "indo_pacific_ocean", - "indonesian_throughflow", - "irish_sea", - "lake_baykal", - "lake_chad", - "lake_malawi", - "lake_tanganyika", - "lake_victoria", - "mediterranean_sea", - "mozambique_channel", - "north_america", - "north_sea", - "norwegian_sea", - "pacific_equatorial_undercurrent", - "pacific_ocean", - "persian_gulf", - "red_sea", - "ross_sea", - "sea_of_japan", - "sea_of_okhotsk", - "south_america", - "south_china_sea", - "southern_ocean", - "taiwan_luzon_straits", - "weddell_sea", - "windward_passage", - "yellow_sea" - ], - "required_global_attributes":[ - "Conventions", - "activity_id", - "contact", - "creation_date", - "data_specs_version", - "frequency", - "grid", - "grid_label", - "institution", - "institution_id", - "license", - "nominal_resolution", - "product", - "realm", - "source_id", - "table_id", - "tracking_id", - "variable_id", - "variant_label" - ], - "source_id":{ - "AIRS-1-0":{ - "region":"global", - "source":"AIRS 1.0 (2011): Atmospheric Infrared Sounder", - "source_label":"AIRS", - "source_type":"satellite_retrieval", - "source_version_number":"1.0" - }, - "Aura-MLS-v04-2":{ - "region":"global", - "source":"Aura-MLS v04.2 (2018): EOS Aura Microwave Limb Sounder", - "source_label":"Aura-MLS", - "source_type":"satellite_retrieval", - "source_version_number":"v04.2" - }, - "CMSAF-CLARA-A-2-0":{ - "region":"global", - "source":"CMSAF-CLARA-A 2.0 (2017): CM SAF cLoud, Albedo and surface RAdiation dataset from AVHRR data", - "source_label":"CMSAF-CLARA-A", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "CMSAF-HOAPS-4-0":{ - "region":"global_ocean", - "source":"CMSAF-HOAPS 4.0 (2017): Hamburg Ocean Atmosphere Parameters and fluxes from Satellite data, based on SSM/I and SSMIS aboard DMSP", - "source_label":"CMSAF-HOAPS", - "source_type":"satellite_retrieval", - "source_version_number":"4.0" - }, - "CMSAF-SARAH-2-0":{ - "region":"africa, atlantic_ocean, europe", - "source":"CMSAF-SARAH 2.0 (2017): Surface solAr RAdiation data set - Heliosat, based on MVIRI/SEVIRI aboard METEOSAT", - "source_label":"CMSAF-SARAH", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-ATSR2-AATSR-2-0":{ - "region":"global", - "source":"ESACCI-CLOUD-ATSR2-AATSR 2.0 (2017): Cloud properties derived from ATSR2 and AATSR (aboard ERS2 and ENVISAT) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets.", - "source_label":"ESACCI-CLOUD-ATSR2-AATSR", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-AVHRR-AM-2-0":{ - "region":"global", - "source":"ESACCI-CLOUD-AVHRR-AM 2.0 (2017): Cloud properties derived from AVHRR (aboard NOAA and MetOp AM) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets", - "source_label":"ESACCI-CLOUD-AVHRR-AM", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-AVHRR-PM-2-0":{ - "region":"global", - "source":"ESACCI-CLOUD-AVHRR-PM 2.0 (2017): Cloud properties derived from AVHRR (aboard NOAA and MetOp PM) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets", - "source_label":"ESACCI-CLOUD-AVHRR-PM", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-MERIS-AATSR-2-0":{ - "region":"global", - "source":"ESACCI-CLOUD-MERIS-AATSR 2.0 (2017): Cloud properties derived from MERIS and AATSR (aboard ENVISAT) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets.", - "source_label":"ESACCI-CLOUD-MERIS-AATSR", - "source_type":"satellite_retrieval", - "source_version_number":"2.0" - }, - "GNSS-RO-1-3":{ - "region":"global", - "source":"GNSS-RO 1.3 (2016): Global Navigation Satellite Systems Radio Occultation", - "source_label":"GNSS-RO", - "source_type":"satellite_retrieval", - "source_version_number":"1.3" - }, - "NOAA-NCEI-AVHRR-NDVI-4-0":{ - "region":"global_land", - "source":"NOAA-NCEI-AVHRR-NDVI 4.0 (2013): Normalized Difference Vegetation Index", - "source_label":"NOAA-NCEI-AVHRR-NDVI", - "source_type":"satellite_retrieval", - "source_version_number":"4.0" - }, - "NOAA-NCEI-ERSST-4-0":{ - "region":"global_ocean", - "source":"NOAA-NCEI-ERSST 4.0 (2015): Extended Reconstructed Sea Surface Temperatures", - "source_label":"NOAA-NCEI-ERSST", - "source_type":"gridded_insitu", - "source_version_number":"4.0" - }, - "NOAA-NCEI-FAPAR-4-0":{ - "region":"global_land", - "source":"NOAA-NCEI-FAPAR 4.0 (2014): AVHRR Fraction of Absorbed Photosynthetically Active Radiation", - "source_label":"NOAA-NCEI-FAPAR", - "source_type":"satellite_retrieval", - "source_version_number":"4.0" - }, - "NOAA-NCEI-GridSat-4-0":{ - "region":"global", - "source":"NOAA-NCEI-GridSat 4.0 (2015): Gridded Satellite ISCCP B1 11 Micron Brightness Temperature", - "source_label":"NOAA-NCEI-GridSat", - "source_type":"satellite_retrieval", - "source_version_number":"4.0" - }, - "NOAA-NCEI-LAI-4-0":{ - "region":"global_land", - "source":"NOAA-NCEI-LAI 4.0 (2014): AVHRR Leaf Area Index", - "source_label":"NOAA-NCEI-LAI", - "source_type":"satellite_retrieval", - "source_version_number":"4.0" - }, - "NOAA-NCEI-PERSIANN-1-1":{ - "region":"global", - "source":"NOAA-NCEI-PERSIANN 1.1 (2014): Precipitation Estimation from Remotely Sensed Information using Artificial Neural Network", - "source_label":"NOAA-NCEI-PERSIANN", - "source_type":"satellite_retrieval", - "source_version_number":"1.1" - }, - "NOAA-NCEI-SeaWinds-1-2":{ - "region":"global_ocean", - "source":"NOAA-NCEI-SeaWinds 1.2 (2008): Blended Sea Surface Winds", - "source_label":"NOAA-NCEI-SeaWinds", - "source_type":"satellite_blended", - "source_version_number":"1.2" - }, - "QuikSCAT-v20110531":{ - "region":"global", - "source":"QuikSCAT v20110531 (2011): QuikSCAT winds monthly climatology derived from QuikSCAT L2B using the 2006 model function and processing algorithms.", - "source_label":"QuikSCAT", - "source_type":"satellite_retrieval", - "source_version_number":"v20110531" - }, - "REMSS-PRW-6-6-0":{ - "region":"global", - "source":"REMSS-PRW 6.6.0 (2017): Water Vapor Path", - "source_label":"REMSS-PRW", - "source_type":"satellite_blended", - "source_version_number":"6.6.0" - } - }, - "source_type":{ - "gridded_insitu":"gridded product based on measurements collected from in-situ instruments", - "reanalysis":"gridded product generated from a model reanalysis based on in-situ instruments and possibly satellite measurements", - "satellite_blended":"gridded product based on both in-situ instruments and satellite measurements", - "satellite_retrieval":"gridded product based on satellite measurements" - }, - "table_id":[ - "obs4MIPs_Aday", - "obs4MIPs_Amon", - "obs4MIPs_Lmon", - "obs4MIPs_Omon", - "obs4MIPs_SImon", - "obs4MIPs_fx", - "obs4MIPs_monNobs", - "obs4MIPs_monStderr" - ] - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Lmon.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Lmon.json deleted file mode 100644 index 55666ea58e..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Lmon.json +++ /dev/null @@ -1,954 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"land", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_Lmon" - }, - "variable_entry":{ - "baresoilFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by bare soil.", - "dimensions":"longitude latitude time typebare", - "frequency":"mon", - "long_name":"Bare Soil Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"baresoilFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "burntFractionAll":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of grid cell burned due to all fires including natural and anthropogenic fires and those associated with anthropogenic land use change", - "dimensions":"longitude latitude time typeburnt", - "frequency":"mon", - "long_name":"Percentage of Entire Grid cell that is Covered by Burnt Vegetation (All Classes)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"burntFractionAll", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "c3PftFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by C3 PFTs (including grass, crops, and trees).", - "dimensions":"longitude latitude time typec3pft", - "frequency":"mon", - "long_name":"Total C3 PFT Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"c3PftFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "c4PftFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by C4 PFTs (including grass and crops).", - "dimensions":"longitude latitude time typec4pft", - "frequency":"mon", - "long_name":"Total C4 PFT Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"c4PftFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "cCwd":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in woody debris (dead organic matter composed of coarse wood. It is distinct from litter)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Coarse Woody Debris", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cCwd", - "positive":"", - "standard_name":"wood_debris_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cLeaf":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in leaves.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Leaves", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cLeaf", - "positive":"", - "standard_name":"leaf_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cLitter":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Litter Pool", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cLitter", - "positive":"", - "standard_name":"litter_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cLitterAbove":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Above-Ground Litter", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cLitterAbove", - "positive":"", - "standard_name":"surface_litter_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cLitterBelow":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Below-Ground Litter", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cLitterBelow", - "positive":"", - "standard_name":"subsurface_litter_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cProduct":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in that has been removed from the environment through land use change.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Products of Land Use Change", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cProduct", - "positive":"", - "standard_name":"carbon_content_of_products_of_anthropogenic_land_use_change", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cRoot":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in roots, including fine and coarse roots.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Roots", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cRoot", - "positive":"", - "standard_name":"root_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cSoilFast":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in fast soil pool. Fast means a lifetime of less than 10 years for reference climate conditions (20th century) in the absence of water limitations.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Fast Soil Pool", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cSoilFast", - "positive":"", - "standard_name":"fast_soil_pool_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cSoilMedium":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in medium (rate) soil pool. Medium means a lifetime of more than than 10 years and less than 100 years for reference climate conditions (20th century) in the absence of water limitations.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Medium Soil Pool", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cSoilMedium", - "positive":"", - "standard_name":"medium_soil_pool_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cSoilSlow":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in slow soil pool. Slow means a lifetime of more than 100 years for reference climate (20th century) in the absence of water limitations.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Slow Soil Pool", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cSoilSlow", - "positive":"", - "standard_name":"slow_soil_pool_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cVeg":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass per unit area in vegetation.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass in Vegetation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cVeg", - "positive":"", - "standard_name":"vegetation_carbon_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "cropFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by crop.", - "dimensions":"longitude latitude time typecrop", - "frequency":"mon", - "long_name":"Crop Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cropFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "evspsblsoi":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Water evaporation from soil (including sublimation).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Evaporation from Soil", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"evspsblsoi", - "positive":"", - "standard_name":"water_evaporation_flux_from_soil", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "evspsblveg":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The canopy evaporation and sublimation (if present in model); may include dew formation as a negative flux.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Evaporation from Canopy", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"evspsblveg", - "positive":"", - "standard_name":"water_evaporation_flux_from_canopy", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fFire":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"CO2 emissions (expressed as a carbon mass flux per unit area) from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosphere from Land Use Change).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to CO2 Emission from Fire", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fFire", - "positive":"up", - "standard_name":"surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fGrazing":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area due to grazing on land", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Grazing on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fGrazing", - "positive":"up", - "standard_name":"surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fHarvest":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area due to crop harvesting", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Crop Harvesting", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fHarvest", - "positive":"up", - "standard_name":"surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fLitterSoil":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area into soil from litter (dead plant material in or above the soil).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Carbon Mass Flux from Litter to Soil", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fLitterSoil", - "positive":"", - "standard_name":"carbon_mass_flux_into_soil_from_litter", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fVegLitter":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Carbon Mass Flux from Vegetation to Litter", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fVegLitter", - "positive":"", - "standard_name":"litter_carbon_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fVegSoil":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area from vegetation directly into soil, without intermediate conversion to litter.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Carbon Mass Flux from Vegetation Directly to Soil", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fVegSoil", - "positive":"", - "standard_name":"carbon_mass_flux_into_soil_from_vegetation_excluding_litter", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fapar":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The fraction of incoming solar radiation in the photosynthetically active radiation spectral region that is absorbed by a vegetation canopy.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Fraction of Absorbed Photosynthetically Active Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fapar", - "positive":"", - "standard_name":"fraction_of_surface_downwelling_photosynthetic_radiative_flux_absorbed_by_vegetation", - "type":"real", - "units":"1", - "valid_max":"1.0", - "valid_min":"0.0" - }, - "gpp":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"gpp", - "positive":"", - "standard_name":"gross_primary_productivity_of_biomass_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "grassFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by natural grass.", - "dimensions":"longitude latitude time typenatgr", - "frequency":"mon", - "long_name":"Natural Grass Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"grassFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "lai":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Leaf Area Index", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"lai", - "positive":"", - "standard_name":"leaf_area_index", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "landCoverFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of grid cell area occupied by different model vegetation/land cover categories. The categories may differ from model to model, depending on each model's subgrid land cover category definitions. Categories may include natural vegetation, anthropogenic vegetation, bare soil, lakes, urban areas, glaciers, etc. Sum of all should equal the fraction of the grid-cell that is land.", - "dimensions":"longitude latitude vegtype time", - "frequency":"mon", - "long_name":"Plant Functional Type Grid Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"landCoverFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "mrfso":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The mass per unit area (summed over all model layers) of frozen water.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Soil Frozen Water Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrfso", - "positive":"", - "standard_name":"soil_frozen_water_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "mrro":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Runoff", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrro", - "positive":"", - "standard_name":"runoff_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "mrros":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Runoff", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrros", - "positive":"", - "standard_name":"surface_runoff_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "mrso":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"the mass per unit area (summed over all soil layers) of water in all phases.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Total Soil Moisture Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrso", - "positive":"", - "standard_name":"soil_moisture_content", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "mrsos":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The mass of water in all phases in the upper 10cm of the soil layer.", - "dimensions":"longitude latitude time sdepth1", - "frequency":"mon", - "long_name":"Moisture in Upper Portion of Soil Column", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrsos", - "positive":"", - "standard_name":"moisture_content_of_soil_layer", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "nbp":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"This is the net mass flux of carbon from atmosphere into land, calculated as photosynthesis MINUS the sum of plant and soil respiration, carbon fluxes from fire, harvest, grazing and land use change. Positive flux is into the land.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux out of Atmosphere due to Net Biospheric Production on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"nbp", - "positive":"down", - "standard_name":"surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "ndvi":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Normalized Difference Vegetation Index", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ndvi", - "positive":"", - "standard_name":"normalized_difference_vegetation_index", - "type":"real", - "units":"1", - "valid_max":"1.0", - "valid_min":"-0.1" - }, - "npp":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux out of Atmosphere due to Net Primary Production on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"npp", - "positive":"down", - "standard_name":"net_primary_productivity_of_biomass_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "nppLeaf":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"This is the rate of carbon uptake by leaves due to NPP", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux due to NPP Allocation to Leaf", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"nppLeaf", - "positive":"down", - "standard_name":"net_primary_productivity_of_carbon_accumulated_in_leaves", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "nppRoot":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"This is the rate of carbon uptake by roots due to NPP", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux due to NPP Allocation to Roots", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"nppRoot", - "positive":"down", - "standard_name":"net_primary_productivity_of_carbon_accumulated_in_roots", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "nppWood":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"This is the rate of carbon uptake by wood due to NPP", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux due to NPP Allocation to Wood", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"nppWood", - "positive":"down", - "standard_name":"net_primary_productivity_of_carbon_accumulated_in_wood", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "pastureFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by anthropogenic pasture.", - "dimensions":"longitude latitude time typepasture", - "frequency":"mon", - "long_name":"Anthropogenic Pasture Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pastureFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "prveg":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Precipitation onto Canopy", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prveg", - "positive":"", - "standard_name":"precipitation_flux_onto_canopy", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "rGrowth":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Growth Autotrophic Respiration on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rGrowth", - "positive":"up", - "standard_name":"surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "rMaint":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Maintenance Autotrophic Respiration on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rMaint", - "positive":"up", - "standard_name":"surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "ra":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area into atmosphere due to autotrophic respiration on land (respiration by producers) [see rh for heterotrophic production]", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ra", - "positive":"up", - "standard_name":"plant_respiration_carbon_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "residualFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is land and is covered by neither vegetation nor bare-soil (e.g., urban, ice, lakes, etc.)", - "dimensions":"longitude latitude time typeresidual", - "frequency":"mon", - "long_name":"Fraction of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"residualFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "rh":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Carbon mass flux per unit area into atmosphere due to heterotrophic respiration on land (respiration by consumers)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rh", - "positive":"up", - "standard_name":"heterotrophic_respiration_carbon_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "shrubFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by shrub.", - "dimensions":"longitude latitude time typeshrub", - "frequency":"mon", - "long_name":"Shrub Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"shrubFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "tran":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Transpiration (may include dew formation as a negative flux).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Transpiration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tran", - "positive":"up", - "standard_name":"transpiration_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "treeFrac":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by trees.", - "dimensions":"longitude latitude time typetree", - "frequency":"mon", - "long_name":"Tree Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"treeFrac", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "treeFracPrimDec":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of the entire grid cell that is covered by total primary deciduous trees.", - "dimensions":"longitude latitude time typepdec", - "frequency":"mon", - "long_name":"Total Primary Deciduous Tree Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"treeFracPrimDec", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "treeFracPrimEver":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by primary evergreen trees.", - "dimensions":"longitude latitude time typepever", - "frequency":"mon", - "long_name":"Total Primary Evergreen Tree Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"treeFracPrimEver", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "treeFracSecDec":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by secondary deciduous trees.", - "dimensions":"longitude latitude time typesdec", - "frequency":"mon", - "long_name":"Total Secondary Deciduous Tree Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"treeFracSecDec", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "treeFracSecEver":{ - "cell_measures":"", - "cell_methods":"area: mean where land over all_area_types time: mean", - "comment":"Percentage of entire grid cell that is covered by secondary evergreen trees.", - "dimensions":"longitude latitude time typesever", - "frequency":"mon", - "long_name":"Total Secondary Evergreen Tree Cover Fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"treeFracSecEver", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "tsl":{ - "cell_measures":"", - "cell_methods":"area: mean where land time: mean", - "comment":"Temperature of soil. Reported as missing for grid cells with no land.", - "dimensions":"longitude latitude sdepth time", - "frequency":"mon", - "long_name":"Temperature of Soil", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tsl", - "positive":"", - "standard_name":"soil_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Omon.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Omon.json deleted file mode 100644 index 2c5306fcb9..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_Omon.json +++ /dev/null @@ -1,4609 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"olevel", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"ocean", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_Omon" - }, - "variable_entry":{ - "agessc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Time elapsed since water was last in surface layer of the ocean.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Age Since Surface Contact", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"agessc", - "positive":"", - "standard_name":"sea_water_age_since_surface_contact", - "type":"real", - "units":"yr", - "valid_max":"", - "valid_min":"" - }, - "arag":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Aragonite Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"arag", - "positive":"", - "standard_name":"mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "bacc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of bacterial carbon component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Bacterial Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bacc", - "positive":"", - "standard_name":"mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "bfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of particulate organic iron component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bfe", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "bfeos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate organic iron component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bfeos", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "bigthetao":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sea water conservative temperature (this should be contributed only for models using conservative temperature as prognostic field)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Convervative Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bigthetao", - "positive":"", - "standard_name":"sea_water_conservative_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "bigthetaoga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Diagnostic should be contributed only for models using conservative temperature as prognostic field.", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Average Sea Water Conservative Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bigthetaoga", - "positive":"", - "standard_name":"sea_water_conservative_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "bsi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of particulate silica component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Particulate Organic Matter expressed as silicon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bsi", - "positive":"", - "standard_name":"mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "bsios":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate silica component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Particulate Organic Matter expressed as Silicon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"bsios", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "calc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Calcite Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"calc", - "positive":"", - "standard_name":"mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "cfc11":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Moles Per Unit Mass of CFC-11 in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cfc11", - "positive":"", - "standard_name":"mole_concentration_of_cfc11_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "cfc12":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Moles Per Unit Mass of CFC-12 in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"cfc12", - "positive":"", - "standard_name":"mole_concentration_of_cfc12_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "chl":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Total Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chl", - "positive":"", - "standard_name":"mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlcalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlcalc", - "positive":"", - "standard_name":"mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlcalcos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlcalcos", - "positive":"", - "standard_name":"mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chldiat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Chlorophyll from diatom phytoplankton component concentration alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Diatom expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chldiat", - "positive":"", - "standard_name":"mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chldiatos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll from diatom phytoplankton component concentration alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Diatoms expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chldiatos", - "positive":"", - "standard_name":"mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chldiaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chldiaz", - "positive":"", - "standard_name":"mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chldiazos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chldiazos", - "positive":"", - "standard_name":"mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlmisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Chlorophyll from additional phytoplankton component concentrations alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlmisc", - "positive":"", - "standard_name":"mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlmiscos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll from additional phytoplankton component concentrations alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlmiscos", - "positive":"", - "standard_name":"mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of chlorophyll from all phytoplankton group concentrations at the sea surface. In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Total Phytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlos", - "positive":"", - "standard_name":"mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlpico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlpico", - "positive":"", - "standard_name":"mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "chlpicoos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"chlpicoos", - "positive":"", - "standard_name":"mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "type":"real", - "units":"kg m-3", - "valid_max":"", - "valid_min":"" - }, - "co3":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Carbonate ion Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co3", - "positive":"", - "standard_name":"mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "co3abio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Abiotic Carbonate ion Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co3abio", - "positive":"", - "standard_name":"mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "co3nat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Natural Carbonate ion Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co3nat", - "positive":"", - "standard_name":"mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "co3satarag":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Carbonate ion Concentration for sea water in equilibrium with pure Aragonite", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co3satarag", - "positive":"", - "standard_name":"mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "co3satcalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Carbonate ion Concentration for sea water in equilibrium with pure Calcite", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"co3satcalc", - "positive":"", - "standard_name":"mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "detoc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of detrital organic carbon component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Detrital Organic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"detoc", - "positive":"", - "standard_name":"mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved iron in sea water, including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Dissolved Iron in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dfe", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dfeos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Dissolved Iron Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dfeos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissi13c":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Inorganic 13Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissi13c", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissi13cos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Dissolved Inorganic 13Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissi13cos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon13_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissi14cabio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Abiotic Dissolved Inorganic 14Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissi14cabio", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon14_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissi14cabioos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Abiotic Dissolved Inorganic 14Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissi14cabioos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon14_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissic":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Inorganic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissic", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissicabio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Abiotic Dissolved Inorganic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissicabio", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissicabioos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Abiotic Dissolved Inorganic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissicabioos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissicnat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Natural Dissolved Inorganic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissicnat", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissicnatos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Natural Dissolved Inorganic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissicnatos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dissoc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Organic Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dissoc", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dmso":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Mole concentration of dimethyl sulphide in water", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Dimethyl Sulphide in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dmso", - "positive":"", - "standard_name":"mole_concentration_of_dimethyl_sulfide_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dmsos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Dimethyl Sulphide in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dmsos", - "positive":"", - "standard_name":"mole_concentration_of_dimethyl_sulfide_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "dpco2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Delta PCO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dpco2", - "positive":"", - "standard_name":"surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "dpco2abio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Abiotic Delta PCO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dpco2abio", - "positive":"", - "standard_name":"surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "dpco2nat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Natural Delta PCO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dpco2nat", - "positive":"", - "standard_name":"surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "dpo2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Delta PO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"dpo2", - "positive":"", - "standard_name":"surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "eparag100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Aragonite", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"eparag100", - "positive":"", - "standard_name":"sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epc100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Particle Organic Carbon", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epc100", - "positive":"", - "standard_name":"sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epcalc100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Calcite", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epcalc100", - "positive":"", - "standard_name":"sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epfe100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Particulate Iron", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epfe100", - "positive":"", - "standard_name":"sinking_mole_flux_of_particulate_iron_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epn100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Particulate Nitrogen", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epn100", - "positive":"", - "standard_name":"sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epp100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Particulate Phosphorus", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epp100", - "positive":"", - "standard_name":"sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "epsi100":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth100m", - "frequency":"mon", - "long_name":"Downward Flux of Particulate Silica", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"epsi100", - "positive":"", - "standard_name":"sinking_mole_flux_of_particulate_silicon_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "evs":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"computed as the total mass of water vapor evaporating from the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Evaporation Flux Where Ice Free Ocean over Sea", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"evs", - "positive":"", - "standard_name":"water_evaporation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "expc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Downward flux of particulate organic carbon", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sinking Particulate Organic Carbon Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"expc", - "positive":"down", - "standard_name":"sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtalk":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of alkalinity", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Biological Alkalinity due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtalk", - "positive":"", - "standard_name":"integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtdic":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtdic", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtdife":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of dissolved inorganic iron", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Dissolved Inorganic Iron due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtdife", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtdin":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtdin", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtdip":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of phosphate", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Dissolved Inorganic Phosphorus due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtdip", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fbddtdisi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Dissolved Inorganic Silicon due to Biological Activity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fbddtdisi", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtalk":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net time rate of change of alkalinity", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Total Alkalinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtalk", - "positive":"", - "standard_name":"integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtdic":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Net Dissolved Inorganic Carbon", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtdic", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtdife":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net time rate of change of dissolved inorganic iron", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Net Dissolved Inorganic Iron", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtdife", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtdin":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Net Dissolved Inorganic Nitrogen", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtdin", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtdip":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net time rate of change of phosphate", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Net Dissolved Inorganic Phosphate", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtdip", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fddtdisi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea depth: sum where sea (top 100m only) time: mean", - "comment":"vertical integral of net time rate of change of dissolved inorganic silicate", - "dimensions":"longitude latitude time olayer100m", - "frequency":"mon", - "long_name":"Rate of Change of Net Dissolved Inorganic Silicon", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fddtdisi", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fg13co2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of Abiotic 13CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fg13co2", - "positive":"down", - "standard_name":"surface_downward_mass_flux_of_carbon13_dioxide_abiotic_analogue_expressed_as_carbon13", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fg14co2abio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of abiotic 14CO2 (positive into ocean)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of Abiotic 14CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fg14co2abio", - "positive":"down", - "standard_name":"surface_downward_mass_flux_of_carbon14_dioxide_abiotic_analogue_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgcfc11":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"gas exchange flux of CFC11", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward CFC11 flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgcfc11", - "positive":"down", - "standard_name":"surface_downward_mole_flux_of_cfc11", - "type":"real", - "units":"mol sec-1 m-2", - "valid_max":"", - "valid_min":"" - }, - "fgcfc12":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"gas exchange flux of CFC12", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward CFC12 flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgcfc12", - "positive":"down", - "standard_name":"surface_downward_mole_flux_of_cfc12", - "type":"real", - "units":"mol sec-1 m-2", - "valid_max":"", - "valid_min":"" - }, - "fgco2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of CO2 (positive into ocean)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of Total CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgco2", - "positive":"down", - "standard_name":"surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgco2abio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of abiotic CO2 (positive into ocean)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of Abiotic CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgco2abio", - "positive":"down", - "standard_name":"surface_downward_mass_flux_of_carbon_dioxide_abiotic_analogue_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgco2nat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of natural CO2 (positive into ocean)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of Natural CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgco2nat", - "positive":"down", - "standard_name":"surface_downward_mass_flux_of_carbon_dioxide_natural_analogue_expressed_as_carbon", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgdms":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of DMS (positive into atmosphere)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Upward Flux of DMS", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgdms", - "positive":"up", - "standard_name":"surface_upward_mole_flux_of_dimethyl_sulfide", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgo2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Gas exchange flux of O2 (positive into ocean)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Flux of O2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgo2", - "positive":"down", - "standard_name":"surface_downward_mole_flux_of_molecular_oxygen", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fgsf6":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"gas exchange flux of SF6", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward SF6 flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fgsf6", - "positive":"down", - "standard_name":"surface_downward_mole_flux_of_sulfur_hexafluoride", - "type":"real", - "units":"mol sec-1 m-2", - "valid_max":"", - "valid_min":"" - }, - "ficeberg":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water From Icebergs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ficeberg", - "positive":"", - "standard_name":"water_flux_into_sea_water_from_icebergs", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "ficeberg2d":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water From Icebergs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ficeberg", - "positive":"", - "standard_name":"water_flux_into_sea_water_from_icebergs", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "frfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron Loss to Sediments", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"frfe", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fric":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Inorganic Carbon loss to sediments", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downward Inorganic Carbon Flux at Ocean Bottom", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fric", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "friver":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water From Rivers", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"friver", - "positive":"", - "standard_name":"water_flux_into_sea_water_from_rivers", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "frn":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen Loss to Sediments and through Denitrification", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"frn", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "froc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Organic Carbon loss to sediments", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downward Organic Carbon Flux at Ocean Bottom", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"froc", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fsfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Net Flux of Iron", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fsfe", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fsitherm":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water due to Sea Ice Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fsitherm", - "positive":"", - "standard_name":"water_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "fsn":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Downward Net Flux of Nitrogen", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"fsn", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "graz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Total Grazing of Phytoplankton by Zooplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"graz", - "positive":"", - "standard_name":"tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", - "type":"real", - "units":"mol m-3 s-1", - "valid_max":"", - "valid_min":"" - }, - "hfbasin":{ - "cell_measures":"", - "cell_methods":"longitude: mean (basin) time: mean", - "comment":"Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"Northward Ocean Heat Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfbasin", - "positive":"", - "standard_name":"northward_ocean_heat_transport", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfbasinpadv":{ - "cell_measures":"", - "cell_methods":"longitude: mean (basin) time: mean", - "comment":"Contributions to heat transport from parameterized eddy-induced advective transport due to any subgrid advective process. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"northward ocean heat transport due to parameterized eddy advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfbasinpadv", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_parameterized_eddy_advection", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfbasinpmadv":{ - "cell_measures":"", - "cell_methods":"longitude: mean (basin) time: mean", - "comment":"Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"northward ocean heat transport due to parameterized mesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfbasinpmadv", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfbasinpmdiff":{ - "cell_measures":"", - "cell_methods":"longitude: mean (basin) time: mean", - "comment":"Contributions to heat transport from parameterized mesoscale eddy-induced diffusive transport (i.e., neutral diffusion). Diagnosed here as a function of latitude and basin.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"northward ocean heat transport due to parameterized mesoscale diffusion", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfbasinpmdiff", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfbasinpsmadv":{ - "cell_measures":"", - "cell_methods":"longitude: mean (basin) time: mean", - "comment":"Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"northward ocean heat transport due to parameterized submesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfbasinpsmadv", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_parameterized_submesoscale_eddy_advection", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfcorr":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Heat Flux Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfcorr", - "positive":"down", - "standard_name":"heat_flux_correction", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfds":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downward Heat Flux at Sea Water Surface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfds", - "positive":"down", - "standard_name":"surface_downward_heat_flux_in_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfevapds":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"This is defined as 'where ice_free_sea over sea'", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfevapds", - "positive":"up", - "standard_name":"temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfgeou":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Upward Geothermal Heat Flux at Sea Floor", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfgeou", - "positive":"up", - "standard_name":"upward_geothermal_heat_flux_at_sea_floor", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfibthermds":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Iceberg Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfibthermds", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfibthermds2d":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Iceberg Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfibthermds", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hflso":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"This is defined as with the cell methods string: where ice_free_sea over sea", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Latent Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hflso", - "positive":"up", - "standard_name":"surface_downward_latent_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfrainds":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"This is defined as 'where ice_free_sea over sea'; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell. All such heat fluxes are computed based on Celsius scale.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfrainds", - "positive":"down", - "standard_name":"temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfrunoffds":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfrunoffds", - "positive":"", - "standard_name":"temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfrunoffds2d":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfrunoffds", - "positive":"", - "standard_name":"temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfsifrazil":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Frazil Ice Formation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfsifrazil", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfsifrazil2d":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Frazil Ice Formation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfsifrazil", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfsnthermds":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Snow Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfsnthermds", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_snow_thermodynamics", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfsnthermds2d":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Heat Flux into Sea Water due to Snow Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfsnthermds", - "positive":"", - "standard_name":"heat_flux_into_sea_water_due_to_snow_thermodynamics", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfsso":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"This is defined as 'where ice_free_sea over sea'", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Sensible Heat Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfsso", - "positive":"up", - "standard_name":"surface_downward_sensible_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "hfx":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Contains all contributions to 'x-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ocean Heat X Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfx", - "positive":"", - "standard_name":"ocean_heat_x_transport", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "hfy":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Contains all contributions to 'y-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ocean Heat Y Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"hfy", - "positive":"", - "standard_name":"ocean_heat_y_transport", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "htovgyre":{ - "cell_measures":"", - "cell_methods":"longitude: mean time: mean", - "comment":"From all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"Northward Ocean Heat Transport due to Gyre", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"htovgyre", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_gyre", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "htovovrt":{ - "cell_measures":"", - "cell_methods":"longitude: mean time: mean", - "comment":"From all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"Northward Ocean Heat Transport due to Overturning", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"htovovrt", - "positive":"", - "standard_name":"northward_ocean_heat_transport_due_to_overturning", - "type":"real", - "units":"W", - "valid_max":"", - "valid_min":"" - }, - "icfriver":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Flux of Inorganic Carbon Into Ocean Surface by Runoff", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"icfriver", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intdic":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated DIC", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Dissolved Inorganic Carbon Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intdic", - "positive":"", - "standard_name":"ocean_mass_content_of_dissolved_inorganic_carbon", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "intdoc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated DOC (explicit pools only)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Dissolved Organic Carbon Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intdoc", - "positive":"", - "standard_name":"ocean_mass_content_of_dissolved_organic_carbon", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "intparag":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated aragonite production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Aragonite Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intparag", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpbfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated biogenic iron production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpbfe", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_iron_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpbn":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated biogenic nitrogen production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpbn", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpbp":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated biogenic phosphorus production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Phosphorus Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpbp", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpbsi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated biogenic silica production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Silica Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpbsi", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpcalcite":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated calcite production", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Calcite Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpcalcite", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpn2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated nitrogen fixation", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen Fixation Rate in Ocean", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpn2", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpoc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated POC", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Particulate Organic Carbon Content", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpoc", - "positive":"", - "standard_name":"ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "intpp":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated total primary (organic carbon) production by phytoplankton. This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Primary Organic Carbon Production by All Types of Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpp", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intppcalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intppcalc", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intppdiat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Primary Organic Carbon Production by Diatoms", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intppdiat", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intppdiaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Primary Mole Productivity of Carbon by Diazotrophs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intppdiaz", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intppmisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated total primary (organic carbon) production by other phytoplankton components alone", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Primary Organic Carbon Production by Other Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intppmisc", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intppnitrate":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intppnitrate", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "intpppico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Primary Mole Productivity of Carbon by Picophytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"intpppico", - "positive":"", - "standard_name":"net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "limfecalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron limitation of Calcareous Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limfecalc", - "positive":"", - "standard_name":"iron_growth_limitation_of_calcareous_phytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limfediat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron limitation of Diatoms", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limfediat", - "positive":"", - "standard_name":"iron_growth_limitation_of_diatoms", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limfediaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron limitation of Diazotrophs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limfediaz", - "positive":"", - "standard_name":"iron_growth_limitation_of_diazotrophs", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limfemisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron Limitation of Other Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limfemisc", - "positive":"", - "standard_name":"iron_growth_limitation_of_miscellaneous_phytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limfepico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Iron limitation of Picophytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limfepico", - "positive":"", - "standard_name":"iron_growth_limitation_of_picophytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limirrcalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Irradiance limitation of Calcareous Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limirrcalc", - "positive":"", - "standard_name":"growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limirrdiat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Irradiance limitation of Diatoms", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limirrdiat", - "positive":"", - "standard_name":"growth_limitation_of_diatoms_due_to_solar_irradiance", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limirrdiaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Irradiance limitation of Diazotrophs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limirrdiaz", - "positive":"", - "standard_name":"growth_limitation_of_diazotrophs_due_to_solar_irradiance", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limirrmisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Irradiance Limitation of Other Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limirrmisc", - "positive":"", - "standard_name":"growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limirrpico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Irradiance limitation of Picophytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limirrpico", - "positive":"", - "standard_name":"growth_limitation_of_picophytoplankton_due_to_solar_irradiance", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limncalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen limitation of Calcareous Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limncalc", - "positive":"", - "standard_name":"nitrogen_growth_limitation_of_calcareous_phytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limndiat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen limitation of Diatoms", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limndiat", - "positive":"", - "standard_name":"nitrogen_growth_limitation_of_diatoms", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limndiaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen limitation of Diazotrophs", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limndiaz", - "positive":"", - "standard_name":"nitrogen_growth_limitation_of_diazotrophs", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limnmisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen Limitation of Other Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limnmisc", - "positive":"", - "standard_name":"nitrogen_growth_limitation_of_miscellaneous_phytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "limnpico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Nitrogen limitation of Picophytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"limnpico", - "positive":"", - "standard_name":"nitrogen_growth_limitation_of_picophytoplankton", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "masscello":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Mass Per Unit Area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"masscello", - "positive":"", - "standard_name":"sea_water_mass_per_unit_area", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "masso":{ - "cell_measures":"", - "cell_methods":"area: sum where sea time: mean", - "comment":"Total mass of liquid sea water. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea Water Mass", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"masso", - "positive":"", - "standard_name":"sea_water_mass", - "type":"real", - "units":"kg", - "valid_max":"", - "valid_min":"" - }, - "mfo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"oline time", - "frequency":"mon", - "long_name":"Sea Water Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mfo", - "positive":"", - "standard_name":"sea_water_transport_across_line", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "mlotst":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Sigma T is potential density referenced to ocean surface.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ocean Mixed Layer Thickness Defined by Sigma T", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mlotst", - "positive":"", - "standard_name":"ocean_mixed_layer_thickness_defined_by_sigma_t", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "mlotstmax":{ - "cell_measures":"", - "cell_methods":"area: mean time: maximum", - "comment":"Sigma T is potential density referenced to ocean surface.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Maximum Ocean Mixed Layer Thickness Defined by Sigma T", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mlotstmax", - "positive":"", - "standard_name":"ocean_mixed_layer_thickness_defined_by_sigma_t", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "mlotstmin":{ - "cell_measures":"", - "cell_methods":"area: mean time: minimum", - "comment":"Sigma T is potential density referenced to ocean surface.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Minimum Ocean Mixed Layer Thickness Defined by Sigma T", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mlotstmin", - "positive":"", - "standard_name":"ocean_mixed_layer_thickness_defined_by_sigma_t", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "mlotstsq":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Square of Ocean Mixed Layer Thickness Defined by Sigma T", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mlotstsq", - "positive":"", - "standard_name":"square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", - "type":"real", - "units":"m2", - "valid_max":"", - "valid_min":"" - }, - "msftbarot":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Streamfunction or its approximation for free surface models. See OMDP document for details.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ocean Barotropic Mass Streamfunction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftbarot", - "positive":"", - "standard_name":"ocean_barotropic_mass_streamfunction", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftmrho":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude rho basin time", - "frequency":"mon", - "long_name":"Ocean Meridional Overturning Mass Streamfunction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftmrho", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftmrhompa":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions":"latitude rho basin time", - "frequency":"mon", - "long_name":"ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftmrhompa", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftmz":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"Ocean Meridional Overturning Mass Streamfunction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftmz", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftmzmpa":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftmzmpa", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftmzsmpa":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"Report only if there is a submesoscale eddy parameterization.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"ocean meridional overturning mass streamfunction due to parameterized submesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftmzsmpa", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftyrho":{ - "cell_measures":"", - "cell_methods":"time: mean grid_longitude: mean", - "comment":"Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude rho basin time", - "frequency":"mon", - "long_name":"Ocean Y Overturning Mass Streamfunction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftyrho", - "positive":"", - "standard_name":"ocean_y_overturning_mass_streamfunction", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftyrhompa":{ - "cell_measures":"", - "cell_methods":"time: mean grid_longitude: mean", - "comment":"CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions":"latitude rho basin time", - "frequency":"mon", - "long_name":"ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftyrhompa", - "positive":"", - "standard_name":"ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftyz":{ - "cell_measures":"", - "cell_methods":"time: mean grid_longitude: mean", - "comment":"Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"Ocean Y Overturning Mass Streamfunction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftyz", - "positive":"", - "standard_name":"ocean_y_overturning_mass_streamfunction", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftyzmpa":{ - "cell_measures":"", - "cell_methods":"time: mean grid_longitude: mean", - "comment":"CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftyzmpa", - "positive":"", - "standard_name":"ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "msftyzsmpa":{ - "cell_measures":"", - "cell_methods":"longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "comment":"Report only if there is a submesoscale eddy parameterization.", - "dimensions":"latitude olevel basin time", - "frequency":"mon", - "long_name":"ocean Y overturning mass streamfunction due to parameterized submesoscale advection", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"msftyzsmpa", - "positive":"", - "standard_name":"ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "nh4":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Ammonium Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"nh4", - "positive":"", - "standard_name":"mole_concentration_of_ammonium_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "no3":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Nitrate Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"no3", - "positive":"", - "standard_name":"mole_concentration_of_nitrate_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "no3os":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Dissolved Nitrate Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"no3os", - "positive":"", - "standard_name":"mole_concentration_of_nitrate_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "o2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Oxygen Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o2", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "o2min":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Oxygen Minimum Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o2min", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "o2os":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Dissolved Oxygen Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o2os", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "o2sat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Dissolved Oxygen Concentration at Saturation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o2sat", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "o2satos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Dissolved Oxygen Concentration at Saturation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"o2satos", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "obvfsq":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Square of Brunt Vaisala Frequency in Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"obvfsq", - "positive":"", - "standard_name":"square_of_brunt_vaisala_frequency_in_sea_water", - "type":"real", - "units":"s-2", - "valid_max":"", - "valid_min":"" - }, - "ocfriver":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Organic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Flux of Organic Carbon Into Ocean Surface by Runoff", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ocfriver", - "positive":"", - "standard_name":"tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", - "type":"real", - "units":"mol m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "pbfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Biogenic Iron Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pbfe", - "positive":"", - "standard_name":"tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", - "type":"real", - "units":"mol m-3 s-1", - "valid_max":"", - "valid_min":"" - }, - "pbo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Water Pressure at Sea floor", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pbo", - "positive":"", - "standard_name":"sea_water_pressure_at_sea_floor", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "pbsi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Biogenic Silica Production", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pbsi", - "positive":"", - "standard_name":"tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", - "type":"real", - "units":"mol m-3 s-1", - "valid_max":"", - "valid_min":"" - }, - "ph":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"pH", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ph", - "positive":"", - "standard_name":"sea_water_ph_reported_on_total_scale", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "phabio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1 (abiotic component)..", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Abiotic pH", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phabio", - "positive":"", - "standard_name":"sea_water_ph_abiotic_analogue_reported_on_total_scale", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "phabioos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Abiotic pH", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phabioos", - "positive":"", - "standard_name":"sea_water_ph_abiotic_analogue_reported_on_total_scale", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "phnat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Natural pH", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phnat", - "positive":"", - "standard_name":"sea_water_ph_natural_analogue_reported_on_total_scale", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "phnatos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Natural pH", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phnatos", - "positive":"", - "standard_name":"sea_water_ph_natural_analogue_reported_on_total_scale", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "phyc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Phytoplankton Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phyc", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phycalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Calcareous Phytoplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phycalc", - "positive":"", - "standard_name":"mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phycos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton organic carbon component concentrations at the sea surface", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Phytoplankton Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phycos", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phydiat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon from the diatom phytoplankton component concentration alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Diatoms expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phydiat", - "positive":"", - "standard_name":"mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phydiaz":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Diazotrophs Expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phydiaz", - "positive":"", - "standard_name":"mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phyfe":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton iron component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Total Phytoplankton expressed as Iron in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phyfe", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phyfeos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton iron component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Total Phytoplankton expressed as Iron in Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phyfeos", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phymisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from additional phytoplankton component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phymisc", - "positive":"", - "standard_name":"mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phyn":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton nitrogen component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Total Phytoplankton expressed as Nitrogen in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phyn", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phynos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton nitrogen component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Phytoplankton Nitrogen in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phynos", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phyp":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton phosphorus components", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phyp", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phypico":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Picophytoplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phypico", - "positive":"", - "standard_name":"mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "phypos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton phosphorus components", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"phypos", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "physi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton silica component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"physi", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "physios":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of phytoplankton silica component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"physios", - "positive":"", - "standard_name":"mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "pnitrate":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Primary (organic carbon) production by phytoplankton due to nitrate uptake alone", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Primary Carbon Production by Phytoplankton due to Nitrate Uptake Alone", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pnitrate", - "positive":"", - "standard_name":"tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", - "type":"real", - "units":"mol m-3 s-1", - "valid_max":"", - "valid_min":"" - }, - "po4":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Total Dissolved Inorganic Phosphorus Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"po4", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "pon":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate organic nitrogen component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pon", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "ponos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate organic nitrogen component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"ponos", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "pop":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate organic phosphorus component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pop", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "popos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of particulate organic phosphorus component concentrations", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"popos", - "positive":"", - "standard_name":"mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "pp":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"total primary (organic carbon) production by phytoplankton", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Primary Carbon Production by Total Phytoplankton", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pp", - "positive":"", - "standard_name":"tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", - "type":"real", - "units":"mol m-3 s-1", - "valid_max":"", - "valid_min":"" - }, - "prra":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Rainfall Flux where Ice Free Ocean over Sea", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prra", - "positive":"", - "standard_name":"rainfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "prsn":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"at surface; includes precipitation of all forms of water in the solid phase", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snowfall Flux where Ice Free Ocean over Sea", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"prsn", - "positive":"", - "standard_name":"snowfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "pso":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Water Pressure at Sea Water Surface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"pso", - "positive":"", - "standard_name":"sea_water_pressure_at_sea_water_surface", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "rlntds":{ - "cell_measures":"", - "cell_methods":"area: mean where ice_free_sea over sea time: mean", - "comment":"This is defined as 'where ice_free_sea over sea'", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Net Downward Longwave Radiation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rlntds", - "positive":"down", - "standard_name":"surface_net_downward_longwave_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsdo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Downwelling Shortwave Radiation in Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsdo", - "positive":"down", - "standard_name":"downwelling_shortwave_flux_in_sea_water", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "rsntds":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net Downward Shortwave Radiation at Sea Water Surface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rsntds", - "positive":"down", - "standard_name":"net_downward_shortwave_flux_at_sea_water_surface", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "sf6":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Moles Per Unit Mass of SF6 in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sf6", - "positive":"", - "standard_name":"mole_concentration_of_sulfur_hexafluoride_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "sfdsi":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downward Sea Ice Basal Salt Flux", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfdsi", - "positive":"down", - "standard_name":"downward_sea_ice_basal_salt_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sfriver":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This field is physical, and it arises when rivers carry a nonzero salt content. Often this is zero, with rivers assumed to be fresh.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Salt Flux into Sea Water from Rivers", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfriver", - "positive":"", - "standard_name":"salt_flux_into_sea_water_from_rivers", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "si":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Total Dissolved Inorganic Silicon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"si", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "sios":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Total Dissolved Inorganic Silicon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sios", - "positive":"", - "standard_name":"mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "sltovgyre":{ - "cell_measures":"", - "cell_methods":"longitude: mean time: mean", - "comment":"From all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"Northward Ocean Salt Transport due to Gyre", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sltovgyre", - "positive":"", - "standard_name":"northward_ocean_salt_transport_due_to_gyre", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "sltovovrt":{ - "cell_measures":"", - "cell_methods":"longitude: mean time: mean", - "comment":"From all advective mass transport processes, resolved and parameterized.", - "dimensions":"latitude basin time", - "frequency":"mon", - "long_name":"Northward Ocean Salt Transport due to Overturning", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sltovovrt", - "positive":"", - "standard_name":"northward_ocean_salt_transport_due_to_overturning", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "so":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"so", - "positive":"", - "standard_name":"sea_water_salinity", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "sob":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Model prognostic salinity at bottom-most model grid cell", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea water salinity at sea floor", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sob", - "positive":"", - "standard_name":"sea_water_salinity_at_sea_floor", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "soga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Mean Sea Water Salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"soga", - "positive":"", - "standard_name":"sea_water_salinity", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "sos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Surface Salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sos", - "positive":"", - "standard_name":"sea_surface_salinity", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "sosga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Average Sea Surface Salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sosga", - "positive":"", - "standard_name":"sea_surface_salinity", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "sossq":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Square of Sea Surface Salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sossq", - "positive":"", - "standard_name":"square_of_sea_surface_salinity", - "type":"real", - "units":"1e-06", - "valid_max":"", - "valid_min":"" - }, - "spco2":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Aqueous Partial Pressure of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"spco2", - "positive":"", - "standard_name":"surface_partial_pressure_of_carbon_dioxide_in_sea_water", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "spco2abio":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Abiotic Surface Aqueous Partial Pressure of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"spco2abio", - "positive":"", - "standard_name":"surface_partial_pressure_of_carbon_dioxide_abiotic_analogue_in_sea_water", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "spco2nat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Natural Surface Aqueous Partial Pressure of CO2", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"spco2nat", - "positive":"", - "standard_name":"surface_partial_pressure_of_carbon_dioxide_natural_analogue_in_sea_water", - "type":"real", - "units":"Pa", - "valid_max":"", - "valid_min":"" - }, - "talk":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Total Alkalinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"talk", - "positive":"", - "standard_name":"sea_water_alkalinity_expressed_as_mole_equivalent", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "talknat":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Natural Total Alkalinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"talknat", - "positive":"", - "standard_name":"sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "talknatos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions":"longitude latitude time depth0m", - "frequency":"mon", - "long_name":"Surface Natural Total Alkalinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"talknatos", - "positive":"", - "standard_name":"sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "tauucorr":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward X Stress Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauucorr", - "positive":"down", - "standard_name":"surface_downward_x_stress_correction", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "tauuo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward X Stress", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauuo", - "positive":"down", - "standard_name":"surface_downward_x_stress", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "tauvcorr":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Y Stress Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauvcorr", - "positive":"down", - "standard_name":"surface_downward_y_stress_correction", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "tauvo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface Downward Y Stress", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tauvo", - "positive":"down", - "standard_name":"surface_downward_y_stress", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "thetao":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Diagnostic should be contributed even for models using conservative temperature as prognostic field.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Potential Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"thetao", - "positive":"", - "standard_name":"sea_water_potential_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "thetaoga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Diagnostic should be contributed even for models using conservative temperature as prognostic field", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Average Sea Water Potential Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"thetaoga", - "positive":"", - "standard_name":"sea_water_potential_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "thkcello":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Ocean Model Cell Thickness", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"thkcello", - "positive":"", - "standard_name":"cell_thickness", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "tob":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Potential temperature at the ocean bottom-most grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Water Potential Temperature at Sea Floor", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tob", - "positive":"", - "standard_name":"sea_water_potential_temperature_at_sea_floor", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "tos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Surface Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tos", - "positive":"", - "standard_name":"sea_surface_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "tosga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves.", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Average Sea Surface Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tosga", - "positive":"", - "standard_name":"sea_surface_temperature", - "type":"real", - "units":"degC", - "valid_max":"", - "valid_min":"" - }, - "tossq":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Square of temperature of liquid ocean.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Square of Sea Surface Temperature", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"tossq", - "positive":"", - "standard_name":"square_of_sea_surface_temperature", - "type":"real", - "units":"degC2", - "valid_max":"", - "valid_min":"" - }, - "umo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"X-ward mass transport from resolved and parameterized advective transport.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Ocean Mass X Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"umo", - "positive":"", - "standard_name":"ocean_mass_x_transport", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "uo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Prognostic x-ward velocity component resolved by the model.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water X Velocity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"uo", - "positive":"", - "standard_name":"sea_water_x_velocity", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "vmo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Y-ward mass transport from resolved and parameterized advective transport.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Ocean Mass Y Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vmo", - "positive":"", - "standard_name":"ocean_mass_y_transport", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "vo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Prognostic x-ward velocity component resolved by the model.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Y Velocity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vo", - "positive":"", - "standard_name":"sea_water_y_velocity", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "volcello":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"grid-cell volume ca. 2000.", - "dimensions":"longitude latitude olevel time", - "frequency":"fx", - "long_name":"Ocean Grid-Cell Volume", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"volcello", - "positive":"", - "standard_name":"ocean_volume", - "type":"real", - "units":"m3", - "valid_max":"", - "valid_min":"" - }, - "volo":{ - "cell_measures":"", - "cell_methods":"area: sum where sea time: mean", - "comment":"Total volume of liquid sea water.", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea Water Volume", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"volo", - "positive":"", - "standard_name":"sea_water_volume", - "type":"real", - "units":"m3", - "valid_max":"", - "valid_min":"" - }, - "vsf":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"It is set to zero in models which receive a real water flux.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux into Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsf", - "positive":"", - "standard_name":"virtual_salt_flux_into_sea_water", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "vsfcorr":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"It is set to zero in models which receive a real water flux.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsfcorr", - "positive":"", - "standard_name":"virtual_salt_flux_correction", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "vsfevap":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"zero for models using real water fluxes.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux into Sea Water due to Evaporation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsfevap", - "positive":"", - "standard_name":"virtual_salt_flux_into_sea_water_due_to_evaporation", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "vsfpr":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"zero for models using real water fluxes.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux into Sea Water due to Rainfall", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsfpr", - "positive":"", - "standard_name":"virtual_salt_flux_into_sea_water_due_to_rainfall", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "vsfriver":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"zero for models using real water fluxes.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux into Sea Water From Rivers", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsfriver", - "positive":"", - "standard_name":"virtual_salt_flux_into_sea_water_from_rivers", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "vsfsit":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"vsfsit", - "positive":"", - "standard_name":"virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "wfcorr":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Positive flux implies correction adds water to ocean.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wfcorr", - "positive":"down", - "standard_name":"water_flux_correction", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "wfo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the water flux into the ocean divided by the area of the ocean portion of the grid cell. This is the sum of the next two variables in this table.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wfo", - "positive":"", - "standard_name":"water_flux_into_sea_water", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "wfonocorr":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"computed as the water flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Water Flux into Sea Water Without Flux Correction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wfonocorr", - "positive":"", - "standard_name":"water_flux_into_sea_water_without_flux_correction", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "wmo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Upward mass transport from resolved and parameterized advective transport.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Upward Ocean Mass Transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wmo", - "positive":"", - "standard_name":"upward_ocean_mass_transport", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "wo":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Sea Water Z Velocity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"wo", - "positive":"", - "standard_name":"upward_sea_water_velocity", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "zfullo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Depth below geoid", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Depth Below Geoid of Ocean Layer", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zfullo", - "positive":"", - "standard_name":"depth_below_geoid", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zhalfo":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Depth below geoid", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Depth Below Geoid of Interfaces Between Ocean Layers", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zhalfo", - "positive":"", - "standard_name":"depth_below_geoid", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zmeso":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Mesozooplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zmeso", - "positive":"", - "standard_name":"mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "zmicro":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concentration of Microzooplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zmicro", - "positive":"", - "standard_name":"mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "zmisc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Mole Concetration of Other Zooplankton expressed as Carbon in sea water", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zmisc", - "positive":"", - "standard_name":"mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "zo2min":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Depth of Oxygen Minimum Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zo2min", - "positive":"", - "standard_name":"depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zooc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"sum of zooplankton carbon component concentrations", - "dimensions":"longitude latitude olevel time", - "frequency":"mon", - "long_name":"Zooplankton Carbon Concentration", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zooc", - "positive":"", - "standard_name":"mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "type":"real", - "units":"mol m-3", - "valid_max":"", - "valid_min":"" - }, - "zos":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Surface Height Above Geoid", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zos", - "positive":"", - "standard_name":"sea_surface_height_above_geoid", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zossq":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Surface ocean geoid defines z=0.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Square of Sea Surface Height Above Geoid", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zossq", - "positive":"", - "standard_name":"square_of_sea_surface_height_above_geoid", - "type":"real", - "units":"m2", - "valid_max":"", - "valid_min":"" - }, - "zostoga":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"There is no CMIP6 request for zosga nor zossga.", - "dimensions":"time", - "frequency":"mon", - "long_name":"Global Average Thermosteric Sea Level Change", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zostoga", - "positive":"", - "standard_name":"global_average_thermosteric_sea_level_change", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zsatarag":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Depth of aragonite saturation horizon (0 if undersaturated at all depths, 'missing' if supersaturated at all depths; if multiple horizons exist, the shallowest should be taken).", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Aragonite Saturation Depth", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zsatarag", - "positive":"", - "standard_name":"minimum_depth_of_aragonite_undersaturation_in_sea_water", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "zsatcalc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Depth of calcite saturation horizon (0 if undersaturated at all depths, and missing saturated through whole depth; if two or more horizons exist, then the shallowest is reported)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Calcite Saturation Depth", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zsatcalc", - "positive":"", - "standard_name":"minimum_depth_of_calcite_undersaturation_in_sea_water", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_SImon.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_SImon.json deleted file mode 100644 index bd5e3733a2..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_SImon.json +++ /dev/null @@ -1,1532 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"seaIce", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_SImon" - }, - "variable_entry":{ - "sfdsi":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Salt flux from sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sfdsi", - "positive":"down", - "standard_name":"downward_sea_ice_basal_salt_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "siage":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Age of sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Age of sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siage", - "positive":"", - "standard_name":"age_of_sea_ice", - "type":"real", - "units":"s", - "valid_max":"", - "valid_min":"" - }, - "siareaacrossline":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"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)", - "dimensions":"siline time", - "frequency":"mon", - "long_name":"Sea ice area flux through straits", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siareaacrossline", - "positive":"", - "standard_name":"sea_ice_area_transport_across_line", - "type":"real", - "units":"m2 s-1", - "valid_max":"", - "valid_min":"" - }, - "siarean":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"total area of sea ice in the Northern hemisphere", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice area North", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siarean", - "positive":"", - "standard_name":"sea_ice_area", - "type":"real", - "units":"1e6 km2", - "valid_max":"", - "valid_min":"" - }, - "siareas":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"total area of sea ice in the Southern hemisphere", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice area South", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siareas", - "positive":"", - "standard_name":"sea_ice_area", - "type":"real", - "units":"1e6 km2", - "valid_max":"", - "valid_min":"" - }, - "sicompstren":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Computed strength of the ice pack, defined as the energy (J m-2) dissipated per unit area removed from the ice pack under compression, and assumed proportional to the change in potential energy caused by ridging. For Hibler-type models, this is P (= P*hexp(-C(1-A)))", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Compressive sea ice strength", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sicompstren", - "positive":"", - "standard_name":"compressive_strength_of_sea_ice", - "type":"real", - "units":"N m-1", - "valid_max":"", - "valid_min":"" - }, - "siconc":{ - "cell_measures":"", - "cell_methods":"area: mean where sea time: mean", - "comment":"Area fraction of grid cell covered by sea ice", - "dimensions":"longitude latitude time typesi", - "frequency":"mon", - "long_name":"Sea Ice Area Fraction (Ocean Grid)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siconc", - "positive":"", - "standard_name":"sea_ice_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "siconca":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Area fraction of grid cell covered by sea ice", - "dimensions":"longitude latitude time typesi", - "frequency":"mon", - "long_name":"Sea Ice Area Fraction (Atmospheric Grid)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siconca", - "positive":"", - "standard_name":"sea_ice_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "sidconcdyn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total change in sea-ice area fraction through dynamics-related processes (advection, divergence...)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice area fraction change from dynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidconcdyn", - "positive":"", - "standard_name":"tendency_of_sea_ice_area_fraction_due_to_dynamics", - "type":"real", - "units":"s-1", - "valid_max":"", - "valid_min":"" - }, - "sidconcth":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total change in sea-ice area fraction through thermodynamic processes", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice area fraction change from thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidconcth", - "positive":"", - "standard_name":"tendency_of_sea_ice_area_fraction_due_to_thermodynamics", - "type":"real", - "units":"s-1", - "valid_max":"", - "valid_min":"" - }, - "sidivvel":{ - "cell_measures":"", - "cell_methods":"area: mean where sea_ice (comment: mask=siconc) time: point", - "comment":"Divergence of sea-ice velocity field (first shear strain invariant)", - "dimensions":"longitude latitude time1", - "frequency":"monPt", - "long_name":"Divergence of the sea-ice velocity field", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidivvel", - "positive":"", - "standard_name":"divergence_of_sea_ice_velocity", - "type":"real", - "units":"s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassdyn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total change in sea-ice mass through dynamics-related processes (advection,...) divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change from dynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassdyn", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_dynamics", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassevapsubl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea-ice mass change through evaporation and sublimation divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through evaporation and sublimation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassevapsubl", - "positive":"up", - "standard_name":"water_evaporation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassgrowthbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass due to vertical growth of existing sea ice at its base divided by grid-cell area.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through basal growth", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassgrowthbot", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassgrowthwat":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass due to sea ice formation in supercooled water (often through frazil formation) divided by grid-cell area. Together, sidmassgrowthwat and sidmassgrowthbot should give total ice growth", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through growth in supercooled open water (aka frazil)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassgrowthwat", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_freezing_in_open_water", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmasslat":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass through lateral melting divided by grid-cell area (report 0 if not explicitly calculated thermodynamically)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Lateral sea ice melt rate", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmasslat", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_lateral_melting", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassmeltbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass through melting at the ice bottom divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through bottom melting", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassmeltbot", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_basal_melting", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassmelttop":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass through melting at the ice surface divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through surface melting", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassmelttop", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_surface_melting", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmasssi":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"The rate of change of sea ice mass due to transformation of snow to sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change through snow-to-ice conversion", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmasssi", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_snow_conversion", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmassth":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total change in sea-ice mass from thermodynamic processes divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"sea-ice mass change from thermodynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmassth", - "positive":"", - "standard_name":"tendency_of_sea_ice_amount_due_to_thermodynamics", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmasstranx":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Includes transport of both sea ice and snow by advection", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"X-component of sea-ice mass transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmasstranx", - "positive":"", - "standard_name":"sea_ice_x_transport", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "sidmasstrany":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"Includes transport of both sea ice and snow by advection", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Y-component of sea-ice mass transport", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidmasstrany", - "positive":"", - "standard_name":"sea_ice_y_transport", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "sidragbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Oceanic drag coefficient that is used to calculate the oceanic momentum drag on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ocean drag coefficient", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidragbot", - "positive":"", - "standard_name":"surface_drag_coefficient_for_momentum_in_water", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "sidragtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Atmospheric drag coefficient that is used to calculate the atmospheric momentum drag on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Atmospheric drag coefficient", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sidragtop", - "positive":"", - "standard_name":"surface_drag_coefficient_for_momentum_in_air", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "siextentn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total area of all Northern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice extent North", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siextentn", - "positive":"", - "standard_name":"sea_ice_extent", - "type":"real", - "units":"1e6 km2", - "valid_max":"", - "valid_min":"" - }, - "siextents":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total area of all Southern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice extent South", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siextents", - "positive":"", - "standard_name":"sea_ice_extent", - "type":"real", - "units":"1e6 km2", - "valid_max":"", - "valid_min":"" - }, - "sifb":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Mean height of sea-ice surface (=snow-ice interface when snow covered) above sea level", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-ice freeboard", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sifb", - "positive":"", - "standard_name":"sea_ice_freeboard", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "siflcondbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the net heat conduction flux at the ice base", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net conductive heat fluxes in ice at the bottom", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflcondbot", - "positive":"down", - "standard_name":"conductive_heat_flux_at_sea_ice_bottom", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflcondtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the net heat conduction flux at the ice surface", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net conductive heat flux in ice at the surface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflcondtop", - "positive":"down", - "standard_name":"conductive_heat_flux_at_sea_ice_surface", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflfwbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Total flux of fresh water from water into sea ice divided by grid-cell area; This flux is negative during ice growth (liquid water mass decreases, hence upward flux of freshwater), positive during ice melt (liquid water mass increases, hence downward flux of freshwater)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Freshwater flux from sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflfwbot", - "positive":"", - "standard_name":"freshwater_flux_from_ice", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "siflfwdrain":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Total flux of fresh water from sea-ice surface into underlying ocean. This combines both surface melt water that drains directly into the ocean and the drainage of surface melt pond. By definition, this flux is always positive.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Freshwater flux from sea-ice surface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflfwdrain", - "positive":"", - "standard_name":"freshwater_flux_from_ice_surface", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sifllatstop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the net latent heat flux over sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net latent heat flux over sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sifllatstop", - "positive":"up", - "standard_name":"surface_upward_latent_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "sifllwdtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the downwelling longwave flux over sea ice (always positive)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downwelling longwave flux over sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sifllwdtop", - "positive":"down", - "standard_name":"surface_downwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "sifllwutop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the upwelling longwave flux over sea ice (always negative)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Upwelling Longwave Flux over Sea Ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sifllwutop", - "positive":"up", - "standard_name":"surface_upwelling_longwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflsenstop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the net sensible heat flux over sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Net upward sensible heat flux over sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflsenstop", - "positive":"up", - "standard_name":"surface_upward_sensible_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflsensupbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"the net sensible heat flux under sea ice from the ocean", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflsensupbot", - "positive":"up", - "standard_name":"upward_sea_ice_basal_heat_flux", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflswdbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"The downwelling shortwave flux underneath sea ice (always positive)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downwelling shortwave flux under sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflswdbot", - "positive":"down", - "standard_name":"bottom_downwelling_shortwave_flux_into_ocean", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflswdtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"The downwelling shortwave flux over sea ice (always positive by sign convention)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Downwelling shortwave flux over sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflswdtop", - "positive":"down", - "standard_name":"surface_downwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siflswutop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"The upwelling shortwave flux over sea ice (always negative)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Upwelling Shortwave Flux over Sea Ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siflswutop", - "positive":"up", - "standard_name":"surface_upwelling_shortwave_flux_in_air", - "type":"real", - "units":"W m-2", - "valid_max":"", - "valid_min":"" - }, - "siforcecoriolx":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"X-component of force on sea ice caused by coriolis force", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Coriolis force term in force balance (x-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforcecoriolx", - "positive":"", - "standard_name":"coriolis_force_on_sea_ice_x", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "siforcecorioly":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Y-component of force on sea ice caused by coriolis force", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Coriolis force term in force balance (y-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforcecorioly", - "positive":"", - "standard_name":"coriolis_force_on_sea_ice_y", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "siforceintstrx":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"X-component of force on sea ice caused by internal stress (divergence of sigma)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Internal stress term in force balance (x-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforceintstrx", - "positive":"", - "standard_name":"internal_stress_in_sea_ice_x", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "siforceintstry":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Y-component of force on sea ice caused by internal stress (divergence of sigma)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Internal stress term in force balance (y-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforceintstry", - "positive":"", - "standard_name":"internal_stress_in_sea_ice_y", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "siforcetiltx":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"X-component of force on sea ice caused by sea-surface tilt", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-surface tilt term in force balance (x-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforcetiltx", - "positive":"", - "standard_name":"sea_surface_tilt_force_on_sea_ice_x", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "siforcetilty":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Y-component of force on sea ice caused by sea-surface tilt", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-surface tilt term in force balance (y-component)", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siforcetilty", - "positive":"", - "standard_name":"sea_surface_tilt_force_on_sea_ice_y", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "sihc":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Heat content of all ice in grid cell divided by total grid-cell area. Water at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of snow, but does include heat content of brine. Heat content is always negative, since both the sensible and the latent heat content of ice are less than that of water", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-ice heat content per unit area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sihc", - "positive":"", - "standard_name":"integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", - "type":"real", - "units":"J m-2", - "valid_max":"", - "valid_min":"" - }, - "siitdconc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Area fraction of grid cell covered by each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", - "dimensions":"longitude latitude iceband time", - "frequency":"mon", - "long_name":"Sea-ice area fractions in thickness categories", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siitdconc", - "positive":"", - "standard_name":"sea_ice_area_fraction_over_categories", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "siitdsnconc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siitdconc)", - "comment":"Area fraction of grid cell covered by snow in each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", - "dimensions":"longitude latitude iceband time", - "frequency":"mon", - "long_name":"Snow area fractions in thickness categories", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siitdsnconc", - "positive":"", - "standard_name":"snow_area_fraction_over_categories", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "siitdsnthick":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siitdconc)", - "comment":"Actual thickness of snow in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", - "dimensions":"longitude latitude iceband time", - "frequency":"mon", - "long_name":"Snow thickness in thickness categories", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siitdsnthick", - "positive":"", - "standard_name":"snow_thickness_over_categories", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "siitdthick":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siitdconc)", - "comment":"Actual (floe) thickness of sea ice in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", - "dimensions":"longitude latitude iceband time", - "frequency":"mon", - "long_name":"Sea-ice thickness in thickness categories", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siitdthick", - "positive":"", - "standard_name":"sea_ice_thickness_over_categories", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "simass":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total mass of sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-ice mass per area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"simass", - "positive":"", - "standard_name":"sea_ice_amount", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "simassacrossline":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"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)", - "dimensions":"siline time", - "frequency":"mon", - "long_name":"Sea mass area flux through straits", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"simassacrossline", - "positive":"", - "standard_name":"sea_ice_transport_across_line", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - }, - "simpconc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Fraction of sea ice, by area, which is covered by melt ponds, giving equal weight to every square metre of sea ice .", - "dimensions":"longitude latitude time typemp", - "frequency":"mon", - "long_name":"Percentage Cover of Sea-Ice by Meltpond", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"simpconc", - "positive":"", - "standard_name":"area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "simpmass":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice_melt_pond (comment: mask=simpconc)", - "comment":"Meltpond mass per area of sea ice.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Meltpond Mass per Unit Area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"simpmass", - "positive":"", - "standard_name":"surface_liquid_water_amount", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "simprefrozen":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice_melt_pond (comment: mask=simpconc)", - "comment":"Volume of refrozen ice on melt ponds divided by meltpond covered area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Thickness of Refrozen Ice on Melt Pond", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"simprefrozen", - "positive":"", - "standard_name":"melt_pond_refrozen_ice", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sipr":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"mass of liquid precipitation falling onto sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Rainfall rate over sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sipr", - "positive":"", - "standard_name":"rainfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sirdgconc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Fraction of sea ice, by area, which is covered by sea ice ridges, giving equal weight to every square metre of sea ice .", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Percentage Cover of Sea-Ice by Ridging", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sirdgconc", - "positive":"", - "standard_name":"fraction_of_ridged_sea_ice", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "sirdgthick":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=sirdgconc - ridges only)", - "comment":"Sea Ice Ridge Height (representing mean height over the ridged area)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Ridged ice thickness", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sirdgthick", - "positive":"", - "standard_name":"thickness_of_ridged_sea_ice", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sisali":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Mean sea-ice salinity of all sea ice in grid cell", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea ice salinity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisali", - "positive":"", - "standard_name":"sea_ice_salinity", - "type":"real", - "units":"0.001", - "valid_max":"", - "valid_min":"" - }, - "sisaltmass":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total mass of all salt in sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Mass of salt in sea ice per area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisaltmass", - "positive":"", - "standard_name":"sea_ice_salt_mass", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "sishevel":{ - "cell_measures":"", - "cell_methods":"area: mean where sea_ice (comment: mask=siconc) time: point", - "comment":"Maximum shear of sea-ice velocity field (second shear strain invariant)", - "dimensions":"longitude latitude time1", - "frequency":"monPt", - "long_name":"Maximum shear of sea-ice velocity field", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sishevel", - "positive":"", - "standard_name":"maximum_shear_of_sea_ice_velocity", - "type":"real", - "units":"s-1", - "valid_max":"", - "valid_min":"" - }, - "sisnconc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Fraction of sea ice, by area, which is covered by snow, giving equal weight to every square metre of sea ice . Exclude snow that lies on land or land ice.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow area fraction", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisnconc", - "positive":"", - "standard_name":"surface_snow_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "sisnhc":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Heat-content of all snow in grid cell divided by total grid-cell area. Snow-water equivalent at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of sea ice.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow-heat content per unit area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisnhc", - "positive":"", - "standard_name":"thermal_energy_content_of_surface_snow", - "type":"real", - "units":"J m-2", - "valid_max":"", - "valid_min":"" - }, - "sisnmass":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Total mass of snow on sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow mass per area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisnmass", - "positive":"", - "standard_name":"liquid_water_content_of_surface_snow", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "sisnthick":{ - "cell_measures":"", - "cell_methods":"area: mean where snow over sea_ice area: time: mean where sea_ice", - "comment":"Actual thickness of snow (snow volume divided by snow-covered area)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow thickness", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sisnthick", - "positive":"", - "standard_name":"surface_snow_thickness", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sispeed":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-ice speed", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sispeed", - "positive":"", - "standard_name":"sea_ice_speed", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "sistremax":{ - "cell_measures":"", - "cell_methods":"area: mean where sea_ice (comment: mask=siconc) time: point", - "comment":"Maximum shear stress in sea ice (second stress invariant)", - "dimensions":"longitude latitude time1", - "frequency":"monPt", - "long_name":"Maximum shear stress in sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistremax", - "positive":"", - "standard_name":"maximum_shear_stress", - "type":"real", - "units":"N m-1", - "valid_max":"", - "valid_min":"" - }, - "sistresave":{ - "cell_measures":"", - "cell_methods":"area: mean where sea_ice (comment: mask=siconc) time: point", - "comment":"Average normal stress in sea ice (first stress invariant)", - "dimensions":"longitude latitude time1", - "frequency":"monPt", - "long_name":"Average normal stress in sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistresave", - "positive":"", - "standard_name":"average_normal_stress", - "type":"real", - "units":"N m-1", - "valid_max":"", - "valid_min":"" - }, - "sistrxdtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"X-component of atmospheric stress on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"X-component of atmospheric stress on sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistrxdtop", - "positive":"down", - "standard_name":"surface_downward_x_stress", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "sistrxubot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"X-component of ocean stress on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"X-component of ocean stress on sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistrxubot", - "positive":"up", - "standard_name":"upward_x_stress_at_sea_ice_base", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "sistrydtop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"Y-component of atmospheric stress on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Y-component of atmospheric stress on sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistrydtop", - "positive":"down", - "standard_name":"surface_downward_y_stress", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "sistryubot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Y-component of ocean stress on sea ice", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Y-component of ocean stress on sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sistryubot", - "positive":"up", - "standard_name":"upward_y_stress_at_sea_ice_base", - "type":"real", - "units":"N m-2", - "valid_max":"", - "valid_min":"" - }, - "sitempbot":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Report temperature at interface, NOT temperature within lowermost model layer", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Temperature at ice-ocean interface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sitempbot", - "positive":"", - "standard_name":"sea_ice_bottom_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "sitempsnic":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Report surface temperature of ice where snow thickness is zero", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Temperature at snow-ice interface", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sitempsnic", - "positive":"", - "standard_name":"sea_ice_surface_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "sitemptop":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Report surface temperature of snow where snow covers the sea ice.", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Surface temperature of sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sitemptop", - "positive":"", - "standard_name":"sea_ice_surface_temperature", - "type":"real", - "units":"K", - "valid_max":"", - "valid_min":"" - }, - "sithick":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc or siconca)", - "comment":"Actual (floe) thickness of sea ice (NOT volume divided by grid area as was done in CMIP5)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea Ice Thickness", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sithick", - "positive":"", - "standard_name":"sea_ice_thickness", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sitimefrac":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Fraction of time steps of the averaging period during which sea ice is present (siconc >0 ) in a grid cell", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Fraction of time steps with sea ice", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sitimefrac", - "positive":"", - "standard_name":"sea_ice_time_fraction", - "type":"real", - "units":"1", - "valid_max":"", - "valid_min":"" - }, - "siu":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"The x-velocity of ice on native model grid", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"X-component of sea ice velocity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siu", - "positive":"", - "standard_name":"sea_ice_x_velocity", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "siv":{ - "cell_measures":"", - "cell_methods":"area: time: mean where sea_ice (comment: mask=siconc)", - "comment":"The y-velocity of ice on native model grid", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Y-component of sea ice velocity", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"siv", - "positive":"", - "standard_name":"sea_ice_y_velocity", - "type":"real", - "units":"m s-1", - "valid_max":"", - "valid_min":"" - }, - "sivol":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"Total volume of sea ice divided by grid-cell area (this used to be called ice thickness in CMIP5)", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Sea-ice volume per area", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sivol", - "positive":"", - "standard_name":"sea_ice_thickness", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sivoln":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"total volume of sea ice in the Northern hemisphere", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice volume North", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sivoln", - "positive":"", - "standard_name":"sea_ice_volume", - "type":"real", - "units":"1e3 km3", - "valid_max":"", - "valid_min":"" - }, - "sivols":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"total volume of sea ice in the Southern hemisphere", - "dimensions":"time", - "frequency":"mon", - "long_name":"Sea ice volume South", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sivols", - "positive":"", - "standard_name":"sea_ice_volume", - "type":"real", - "units":"1e3 km3", - "valid_max":"", - "valid_min":"" - }, - "sndmassdyn":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"the rate of change of snow mass through advection with sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow Mass Rate of Change through Avection by Sea-ice Dynamics", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmassdyn", - "positive":"", - "standard_name":"tendency_of_snow_mass_due_to_sea_ice_dynamics", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sndmassmelt":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"the rate of change of snow mass through melt divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow Mass Rate of Change through Melt", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmassmelt", - "positive":"", - "standard_name":"surface_snow_melt_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sndmasssi":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"the rate of change of snow mass due to transformation of snow to sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow Mass Rate of Change through Snow-to-Ice Conversion", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmasssi", - "positive":"", - "standard_name":"tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sndmasssnf":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"mass of solid precipitation falling onto sea ice divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"snow mass change through snow fall", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmasssnf", - "positive":"", - "standard_name":"snowfall_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sndmasssubl":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"the rate of change of snow mass through sublimation and evaporation divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow Mass Rate of Change through Evaporation or Sublimation", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmasssubl", - "positive":"", - "standard_name":"surface_snow_sublimation_flux", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "sndmasswindrif":{ - "cell_measures":"", - "cell_methods":"area: time: mean", - "comment":"the rate of change of snow mass through wind drift of snow (from sea-ice into the sea) divided by grid-cell area", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Snow Mass Rate of Change through Wind Drift of Snow", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sndmasswindrif", - "positive":"", - "standard_name":"tendency_of_snow_mass_due_to_drifting_snow", - "type":"real", - "units":"kg m-2 s-1", - "valid_max":"", - "valid_min":"" - }, - "snmassacrossline":{ - "cell_measures":"", - "cell_methods":"time: mean", - "comment":"net (sum of transport in all directions) snow mass 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 Archipela", - "dimensions":"siline time", - "frequency":"mon", - "long_name":"Snow mass flux through straits", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"snmassacrossline", - "positive":"", - "standard_name":"snow_mass_transport_across_line", - "type":"real", - "units":"kg s-1", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_coordinate.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_coordinate.json deleted file mode 100644 index cafd418bd0..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_coordinate.json +++ /dev/null @@ -1,2900 +0,0 @@ -{ - "axis_entry":{ - "alev1":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"lowest atmospheric model level", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "alt16":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"altitude", - "must_have_bounds":"yes", - "out_name":"alt16", - "positive":"up", - "requested":[ - "0", - "250", - "750", - "1250", - "1750", - "2250", - "2750", - "3500", - "4500", - "6000", - "8000", - "10000", - "12000", - "14500", - "16000", - "18000" - ], - "requested_bounds":[ - "-99000.0", - "0.0", - "0.0", - "500.0", - "500.0", - "1000.0", - "1000.0", - "1500.0", - "1500.0", - "2000.0", - "2000.0", - "2500.0", - "2500.0", - "3000.0", - "3000.0", - "4000.0", - "4000.0", - "5000.0", - "5000.0", - "7000.0", - "7000.0", - "9000.0", - "9000.0", - "11000.0", - "11000.0", - "13000.0", - "13000.0", - "15000.0", - "15000.0", - "17000.0", - "17000.0", - "99000.0" - ], - "standard_name":"altitude", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "alt40":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"altitude", - "must_have_bounds":"yes", - "out_name":"alt40", - "positive":"up", - "requested":[ - "240.", - "720.", - "1200.", - "1680.", - "2160.", - "2640.", - "3120.", - "3600.", - "4080.", - "4560.", - "5040.", - "5520.", - "6000.", - "6480.", - "6960.", - "7440.", - "7920.", - "8400.", - "8880.", - "9360.", - "9840.", - "10320.", - "10800.", - "11280.", - "11760.", - "12240.", - "12720.", - "13200.", - "13680.", - "14160.", - "14640.", - "15120.", - "15600.", - "16080.", - "16560.", - "17040.", - "17520.", - "18000.", - "18480.", - "18960." - ], - "requested_bounds":[ - "0.0", - "480.0", - "480.0", - "960.0", - "960.0", - "1440.0", - "1440.0", - "1920.0", - "1920.0", - "2400.0", - "2400.0", - "2880.0", - "2880.0", - "3360.0", - "3360.0", - "3840.0", - "3840.0", - "4320.0", - "4320.0", - "4800.0", - "4800.0", - "5280.0", - "5280.0", - "5760.0", - "5760.0", - "6240.0", - "6240.0", - "6720.0", - "6720.0", - "7200.0", - "7200.0", - "7680.0", - "7680.0", - "8160.0", - "8160.0", - "8640.0", - "8640.0", - "9120.0", - "9120.0", - "9600.0", - "9600.0", - "10080.0", - "10080.0", - "10560.0", - "10560.0", - "11040.0", - "11040.0", - "11520.0", - "11520.0", - "12000.0", - "12000.0", - "12480.0", - "12480.0", - "12960.0", - "12960.0", - "13440.0", - "13440.0", - "13920.0", - "13920.0", - "14400.0", - "14400.0", - "14880.0", - "14880.0", - "15360.0", - "15360.0", - "15840.0", - "15840.0", - "16320.0", - "16320.0", - "16800.0", - "16800.0", - "17280.0", - "17280.0", - "17760.0", - "17760.0", - "18240.0", - "18240.0", - "18720.0", - "18720.0", - "19200.0" - ], - "standard_name":"altitude", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "alternate_hybrid_sigma":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"p = ap + b*ps", - "long_name":"hybrid sigma pressure coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_hybrid_sigma_pressure_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"1", - "valid_max":"1.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"ap: ap_bnds b: b_bnds ps: ps", - "z_factors":"ap: ap b: b ps: ps" - }, - "basin":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"ocean basin", - "must_have_bounds":"no", - "out_name":"basin", - "positive":"", - "requested":[ - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" - ], - "requested_bounds":"", - "standard_name":"region", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "dbze":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"CloudSat simulator equivalent radar reflectivity factor", - "must_have_bounds":"yes", - "out_name":"dbze", - "positive":"", - "requested":[ - "-47.5", - "-42.5", - "-37.5", - "-32.5", - "-27.5", - "-22.5", - "-17.5", - "-12.5", - "-7.5", - "-2.5", - "2.5", - "7.5", - "12.5", - "17.5", - "22.5" - ], - "requested_bounds":[ - "-50.0", - "-45.0", - "-45.0", - "-40.0", - "-40.0", - "-35.0", - "-35.0", - "-30.0", - "-30.0", - "-25.0", - "-25.0", - "-20.0", - "-20.0", - "-15.0", - "-15.0", - "-10.0", - "-10.0", - "-5.0", - "-5.0", - "0.0", - "0.0", - "5.0", - "5.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0" - ], - "standard_name":"equivalent_reflectivity_factor", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"dBZ", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth0m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"100.0", - "valid_min":"0.0", - "value":"0.", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth100m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"120.0", - "valid_min":"80.0", - "value":"100.", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth2000m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"2200.0", - "valid_min":"1980.0", - "value":"2000", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth300m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"320.0", - "valid_min":"280.0", - "value":"300", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth700m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"720.0", - "valid_min":"680.0", - "value":"700", - "z_bounds_factors":"", - "z_factors":"" - }, - "depth_coord":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"ocean depth coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"", - "units":"m", - "valid_max":"12000.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "effectRadIc":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Effective Radius [Values to be specified]", - "must_have_bounds":"", - "out_name":"effectRadIc", - "positive":"", - "requested":[ - "5.", - "15.", - "25.", - "35.", - "50.", - "75." - ], - "requested_bounds":[ - "0.0", - "10.0", - "10.0", - "20.0", - "20.0", - "30.0", - "30.0", - "40.0", - "40.0", - "60.0", - "60.0", - "90.0" - ], - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"micron", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "effectRadLi":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Effective Radius [Values to be specified]", - "must_have_bounds":"", - "out_name":"effectRadLi", - "positive":"", - "requested":[ - "4.", - "9.", - "11.5", - "14.", - "17.5", - "25." - ], - "requested_bounds":[ - "0.0", - "8.0", - "8.0", - "10.0", - "10.0", - "13.0", - "13.0", - "15.0", - "15.0", - "20.0", - "20.0", - "30.0" - ], - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"micron", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "height100m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"height", - "must_have_bounds":"no", - "out_name":"height", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"height", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"120.0", - "valid_min":"80.0", - "value":"100.", - "z_bounds_factors":"", - "z_factors":"" - }, - "height10m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"height", - "must_have_bounds":"no", - "out_name":"height", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"height", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"30.0", - "valid_min":"1.0", - "value":"10.", - "z_bounds_factors":"", - "z_factors":"" - }, - "height2m":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"height", - "must_have_bounds":"no", - "out_name":"height", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"height", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"10.0", - "valid_min":"1.0", - "value":"2.", - "z_bounds_factors":"", - "z_factors":"" - }, - "hybrid_height":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"z = a + b*orog", - "long_name":"hybrid height coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_hybrid_height_coordinate", - "stored_direction":"increasing", - "tolerance":"", - "type":"", - "units":"m", - "valid_max":"", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"a: lev_bnds b: b_bnds orog: orog", - "z_factors":"a: lev b: b orog: orog" - }, - "iceband":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Ice Depth Band", - "must_have_bounds":"yes", - "out_name":"iceband", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"sea_ice_thickness", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "landUse":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Land use type", - "must_have_bounds":"no", - "out_name":"landuse", - "positive":"", - "requested":[ - "primary_and_secondary_land", - "pastures", - "crops", - "urban" - ], - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "latitude":{ - "axis":"Y", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"latitude", - "must_have_bounds":"yes", - "out_name":"lat", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"latitude", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"degrees_north", - "valid_max":"90.0", - "valid_min":"-90.0", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "location":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"location index", - "must_have_bounds":"no", - "out_name":"loc", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"increasing", - "tolerance":"", - "type":"integer", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "longitude":{ - "axis":"X", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"longitude", - "must_have_bounds":"yes", - "out_name":"lon", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"longitude", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"degrees_east", - "valid_max":"360.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "natural_log_pressure":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"p = p0 * exp(-lev)", - "long_name":"atmosphere natural log pressure coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_ln_pressure_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"20.0", - "valid_min":"-1.0", - "value":"", - "z_bounds_factors":"p0: p0 lev: lev_bnds", - "z_factors":"p0: p0 lev: lev" - }, - "ocean_double_sigma":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", - "long_name":"ocean double sigma coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"ocean_double_sigma", - "stored_direction":"", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", - "z_factors":"sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c" - }, - "ocean_s":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", - "long_name":"ocean s-coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"ocean_s_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"0.0", - "valid_min":"-1.0", - "value":"", - "z_bounds_factors":"s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", - "z_factors":"s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c" - }, - "ocean_sigma":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", - "long_name":"ocean sigma coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"ocean_sigma_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"0.0", - "valid_min":"-1.0", - "value":"", - "z_bounds_factors":"sigma: lev_bnds eta: eta depth: depth", - "z_factors":"sigma: lev eta: eta depth: depth" - }, - "ocean_sigma_z":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", - "long_name":"ocean sigma over z coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"ocean_sigma_z", - "stored_direction":"", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", - "z_factors":"sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev" - }, - "olayer100m":{ - "axis":"Z", - "bounds_values":"0.0 100.0", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"no", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"100.0", - "valid_min":"0.0", - "value":"50.", - "z_bounds_factors":"", - "z_factors":"" - }, - "oline":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"ocean passage", - "must_have_bounds":"no", - "out_name":"line", - "positive":"", - "requested":[ - "barents_opening", - "bering_strait", - "canadian_archipelago", - "denmark_strait", - "drake_passage", - "english_channel", - "pacific_equatorial_undercurrent", - "faroe_scotland_channel", - "florida_bahamas_strait", - "fram_strait", - "iceland_faroe_channel", - "indonesian_throughflow", - "mozambique_channel", - "taiwan_luzon_straits", - "windward_passage" - ], - "requested_bounds":"", - "standard_name":"region", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "p10":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"1000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p100":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"10000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p1000":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"100000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p200":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"20000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p220":{ - "axis":"Z", - "bounds_values":"44000.0 0.0", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"22000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p500":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"50000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p560":{ - "axis":"Z", - "bounds_values":"68000.0 44000.0", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"56000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p700":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"70000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p840":{ - "axis":"Z", - "bounds_values":"100000.0 68000.0", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"84000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "p850":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"85000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "pl700":{ - "axis":"Z", - "bounds_values":"85000.0 60000.0", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"70000.", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev10":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "85000.", - "70000.", - "50000.", - "25000.", - "15000.", - "10000.", - "7000.", - "5000.", - "1000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev19":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "500.", - "100." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev23":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "100.", - "40." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev27":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "97500.", - "95000.", - "92500.", - "90000.", - "87500.", - "85000.", - "82500.", - "80000.", - "77500.", - "75000.", - "70000.", - "65000.", - "60000.", - "55000.", - "50000.", - "45000.", - "40000.", - "35000.", - "30000.", - "25000.", - "22500.", - "20000.", - "17500.", - "15000.", - "12500.", - "10000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev3":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "85000.", - "50000.", - "25000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev39":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "17000.", - "15000.", - "13000.", - "11500.", - "10000.", - "9000.", - "8000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1500.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "150.", - "100.", - "70.", - "50.", - "40.", - "30.", - "20.", - "15.", - "10.", - "7.", - "5.", - "3." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev3h":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "10000.", - "1000.", - "100." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev4":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "92500.", - "85000.", - "50000.", - "25000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev7":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":[ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds":[ - "100000.", - "80000.", - "80000.", - "68000.", - "68000.", - "56000.", - "56000.", - "44000.", - "44000.", - "31000.", - "31000.", - "18000.", - "18000.", - " 0." - ], - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"0.001", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev7c":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"yes", - "out_name":"plev", - "positive":"down", - "requested":[ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds":[ - "100000.0", - "80000.0", - "80000.0", - "68000.0", - "68000.0", - "56000.0", - "56000.0", - "44000.0", - "44000.0", - "31000.0", - "31000.0", - "18000.0", - "18000.0", - "0.0" - ], - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev7h":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "25000.", - "5000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "plev8":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"pressure", - "must_have_bounds":"no", - "out_name":"plev", - "positive":"down", - "requested":[ - "100000.", - "85000.", - "70000.", - "50000.", - "25000.", - "10000.", - "5000.", - "1000." - ], - "requested_bounds":"", - "standard_name":"air_pressure", - "stored_direction":"decreasing", - "tolerance":"", - "type":"double", - "units":"Pa", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "rho":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"potential density referenced to 2000 dbar", - "must_have_bounds":"yes", - "out_name":"rho", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"sea_water_potential_density", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"kg m-3", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "scatratio":{ - "axis":"", - "bounds_values":"0.0 0.01 1.2 3.0 5.0 7.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 80.0 100000.0", - "climatology":"", - "formula":"", - "long_name":"lidar backscattering ratio", - "must_have_bounds":"yes", - "out_name":"scatratio", - "positive":"", - "requested":[ - "0.005", - "0.605", - "2.1", - "4.", - "6.", - "8.5", - "12.5", - "17.5", - "22.5", - "27.5", - "35.", - "45.", - "55.", - "70.", - "50040." - ], - "requested_bounds":[ - "0.0", - "0.01", - "0.01", - "1.2", - "1.2", - "3.0", - "3.0", - "5.0", - "5.0", - "7.0", - "7.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0", - "25.0", - "30.0", - "30.0", - "40.0", - "40.0", - "50.0", - "50.0", - "60.0", - "60.0", - "80.0", - "80.0", - "100000.0" - ], - "standard_name":"backscattering_ratio", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"1", - "valid_max":"", - "valid_min":"", - "value":"0.005, 0.605, 2.1, 4, 6, 8.5, 12.5, 17.5, 22.5, 27.5, 35, 45, 55, 70, 50040", - "z_bounds_factors":"", - "z_factors":"" - }, - "sdepth":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"yes", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"200.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "sdepth1":{ - "axis":"Z", - "bounds_values":"0.0 0.1", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"yes", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"0.2", - "valid_min":"0.0", - "value":"0.05", - "z_bounds_factors":"", - "z_factors":"" - }, - "siline":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"ocean passage", - "must_have_bounds":"no", - "out_name":"line", - "positive":"", - "requested":[ - "fram_strait,", - "canadian_archipelego,", - "barents_opening,", - "bering_strait" - ], - "requested_bounds":"", - "standard_name":"region", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "site":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"site index", - "must_have_bounds":"no", - "out_name":"site", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"integer", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "smooth_level":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"z = a*ztop + b1*zsurf1 + b2*zsurf2", - "long_name":"atmosphere smooth level vertical (SLEVE) coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"up", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_sleve_coordinate", - "stored_direction":"increasing", - "tolerance":"", - "type":"", - "units":"m", - "valid_max":"800000.0", - "valid_min":"-200.0", - "value":"", - "z_bounds_factors":"a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "z_factors":"a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2" - }, - "snowband":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Snow Depth Band", - "must_have_bounds":"yes", - "out_name":"snowband", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"surface_snow_thickness", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "snowdepth":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"depth", - "must_have_bounds":"yes", - "out_name":"depth", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"depth", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"m", - "valid_max":"200.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "soilpools":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Soil Pools", - "must_have_bounds":"no", - "out_name":"soilpools", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "spectband":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Spectral Frequency Band", - "must_have_bounds":"yes", - "out_name":"spectband", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"sensor_band_central_radiation_wavenumber", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"m-1", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "standard_hybrid_sigma":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"p = a*p0 + b*ps", - "long_name":"hybrid sigma pressure coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_hybrid_sigma_pressure_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"1", - "valid_max":"1.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"p0: p0 a: a_bnds b: b_bnds ps: ps", - "z_factors":"p0: p0 a: a b: b ps: ps" - }, - "standard_sigma":{ - "axis":"Z", - "bounds_values":"", - "climatology":"", - "formula":"p = ptop + sigma*(ps - ptop)", - "long_name":"sigma coordinate", - "must_have_bounds":"yes", - "out_name":"lev", - "positive":"down", - "requested":"", - "requested_bounds":"", - "standard_name":"atmosphere_sigma_coordinate", - "stored_direction":"decreasing", - "tolerance":"", - "type":"", - "units":"", - "valid_max":"1.0", - "valid_min":"0.0", - "value":"", - "z_bounds_factors":"ptop: ptop sigma: lev_bnds ps: ps", - "z_factors":"ptop: ptop sigma: lev ps: ps" - }, - "sza5":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"solar zenith angle", - "must_have_bounds":"no", - "out_name":"sza", - "positive":"", - "requested":[ - "0.", - "20.", - "40.", - "60.", - "80." - ], - "requested_bounds":"", - "standard_name":"solar_zenith_angle", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"degree", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "tau":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"cloud optical thickness", - "must_have_bounds":"yes", - "out_name":"tau", - "positive":"", - "requested":[ - "0.15", - "0.8", - "2.45", - "6.5", - "16.2", - "41.5", - "100." - ], - "requested_bounds":[ - "0.0", - "0.3", - "0.3", - "1.3", - "1.3", - "3.6", - "3.6", - "9.4", - "9.4", - "23.0", - "23.0", - "60.0", - "60.0", - "100000.0" - ], - "standard_name":"atmosphere_optical_thickness_due_to_cloud", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"1", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "time":{ - "axis":"T", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"time", - "must_have_bounds":"yes", - "out_name":"time", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"time", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"days since ?", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "time1":{ - "axis":"T", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"time", - "must_have_bounds":"no", - "out_name":"time", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"time", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"days since ?", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "time2":{ - "axis":"T", - "bounds_values":"", - "climatology":"yes", - "formula":"", - "long_name":"time", - "must_have_bounds":"yes", - "out_name":"time", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"time", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"days since ?", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "time3":{ - "axis":"T", - "bounds_values":"", - "climatology":"yes", - "formula":"", - "long_name":"time", - "must_have_bounds":"yes", - "out_name":"time", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"time", - "stored_direction":"increasing", - "tolerance":"", - "type":"double", - "units":"days since ?", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "typebare":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"bare_ground", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeburnt":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Burnt vegetation area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"burnt_vegetation", - "z_bounds_factors":"", - "z_factors":"" - }, - "typec3pft":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"c3_plant_functional_types", - "z_bounds_factors":"", - "z_factors":"" - }, - "typec4pft":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"c4_plant_functional_types", - "z_bounds_factors":"", - "z_factors":"" - }, - "typecloud":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Cloud area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"cloud", - "z_bounds_factors":"", - "z_factors":"" - }, - "typecrop":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Crop area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"crops", - "z_bounds_factors":"", - "z_factors":"" - }, - "typefis":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Floating Ice Shelf area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"floating_ice_shelf", - "z_bounds_factors":"", - "z_factors":"" - }, - "typegis":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Grounded Ice Sheet area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"grounded_ice_sheet", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeland":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Land area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"land", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeli":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Land Ice area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"land_ice", - "z_bounds_factors":"", - "z_factors":"" - }, - "typemp":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Melt pond area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"sea_ice_melt_pond", - "z_bounds_factors":"", - "z_factors":"" - }, - "typenatgr":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Natural grass area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"natural_grasses", - "z_bounds_factors":"", - "z_factors":"" - }, - "typenwd":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Non-Woody Vegetation area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"non_woody_vegetation", - "z_bounds_factors":"", - "z_factors":"" - }, - "typepasture":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Pasture area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"pastures", - "z_bounds_factors":"", - "z_factors":"" - }, - "typepdec":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"primary_deciduous_trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typepever":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"primary_evergreen_trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeresidual":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Residual area", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"residual", - "z_bounds_factors":"", - "z_factors":"" - }, - "typesdec":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"secondary_decidous_trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typesea":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Ocean area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"sea", - "z_bounds_factors":"", - "z_factors":"" - }, - "typesever":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"surface type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"secondary_evergreen_trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeshrub":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Shrub area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"shrubs", - "z_bounds_factors":"", - "z_factors":"" - }, - "typesi":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Sea Ice area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"sea_ice", - "z_bounds_factors":"", - "z_factors":"" - }, - "typetree":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Tree area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typetreebd":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Tree area type (Broadleaf Deciduous)", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typetreebe":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Tree area type (Broadleaf Evergreen)", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typetreend":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Tree area type (Narrowleaf Deciduous)", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typetreene":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Tree area type (Narrowleaf Evergreen)", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"trees", - "z_bounds_factors":"", - "z_factors":"" - }, - "typeveg":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Vegetation area type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"vegetation", - "z_bounds_factors":"", - "z_factors":"" - }, - "typewetla":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"Wetland", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"area_type", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "vegtype":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"plant functional type", - "must_have_bounds":"no", - "out_name":"type", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"", - "stored_direction":"", - "tolerance":"", - "type":"character", - "units":"", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "xant":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"__unset__", - "must_have_bounds":"", - "out_name":"xant", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"projection_x_coordinate", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"km", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "xgre":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"__unset__", - "must_have_bounds":"", - "out_name":"xgre", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"projection_x_coordinate", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"km", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "yant":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"__unset__", - "must_have_bounds":"", - "out_name":"yant", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"projection_y_coordinate", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"km", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - }, - "ygre":{ - "axis":"", - "bounds_values":"", - "climatology":"", - "formula":"", - "long_name":"__unset__", - "must_have_bounds":"", - "out_name":"ygre", - "positive":"", - "requested":"", - "requested_bounds":"", - "standard_name":"projection_y_coordinate", - "stored_direction":"", - "tolerance":"", - "type":"double", - "units":"km", - "valid_max":"", - "valid_min":"", - "value":"", - "z_bounds_factors":"", - "z_factors":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_formula_terms.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_formula_terms.json deleted file mode 100644 index 08da1580cb..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_formula_terms.json +++ /dev/null @@ -1,186 +0,0 @@ -{ - "formula_entry":{ - "a":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: a(k)", - "out_name":"a", - "type":"double", - "units":"" - }, - "a_bnds":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: a(k+1/2)", - "out_name":"a_bnds", - "type":"double", - "units":"" - }, - "ap":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: ap(k)", - "out_name":"ap", - "type":"double", - "units":"Pa" - }, - "ap_bnds":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: ap(k+1/2)", - "out_name":"ap_bnds", - "type":"double", - "units":"Pa" - }, - "b":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: b(k)", - "out_name":"b", - "type":"double", - "units":"" - }, - "b_bnds":{ - "dimensions":"alevel", - "long_name":"vertical coordinate formula term: b(k+1/2)", - "out_name":"b_bnds", - "type":"double", - "units":"" - }, - "depth":{ - "dimensions":"longitude latitude", - "long_name":"Sea Floor Depth: formula term: thetao", - "out_name":"depth", - "type":"real", - "units":"m" - }, - "depth_c":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: depth_c", - "out_name":"depth_c", - "type":"double", - "units":"" - }, - "eta":{ - "dimensions":"longitude latitude time", - "long_name":"Sea Surface Height formula term: thetao", - "out_name":"eta", - "type":"real", - "units":"m" - }, - "eta2":{ - "dimensions":"longitude latitude time2", - "long_name":"Sea Surface Height formula term: thetao", - "out_name":"eta", - "type":"real", - "units":"m" - }, - "href":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: href", - "out_name":"href", - "type":"double", - "units":"" - }, - "k_c":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: k_c", - "out_name":"k_c", - "type":"integer", - "units":"" - }, - "nsigma":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: nsigma", - "out_name":"nsigma", - "type":"integer", - "units":"" - }, - "orog":{ - "dimensions":"longitude latitude", - "long_name":"Surface Altitude", - "out_name":"orog", - "type":"real", - "units":"m" - }, - "p0":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: reference pressure", - "out_name":"p0", - "type":"", - "units":"Pa" - }, - "ps":{ - "dimensions":"longitude latitude time", - "long_name":"Surface Air Pressure", - "out_name":"ps", - "type":"real", - "units":"Pa" - }, - "ps1":{ - "dimensions":"longitude latitude time1", - "long_name":"vertical coordinate formula term: ps", - "out_name":"ps", - "type":"real", - "units":"Pa" - }, - "ps2":{ - "dimensions":"longitude latitude time2", - "long_name":"vertical coordinate formula term: ps", - "out_name":"ps", - "type":"real", - "units":"Pa" - }, - "ptop":{ - "dimensions":"", - "long_name":"pressure at top of model", - "out_name":"ptop", - "type":"", - "units":"Pa" - }, - "sigma":{ - "dimensions":"olevel", - "long_name":"vertical coordinate formula term: sigma(k)", - "out_name":"sigma", - "type":"double", - "units":"" - }, - "sigma_bnds":{ - "dimensions":"olevel", - "long_name":"vertical coordinate formula term: sigma(k+1/2)", - "out_name":"sigma_bnds", - "type":"double", - "units":"" - }, - "z1":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: z1", - "out_name":"z1", - "type":"double", - "units":"" - }, - "z2":{ - "dimensions":"", - "long_name":"vertical coordinate formula term: z2", - "out_name":"z2", - "type":"double", - "units":"" - }, - "zlev":{ - "dimensions":"olevel", - "long_name":"vertical coordinate formula term: zlev(k)", - "out_name":"zlev", - "type":"double", - "units":"" - }, - "zlev_bnds":{ - "dimensions":"olevel", - "long_name":"vertical coordinate formula term: zlev(k+1/2)", - "out_name":"zlev_bnds", - "type":"double", - "units":"" - }, - "ztop":{ - "dimensions":"", - "long_name":"height of top of model", - "out_name":"ztop", - "type":"", - "units":"m" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_fx.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_fx.json deleted file mode 100644 index d36c2cae21..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_fx.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"0.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"alevel", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"fx", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_fx" - }, - "variable_entry":{ - "areacella":{ - "cell_measures":"", - "cell_methods":"area: sum", - "comment":"For atmospheres with more than 1 mesh (e.g., staggered grids), report areas that apply to surface vertical fluxes of energy.", - "dimensions":"longitude latitude", - "frequency":"fx", - "long_name":"Grid-Cell Area for Atmospheric Variables", - "modeling_realm":"atmos land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"areacella", - "positive":"", - "standard_name":"cell_area", - "type":"real", - "units":"m2", - "valid_max":"", - "valid_min":"" - }, - "areacellr":{ - "cell_measures":"", - "cell_methods":"area: sum", - "comment":"For river routing model, if grid differs from the atmospheric grid.", - "dimensions":"longitude latitude", - "frequency":"fx", - "long_name":"Grid-Cell Area for River Model Variables", - "modeling_realm":"land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"areacellr", - "positive":"", - "standard_name":"cell_area", - "type":"real", - "units":"m2", - "valid_max":"", - "valid_min":"" - }, - "mrsofc":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean where land", - "comment":"The bulk water content retained by the soil at -33 J/kg of suction pressure, expressed as mass per unit land area; report as missing where there is no land", - "dimensions":"longitude latitude", - "frequency":"fx", - "long_name":"Capacity of Soil to Store Water", - "modeling_realm":"land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"mrsofc", - "positive":"", - "standard_name":"soil_moisture_content_at_field_capacity", - "type":"real", - "units":"kg m-2", - "valid_max":"", - "valid_min":"" - }, - "orog":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean", - "comment":"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.", - "dimensions":"longitude latitude", - "frequency":"fx", - "long_name":"Surface Altitude", - "modeling_realm":"land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"orog", - "positive":"", - "standard_name":"surface_altitude", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "rootd":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean", - "comment":"report the maximum soil depth reachable by plant roots (if defined in model), i.e., the maximum soil depth from which they can extract moisture; report as *missing* where the land fraction is 0.", - "dimensions":"longitude latitude", - "frequency":"fx", - "long_name":"Maximum Root Depth", - "modeling_realm":"land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"rootd", - "positive":"", - "standard_name":"root_depth", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - }, - "sftgif":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean", - "comment":"Fraction of grid cell covered by land ice (ice sheet, ice shelf, ice cap, glacier)", - "dimensions":"longitude latitude typeli", - "frequency":"fx", - "long_name":"Fraction of Grid Cell Covered with Glacier", - "modeling_realm":"land", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sftgif", - "positive":"", - "standard_name":"land_ice_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "sftlf":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean", - "comment":"Please express 'X_area_fraction' as the percentage of horizontal area occupied by X.", - "dimensions":"longitude latitude typeland", - "frequency":"fx", - "long_name":"Land Area Fraction", - "modeling_realm":"atmos", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"sftlf", - "positive":"", - "standard_name":"land_area_fraction", - "type":"real", - "units":"%", - "valid_max":"", - "valid_min":"" - }, - "zfull":{ - "cell_measures":"area: areacella", - "cell_methods":"area: mean", - "comment":"", - "dimensions":"longitude latitude alevel", - "frequency":"fx", - "long_name":"Altitude of Model Full-Levels", - "modeling_realm":"atmos", - "ok_max_mean_abs":"", - "ok_min_mean_abs":"", - "out_name":"zfull", - "positive":"", - "standard_name":"height_above_reference_ellipsoid", - "type":"real", - "units":"m", - "valid_max":"", - "valid_min":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_grids.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_grids.json deleted file mode 100644 index 276beaf467..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_grids.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "Header":{ - "#dataRequest_specs_version":"01.00.21", - "Conventions":"CF-1.7 ODS-2.1", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "missing_value":"1e20", - "product":"observations", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_grids" - }, - "axis_entry":{ - "grid_latitude":{ - "axis":"Y", - "long_name":"latitude in rotated pole grid", - "out_name":"rlat", - "standard_name":"grid_latitude", - "type":"", - "units":"degrees" - }, - "grid_longitude":{ - "axis":"X", - "long_name":"longitude in rotated pole grid", - "out_name":"rlon", - "standard_name":"grid_longitude", - "type":"", - "units":"degrees" - }, - "i_index":{ - "axis":"", - "long_name":"cell index along first dimension", - "out_name":"i", - "standard_name":"", - "type":"integer", - "units":"1" - }, - "j_index":{ - "axis":"", - "long_name":"cell index along second dimension", - "out_name":"j", - "standard_name":"", - "type":"integer", - "units":"1" - }, - "k_index":{ - "axis":"", - "long_name":"cell index along third dimension", - "out_name":"k", - "standard_name":"", - "type":"integer", - "units":"1" - }, - "l_index":{ - "axis":"", - "long_name":"cell index along fourth dimension", - "out_name":"l", - "standard_name":"", - "type":"integer", - "units":"1" - }, - "m_index":{ - "axis":"", - "long_name":"cell index along fifth dimension", - "out_name":"m", - "standard_name":"", - "type":"integer", - "units":"1" - }, - "vertices":{ - "axis":"", - "long_name":"", - "out_name":"", - "standard_name":"", - "type":"", - "units":"" - }, - "x":{ - "axis":"X", - "long_name":"x coordinate of projection", - "out_name":"", - "standard_name":"projection_x_coordinate", - "type":"", - "units":"m" - }, - "x_deg":{ - "axis":"X", - "long_name":"x coordinate of projection", - "out_name":"x", - "standard_name":"projection_x_coordinate", - "type":"", - "units":"degrees" - }, - "y":{ - "axis":"Y", - "long_name":"y coordinate of projection", - "out_name":"", - "standard_name":"projection_y_coordinate", - "type":"", - "units":"m" - }, - "y_deg":{ - "axis":"Y", - "long_name":"y coordinate of projection", - "out_name":"y", - "standard_name":"projection_y_coordinate", - "type":"", - "units":"degrees" - } - }, - "mapping_entry":{ - "sample_user_mapping":{ - "coordinates":"rlon rlat", - "parameter1":"false_easting", - "parameter2":"false_northing" - } - }, - "variable_entry":{ - "latitude":{ - "dimensions":"longitude latitude", - "long_name":"", - "out_name":"latitude", - "standard_name":"", - "units":"degrees_north", - "valid_max":"90.0", - "valid_min":"-90.0" - }, - "longitude":{ - "dimensions":"longitude latitude", - "long_name":"", - "out_name":"longitude", - "standard_name":"", - "units":"degrees_east", - "valid_max":"360.0", - "valid_min":"0.0" - }, - "vertices_latitude":{ - "dimensions":"vertices longitude latitude", - "long_name":"", - "out_name":"vertices_latitude", - "standard_name":"", - "units":"degrees_north", - "valid_max":"90.0", - "valid_min":"-90.0" - }, - "vertices_longitude":{ - "dimensions":"vertices longitude latitude", - "long_name":"", - "out_name":"vertices_longitude", - "standard_name":"", - "units":"degrees_east", - "valid_max":"360.0", - "valid_min":"0.0" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monNobs.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monNobs.json deleted file mode 100644 index da00c57753..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monNobs.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "Header":{ - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"alevel alevhalf", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"aerosol atmos atmosChem land landIce ocean ocnBgchem seaIce", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_monNobs" - }, - "variable_entry":{ - "ndviNobs":{ - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Normalized Difference Vegetation Index Number of Observations", - "modeling_realm":"atmos", - "out_name":"ndviNobs", - "standard_name":"number_of_observations", - "type":"integer", - "units":"1" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monStderr.json b/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monStderr.json deleted file mode 100644 index 3c4b3814b8..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/Tables/obs4MIPs_monStderr.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "Header":{ - "#mip_era":"CMIP6", - "Conventions":"CF-1.7 ODS-2.1", - "approx_interval":"30.00000", - "cmor_version":"3.2", - "data_specs_version":"2.1.0", - "generic_levels":"alevel alevhalf", - "int_missing_value":"-2147483648", - "missing_value":"1e20", - "product":"observations", - "realm":"aerosol atmos atmosChem land landIce ocean ocnBgchem seaIce", - "table_date":"07 March 2018", - "table_id":"Table obs4MIPs_monStderr" - }, - "variable_entry":{ - "ndviStderr":{ - "comment":"", - "dimensions":"longitude latitude time", - "frequency":"mon", - "long_name":"Normalized Difference Vegetation Index Standard Error", - "modeling_realm":"atmos", - "out_name":"ndviStderr", - "standard_name":"normalized_difference_vegetation_index standard_error", - "type":"real", - "units":"" - } - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_frequency.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_frequency.json deleted file mode 100644 index d749596a35..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_frequency.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "frequency":{ - "1hr":"sampled hourly", - "1hrCM":"monthly-mean diurnal cycle resolving each day into 1-hour means", - "1hrPt":"sampled hourly, at specified time point within an hour", - "3hr":"sampled every 3 hours", - "3hrPt":"sampled 3 hourly, at specified time point within the time period", - "6hr":"sampled every 6 hours", - "6hrPt":"sampled 6 hourly, at specified time point within the time period", - "day":"daily mean samples", - "dec":"decadal mean samples", - "fx":"fixed (time invariant) field", - "mon":"monthly mean samples", - "monC":"monthly climatology computed from monthly mean samples", - "monPt":"sampled monthly, at specified time point within the time period", - "subhrPt":"sampled sub-hourly, at specified time point within an hour", - "yr":"annual mean samples", - "yrPt":"sampled yearly, at specified time point within the time period" - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_grid_label.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_grid_label.json deleted file mode 100644 index fa079918e2..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_grid_label.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "grid_label":{ - "gm":"global mean data", - "gn":"data reported on a model's native grid", - "gna":"data reported on a native grid in the region of Antarctica", - "gng":"data reported on a native grid in the region of Greenland", - "gnz":"zonal mean data reported on a model's native latitude grid", - "gr":"regridded data reported on the data provider's preferred target grid", - "gr1":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr1a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr1g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr1z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr2":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr2a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr2g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr2z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr3":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr3a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr3g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr3z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr4":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr4a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr4g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr4z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr5":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr5a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr5g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr5z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr6":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr6a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr6g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr6z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr7":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr7a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr7g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr7z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr8":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr8a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr8g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr8z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr9":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr9a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr9g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr9z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gra":"regridded data in the region of Antarctica reported on the data provider's preferred target grid", - "grg":"regridded data in the region of Greenland reported on the data provider's preferred target grid", - "grz":"regridded zonal mean data reported on the data provider's preferred latitude target grid" - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_institution_id.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_institution_id.json deleted file mode 100644 index 8ac6bca123..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_institution_id.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "institution_id":{ - "DWD":"Deutscher Wetterdienst, Offenbach 63067, Germany", - "NASA-JPL":"NASA's Jet Propulsion Laboratory, Pasadena, CA 91109, USA", - "NOAA-NCEI":"NOAA's National Centers for Environmental Information, Asheville, NC 28801, USA", - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", - "RSS":"Remote Sensing Systems, Santa Rosa, CA 95401, USA" - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_license.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_license.json deleted file mode 100644 index b4060ed779..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_license.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "license":"Data in this file produced by is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Use of the data must be acknowledged following guidelines found at . Further information about this data, including some limitations, can be found via .)" -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_nominal_resolution.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_nominal_resolution.json deleted file mode 100644 index 4de5620573..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_nominal_resolution.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "nominal_resolution":[ - "0.5 km", - "1 km", - "10 km", - "100 km", - "1000 km", - "10000 km", - "1x1 degree", - "2.5 km", - "25 km", - "250 km", - "2500 km", - "5 km", - "50 km", - "500 km", - "5000 km" - ] -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_product.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_product.json deleted file mode 100644 index 5b74000b98..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_product.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "product":[ - "observations", - "reanalysis" - ] -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_realm.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_realm.json deleted file mode 100644 index ffe16ec257..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_realm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "realm":[ - "aerosol", - "atmos", - "atmosChem", - "land", - "landIce", - "ocean", - "ocnBgchem", - "seaIce" - ] -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_region.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_region.json deleted file mode 100644 index 69c23d6444..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_region.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "region":[ - "africa", - "antarctica", - "arabian_sea", - "aral_sea", - "arctic_ocean", - "asia", - "atlantic_ocean", - "australia", - "baltic_sea", - "barents_opening", - "barents_sea", - "beaufort_sea", - "bellingshausen_sea", - "bering_sea", - "bering_strait", - "black_sea", - "canadian_archipelago", - "caribbean_sea", - "caspian_sea", - "central_america", - "chukchi_sea", - "contiguous_united_states", - "denmark_strait", - "drake_passage", - "east_china_sea", - "english_channel", - "eurasia", - "europe", - "faroe_scotland_channel", - "florida_bahamas_strait", - "fram_strait", - "global", - "global_land", - "global_ocean", - "great_lakes", - "greenland", - "gulf_of_alaska", - "gulf_of_mexico", - "hudson_bay", - "iceland_faroe_channel", - "indian_ocean", - "indo_pacific_ocean", - "indonesian_throughflow", - "irish_sea", - "lake_baykal", - "lake_chad", - "lake_malawi", - "lake_tanganyika", - "lake_victoria", - "mediterranean_sea", - "mozambique_channel", - "north_america", - "north_sea", - "norwegian_sea", - "pacific_equatorial_undercurrent", - "pacific_ocean", - "persian_gulf", - "red_sea", - "ross_sea", - "sea_of_japan", - "sea_of_okhotsk", - "south_america", - "south_china_sea", - "southern_ocean", - "taiwan_luzon_straits", - "weddell_sea", - "windward_passage", - "yellow_sea" - ] -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_required_global_attributes.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_required_global_attributes.json deleted file mode 100644 index 1c78c5af89..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_required_global_attributes.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "required_global_attributes":[ - "Conventions", - "activity_id", - "contact", - "creation_date", - "data_specs_version", - "frequency", - "grid", - "grid_label", - "institution", - "institution_id", - "license", - "nominal_resolution", - "product", - "realm", - "source_id", - "table_id", - "tracking_id", - "variable_id", - "variant_label" - ] -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_id.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_id.json deleted file mode 100644 index 21ea8cef00..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_id.json +++ /dev/null @@ -1,353 +0,0 @@ -{ - "source_id":{ - "AIRS-1-0":{ - "institution_id":"NASA-JPL", - "region":[ - "global" - ], - "release_year":"2011", - "source_description":"Atmospheric Infrared Sounder", - "source_label":"AIRS", - "source_name":"AIRS", - "source_type":"satellite_retrieval", - "source_variables":[ - "hus", - "ta" - ], - "source_version_number":"1.0" - }, - "Aura-MLS-v04-2":{ - "institution_id":"NASA-JPL", - "region":[ - "global" - ], - "release_year":"2018", - "source_description":"EOS Aura Microwave Limb Sounder", - "source_label":"Aura-MLS", - "source_name":"Aura MLS", - "source_type":"satellite_retrieval", - "source_variables":[ - "cli", - "hus", - "ta" - ], - "source_version_number":"v04.2" - }, - "CMSAF-CLARA-A-2-0":{ - "institution_id":"DWD", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"CM SAF cLoud, Albedo and surface RAdiation dataset from AVHRR data", - "source_id":"CMSAF-CLARA-A-2-0", - "source_label":"CMSAF-CLARA-A", - "source_name":"CMSAF CLARA A", - "source_type":"satellite_retrieval", - "source_variables":[ - "clCLARA", - "clivi", - "cltCLARA", - "clwCLARA", - "clwtCLARA", - "clwvi", - "pctCLARA", - "rsds", - "rsdscs" - ], - "source_version_number":"2.0" - }, - "CMSAF-HOAPS-4-0":{ - "institution_id":"DWD", - "region":[ - "global_ocean" - ], - "release_year":"2017", - "source_description":"Hamburg Ocean Atmosphere Parameters and fluxes from Satellite data, based on SSM/I and SSMIS aboard DMSP", - "source_id":"CMSAF-HOAPS-4-0", - "source_label":"CMSAF-HOAPS", - "source_name":"CMSAF HOAPS", - "source_type":"satellite_retrieval", - "source_variables":[ - "evspsbl", - "hfls", - "hfss", - "huss", - "pme", - "pr", - "prw", - "sfcWind" - ], - "source_version_number":"4.0" - }, - "CMSAF-SARAH-2-0":{ - "institution_id":"DWD", - "region":[ - "africa", - "atlantic_ocean", - "europe" - ], - "release_year":"2017", - "source_description":"Surface solAr RAdiation data set - Heliosat, based on MVIRI/SEVIRI aboard METEOSAT", - "source_id":"CMSAF-SARAH-2.0", - "source_label":"CMSAF-SARAH", - "source_name":"CMSAF SARAH", - "source_type":"satellite_retrieval", - "source_variables":[ - "rsds" - ], - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-ATSR2-AATSR-2-0":{ - "institution_id":"DWD", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"Cloud properties derived from ATSR2 and AATSR (aboard ERS2 and ENVISAT) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets.", - "source_id":"ESACCI-CLOUD-ATSR2-AATSR-2-0", - "source_label":"ESACCI-CLOUD-ATSR2-AATSR", - "source_name":"ESACCI CLOUD ATSR2 AATSR", - "source_type":"satellite_retrieval", - "source_variables":[ - "clCCI", - "clivi", - "cltCCI", - "clwCCI", - "clwtCCI", - "clwvi", - "pctCCI" - ], - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-AVHRR-AM-2-0":{ - "institution_id":"DWD", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"Cloud properties derived from AVHRR (aboard NOAA and MetOp AM) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets", - "source_id":"ESACCI-CLOUD-AVHRR-AM-2-0", - "source_label":"ESACCI-CLOUD-AVHRR-AM", - "source_name":"ESACCI CLOUD AVHRR AM", - "source_type":"satellite_retrieval", - "source_variables":[ - "clCCI", - "clivi", - "cltCCI", - "clwCCI", - "clwtCCI", - "clwvi", - "pctCCI" - ], - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-AVHRR-PM-2-0":{ - "institution_id":"DWD", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"Cloud properties derived from AVHRR (aboard NOAA and MetOp PM) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets", - "source_id":"ESACCI-CLOUD-AVHRR-PM-2-0", - "source_label":"ESACCI-CLOUD-AVHRR-PM", - "source_name":"ESACCI CLOUD AVHRR PM", - "source_type":"satellite_retrieval", - "source_variables":[ - "clCCI", - "clivi", - "cltCCI", - "clwCCI", - "clwtCCI", - "clwvi", - "pctCCI" - ], - "source_version_number":"2.0" - }, - "ESACCI-CLOUD-MERIS-AATSR-2-0":{ - "institution_id":"DWD", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"Cloud properties derived from MERIS and AATSR (aboard ENVISAT) measurements. This dataset belongs to the ESA Cloud_cci suite of long-term coherent cloud property datasets.", - "source_id":"ESACCI-CLOUD-MERIS-AATSR-2-0", - "source_label":"ESACCI-CLOUD-MERIS-AATSR", - "source_name":"ESACCI CLOUD MERIS AATSR", - "source_type":"satellite_retrieval", - "source_variables":[ - "clCCI", - "clivi", - "cltCCI", - "clwCCI", - "clwtCCI", - "clwvi", - "pctCCI" - ], - "source_version_number":"2.0" - }, - "GNSS-RO-1-3":{ - "institution_id":"NASA-JPL", - "region":[ - "global" - ], - "release_year":"2016", - "source_description":"Global Navigation Satellite Systems Radio Occultation", - "source_label":"GNSS-RO", - "source_name":"GNSS RO", - "source_type":"satellite_retrieval", - "source_variables":[ - "ta", - "zg" - ], - "source_version_number":"1.3" - }, - "NOAA-NCEI-AVHRR-NDVI-4-0":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global_land" - ], - "release_year":"2013", - "source_description":"Normalized Difference Vegetation Index", - "source_id":"NOAA-NCEI-AVHRR-NDVI-4-0", - "source_label":"NOAA-NCEI-AVHRR-NDVI", - "source_name":"NOAA NCEI AVHRR NDVI", - "source_type":"satellite_retrieval", - "source_variables":[ - "ndvi" - ], - "source_version_number":"4.0" - }, - "NOAA-NCEI-ERSST-4-0":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global_ocean" - ], - "release_year":"2015", - "source_description":"Extended Reconstructed Sea Surface Temperatures", - "source_id":"NOAA-NCEI-ERSST-4-0", - "source_label":"NOAA-NCEI-ERSST", - "source_name":"NOAA NCEI ERSST", - "source_type":"gridded_insitu", - "source_variables":[ - "tos" - ], - "source_version_number":"4.0" - }, - "NOAA-NCEI-FAPAR-4-0":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global_land" - ], - "release_year":"2014", - "source_description":"AVHRR Fraction of Absorbed Photosynthetically Active Radiation", - "source_id":"NOAA-NCEI-FAPAR-4-0", - "source_label":"NOAA-NCEI-FAPAR", - "source_name":"NOAA NCEI FAPAR", - "source_type":"satellite_retrieval", - "source_variables":[ - "fapar" - ], - "source_version_number":"4.0" - }, - "NOAA-NCEI-GridSat-4-0":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global" - ], - "release_year":"2015", - "source_description":"Gridded Satellite ISCCP B1 11 Micron Brightness Temperature", - "source_id":"NOAA-NCEI-GridSat-4-0", - "source_label":"NOAA-NCEI-GridSat", - "source_name":"NOAA NCEI GridSat", - "source_type":"satellite_retrieval", - "source_variables":[ - "ttbr" - ], - "source_version_number":"4.0" - }, - "NOAA-NCEI-LAI-4-0":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global_land" - ], - "release_year":"2014", - "source_description":"AVHRR Leaf Area Index", - "source_id":"NOAA-NCEI-LAI-4-0", - "source_label":"NOAA-NCEI-LAI", - "source_name":"NOAA NCEI LAI", - "source_type":"satellite_retrieval", - "source_variables":[ - "lai" - ], - "source_version_number":"4.0" - }, - "NOAA-NCEI-PERSIANN-1-1":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global" - ], - "release_year":"2014", - "source_description":"Precipitation Estimation from Remotely Sensed Information using Artificial Neural Network", - "source_id":"NOAA-NCEI-PERSIANN-1-1", - "source_label":"NOAA-NCEI-PERSIANN", - "source_name":"NOAA NCEI PERSIANN", - "source_type":"satellite_retrieval", - "source_variables":[ - "pr" - ], - "source_version_number":"1.1" - }, - "NOAA-NCEI-SeaWinds-1-2":{ - "institution_id":"NOAA-NCEI", - "region":[ - "global_ocean" - ], - "release_year":"2008", - "source_description":"Blended Sea Surface Winds", - "source_id":"NOAA-NCEI-SeaWinds-1-2", - "source_label":"NOAA-NCEI-SeaWinds", - "source_name":"NOAA NCEI SeaWinds", - "source_type":"satellite_blended", - "source_variables":[ - "sfcWind", - "uas", - "vas" - ], - "source_version_number":"1.2" - }, - "QuikSCAT-v20110531":{ - "institution_id":"NASA-JPL", - "region":[ - "global" - ], - "release_year":"2011", - "source_description":"QuikSCAT winds monthly climatology derived from QuikSCAT L2B using the 2006 model function and processing algorithms.", - "source_label":"QuikSCAT", - "source_name":"QuikSCAT", - "source_type":"satellite_retrieval", - "source_variables":[ - "sfcWind", - "uas", - "vas" - ], - "source_version_number":"v20110531" - }, - "REMSS-PRW-6-6-0":{ - "institution_id":"RSS", - "region":[ - "global" - ], - "release_year":"2017", - "source_description":"Water Vapor Path", - "source_id":"REMSS-PRW-6-6-0", - "source_label":"REMSS-PRW", - "source_name":"REMSS PRW", - "source_type":"satellite_blended", - "source_variables":[ - "prw" - ], - "source_version_number":"6.6.0" - } - } -} diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_type.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_type.json deleted file mode 100644 index 28d98f5756..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_source_type.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "source_type":{ - "gridded_insitu":"gridded product based on measurements collected from in-situ instruments", - "reanalysis":"gridded product generated from a model reanalysis based on in-situ instruments and possibly satellite measurements", - "satellite_blended":"gridded product based on both in-situ instruments and satellite measurements", - "satellite_retrieval":"gridded product based on satellite measurements" - } -} \ No newline at end of file diff --git a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_table_id.json b/esmvaltool/cmor/tables/obs4mips/obs4MIPs_table_id.json deleted file mode 100644 index bbb23e82c8..0000000000 --- a/esmvaltool/cmor/tables/obs4mips/obs4MIPs_table_id.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "table_id":[ - "obs4MIPs_Aday", - "obs4MIPs_Amon", - "obs4MIPs_Lmon", - "obs4MIPs_Omon", - "obs4MIPs_SImon", - "obs4MIPs_fx", - "obs4MIPs_monNobs", - "obs4MIPs_monStderr" - ] -} \ No newline at end of file diff --git a/esmvaltool/utils/cmorizers/mip_convert/config-mipconv-user.yml b/esmvaltool/cmorizers/mip_convert/config-mipconv-user.yml similarity index 100% rename from esmvaltool/utils/cmorizers/mip_convert/config-mipconv-user.yml rename to esmvaltool/cmorizers/mip_convert/config-mipconv-user.yml diff --git a/esmvaltool/utils/cmorizers/mip_convert/esmvt_mipconv_setup.py b/esmvaltool/cmorizers/mip_convert/esmvt_mipconv_setup.py similarity index 100% rename from esmvaltool/utils/cmorizers/mip_convert/esmvt_mipconv_setup.py rename to esmvaltool/cmorizers/mip_convert/esmvt_mipconv_setup.py diff --git a/esmvaltool/utils/cmorizers/mip_convert/recipe_mip_convert.yml b/esmvaltool/cmorizers/mip_convert/recipe_mip_convert.yml similarity index 100% rename from esmvaltool/utils/cmorizers/mip_convert/recipe_mip_convert.yml rename to esmvaltool/cmorizers/mip_convert/recipe_mip_convert.yml diff --git a/esmvaltool/utils/cmorizers/mip_convert/rose-suite-template.conf b/esmvaltool/cmorizers/mip_convert/rose-suite-template.conf similarity index 100% rename from esmvaltool/utils/cmorizers/mip_convert/rose-suite-template.conf rename to esmvaltool/cmorizers/mip_convert/rose-suite-template.conf diff --git a/esmvaltool/utils/cmorizers/obs/__init__.py b/esmvaltool/cmorizers/obs/__init__.py similarity index 100% rename from esmvaltool/utils/cmorizers/obs/__init__.py rename to esmvaltool/cmorizers/obs/__init__.py diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/CRU.yml b/esmvaltool/cmorizers/obs/cmor_config/CRU.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/CRU.yml rename to esmvaltool/cmorizers/obs/cmor_config/CRU.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/ESACCI-OC.yml b/esmvaltool/cmorizers/obs/cmor_config/ESACCI-OC.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/ESACCI-OC.yml rename to esmvaltool/cmorizers/obs/cmor_config/ESACCI-OC.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/LandFlux-EVAL.yml b/esmvaltool/cmorizers/obs/cmor_config/LandFlux-EVAL.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/LandFlux-EVAL.yml rename to esmvaltool/cmorizers/obs/cmor_config/LandFlux-EVAL.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/Landschuetzer2016.yml b/esmvaltool/cmorizers/obs/cmor_config/Landschuetzer2016.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/Landschuetzer2016.yml rename to esmvaltool/cmorizers/obs/cmor_config/Landschuetzer2016.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/MTE.yml b/esmvaltool/cmorizers/obs/cmor_config/MTE.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/MTE.yml rename to esmvaltool/cmorizers/obs/cmor_config/MTE.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmor_config/WOA.yml b/esmvaltool/cmorizers/obs/cmor_config/WOA.yml similarity index 100% rename from esmvaltool/utils/cmorizers/obs/cmor_config/WOA.yml rename to esmvaltool/cmorizers/obs/cmor_config/WOA.yml diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs.py b/esmvaltool/cmorizers/obs/cmorize_obs.py similarity index 83% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs.py rename to esmvaltool/cmorizers/obs/cmorize_obs.py index 50df18411b..cb2200cbe8 100755 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs.py @@ -9,7 +9,7 @@ The user can specify a list of DATASETS that the CMOR reformatting can by run on by using -o (--obs-list-cmorize) command line argument. The CMOR reformatting scripts are to be found in: -esmvaltool/cmor/cmorizers/obs +esmvalcore.cmor/cmorizers/obs """ import argparse import datetime @@ -17,9 +17,13 @@ import logging import os import subprocess +from pathlib import Path -from esmvaltool._config import read_config_user_file -from esmvaltool._task import write_ncl_settings +import esmvalcore +from esmvalcore._config import read_config_user_file +from esmvalcore._task import write_ncl_settings + +from .utilities import read_cmor_config logger = logging.getLogger(__name__) @@ -40,26 +44,28 @@ def _assemble_datasets(raw_obs, obs_list): # check for desired datasets only (if any) # if not, walk all over rawobs dir # assume a RAWOBS/TierX/DATASET input structure - datasets = {} # get all available tiers in source dir tiers = ['Tier{}'.format(i) for i in range(2, 4)] tiers = [ tier for tier in tiers if os.path.exists(os.path.join(raw_obs, tier)) ] + datasets = {tier: [] for tier in tiers} # if user specified obs list if obs_list: - for tier in tiers: - datasets[tier] = [] - for dataset_name in obs_list.split(','): + for dataset_name in obs_list.split(','): + for tier in tiers: if os.path.isdir(os.path.join(raw_obs, tier, dataset_name)): datasets[tier].append(dataset_name) + break + else: + logger.warning("Could not find raw data %s in %s/%s", + dataset_name, raw_obs, tier) # otherwise go through the whole raw_obs dir else: for tier in tiers: - datasets[tier] = [] for dats in os.listdir(os.path.join(raw_obs, tier)): datasets[tier].append(dats) @@ -88,6 +94,8 @@ def _write_ncl_settings(project_info, dataset, run_dir, reformat_script, def _run_ncl_script(in_dir, out_dir, run_dir, dataset, reformat_script, log_level): """Run the NCL cmorization mechanism.""" + logger.info("CMORizing dataset %s using NCL script %s", + dataset, reformat_script) project = {} project[dataset] = {} project[dataset]['indir'] = in_dir @@ -101,7 +109,8 @@ def _run_ncl_script(in_dir, out_dir, run_dir, dataset, reformat_script, env = dict(os.environ) env['settings'] = settings_file env['esmvaltool_root'] = esmvaltool_root - + env['cmor_tables'] = str(Path(esmvalcore.cmor.__file__).parent / 'tables') + logger.info("Using CMOR tables at %s", env['cmor_tables']) # call NCL ncl_call = ['ncl', reformat_script] logger.info("Executing cmd: %s", ' '.join(ncl_call)) @@ -116,13 +125,18 @@ def _run_ncl_script(in_dir, out_dir, run_dir, dataset, reformat_script, logger.info('[NCL][subprocess.Popen ERROR] %s', err) -def _run_pyt_script(in_dir, out_dir, reformat_module): +def _run_pyt_script(in_dir, out_dir, dataset): """Run the Python cmorization mechanism.""" - py_cmor = importlib.import_module(reformat_module) - py_cmor.cmorization(in_dir, out_dir) + module_name = 'esmvaltool.cmorizers.obs.cmorize_obs_{}'.format( + dataset.lower().replace("-", "_")) + module = importlib.import_module(module_name) + logger.info("CMORizing dataset %s using Python script %s", + dataset, module.__file__) + cfg = read_cmor_config(dataset) + module.cmorization(in_dir, out_dir, cfg) -def execute_cmorize(): +def main(): """Run it as executable.""" parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('-o', @@ -217,16 +231,23 @@ def _cmor_reformat(config, obs_list): run_dir = os.path.join(config['output_dir'], 'run') # datsets dictionary of Tier keys datasets = _assemble_datasets(raw_obs, obs_list) + if not datasets: + logger.warning("Check input: could not find required %s in %s", + obs_list, raw_obs) logger.info("Processing datasets %s", datasets) # loop through tier/datasets to be cmorized for tier in datasets: for dataset in datasets[tier]: - reformat_script_root = os.path.join(reformat_scripts, - 'cmorize_obs_' + dataset) + reformat_script_root = os.path.join( + reformat_scripts, + 'cmorize_obs_' + dataset.lower().replace('-', '_'), + ) # in-data dir; build out-dir tree in_data_dir = os.path.join(raw_obs, tier, dataset) + logger.info("Input data from: %s", in_data_dir) out_data_dir = os.path.join(config['output_dir'], tier, dataset) + logger.info("Output will be written to: %s", out_data_dir) if not os.path.isdir(out_data_dir): os.makedirs(out_data_dir) @@ -236,10 +257,6 @@ def _cmor_reformat(config, obs_list): # figure out what language the script is in if os.path.isfile(reformat_script_root + '.ncl'): reformat_script = reformat_script_root + '.ncl' - logger.info("CMORizing dataset %s using NCL script %s", - dataset, reformat_script) - - # call the ncl script _run_ncl_script( in_data_dir, out_data_dir, @@ -248,18 +265,11 @@ def _cmor_reformat(config, obs_list): reformat_script, config['log_level'], ) - elif os.path.isfile( - reformat_script_root.replace('-', '_') + '.py'): - py_reformat_script = (reformat_script_root.replace('-', '_') + - '.py') - logger.info("CMORizing dataset %s using Python script %s", - dataset, py_reformat_script) - module_root = 'esmvaltool.utils.cmorizers.obs.cmorize_obs_' - _run_pyt_script(in_data_dir, out_data_dir, - module_root + dataset.replace('-', '_')) + elif os.path.isfile(reformat_script_root + '.py'): + _run_pyt_script(in_data_dir, out_data_dir, dataset) else: logger.info('Could not find cmorizer for %s', datasets) if __name__ == '__main__': - execute_cmorize() + main() diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_AURA-TES.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_aura_tes.ncl similarity index 94% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_AURA-TES.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_aura_tes.ncl index 552e48cf40..662054b3bf 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_AURA-TES.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_aura_tes.ncl @@ -24,12 +24,13 @@ ; 20140129-A_righ_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_AURA-TES.ncl" + DIAG_SCRIPT = "cmorize_obs_aura_tes.ncl" ; Source name OBSNAME = "AURA-TES" @@ -54,8 +55,7 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_" + MIP + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_" + MIP ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-SATELLITE-SOIL-MOISTURE.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_cds_satellite_soil_moisture.ncl similarity index 90% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-SATELLITE-SOIL-MOISTURE.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_cds_satellite_soil_moisture.ncl index 084ad39244..be13f3f6f1 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-SATELLITE-SOIL-MOISTURE.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_cds_satellite_soil_moisture.ncl @@ -25,15 +25,16 @@ ; with years) ; ; Modification history -; 20190314-A_crez_ba: adapted from file cmorize_obs_ESACCI-SOILMOISTURE.ncl +; 20190314-A_crez_ba: adapted from file cmorize_obs_esacci_soilmoisture.ncl ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_CDS-SATELLITE-SOIL-MOISTURE.ncl" + DIAG_SCRIPT = "cmorize_obs_cds_satellite_soil_moisture.ncl" ; Source name OBSNAME = "CDS-SATELLITE-SOIL-MOISTURE" @@ -58,8 +59,7 @@ begin FREQ = (/"day", "day"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_" + VAR + ".dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_" + VAR + ".dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCH4.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_cds_xch4.ncl similarity index 92% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCH4.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_cds_xch4.ncl index a402a09300..2c7cc78266 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCH4.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_cds_xch4.ncl @@ -22,12 +22,13 @@ ; 20190311-A_hass_bg: written. ; ; ############################################################################ -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_CDS-XCH4.ncl" + DIAG_SCRIPT = "cmorize_obs_cds_xch4.ncl" ; Source name OBSNAME = "CDS-XCH4" @@ -52,8 +53,7 @@ begin FREQ = (/"mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_xch4.dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_xch4.dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCO2.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_cds_xco2.ncl similarity index 92% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCO2.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_cds_xco2.ncl index 49f2e5e1da..7ef3cac9ea 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CDS-XCO2.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_cds_xco2.ncl @@ -22,12 +22,13 @@ ; 20190319-A_hass_bg: written. ; ; ############################################################################ -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_CDS-XCO2.ncl" + DIAG_SCRIPT = "cmorize_obs_cds_xco2.ncl" ; Source name OBSNAME = "CDS-XCO2" @@ -52,8 +53,7 @@ begin FREQ = (/"mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_xco2.dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_xco2.dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CERES-SYN1deg.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_ceres_syn1deg.ncl similarity index 94% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_CERES-SYN1deg.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_ceres_syn1deg.ncl index f10e8e1df1..11646fc13a 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CERES-SYN1deg.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_ceres_syn1deg.ncl @@ -36,12 +36,13 @@ ; and eval_ma. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_CERES-SYN1deg.ncl" + DIAG_SCRIPT = "cmorize_obs_ceres_syn1deg.ncl" ; Source name OBSNAME = "CERES-SYN1deg" @@ -108,10 +109,9 @@ begin ; CMOR table: Amon version is used also for 3hr, since not all variables are ; available in 3hr (the tables are identical anyway) CMOR_TABLE = new(dimsizes(MIP), string) - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_Amon" - CMOR_TABLE(ind(VAR.eq."rluscs")) = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_rluscs.dat" + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_Amon" + CMOR_TABLE(ind(VAR.eq."rluscs")) = \ + getenv("cmor_tables") + "/custom/CMOR_rluscs.dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CRU.py b/esmvaltool/cmorizers/obs/cmorize_obs_cru.py similarity index 81% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_CRU.py rename to esmvaltool/cmorizers/obs/cmorize_obs_cru.py index ceac7e0a36..48e34cfa8b 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_CRU.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_cru.py @@ -23,12 +23,10 @@ import iris -import esmvaltool.utils.cmorizers.obs.utilities as utils +from . import utilities as utils logger = logging.getLogger(__name__) -CFG = utils.read_cmor_config('CRU.yml') - def _clean(filepath): """Remove unzipped input file.""" @@ -65,18 +63,14 @@ def _unzip(filepath, out_dir): return new_path -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - glob_attrs = CFG['attributes'] - cmor_table = CFG['cmor_table'] - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) - raw_filepath = os.path.join(in_dir, CFG['filename']) + glob_attrs = cfg['attributes'] + cmor_table = cfg['cmor_table'] + raw_filepath = os.path.join(in_dir, cfg['filename']) # Run the cmorization - for (var, var_info) in CFG['variables'].items(): + for (var, var_info) in cfg['variables'].items(): logger.info("CMORizing variable '%s'", var) glob_attrs['mip'] = var_info['mip'] cmor_info = cmor_table.get_variable(var_info['mip'], var) diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ERA-Interim.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_era_interim.ncl similarity index 98% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ERA-Interim.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_era_interim.ncl index 446e70c8a2..98a8acaf7e 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ERA-Interim.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_era_interim.ncl @@ -54,7 +54,7 @@ begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ERA-Interim.ncl" + DIAG_SCRIPT = "cmorize_obs_era_interim.ncl" ; Source name OBSNAME = "ERA-Interim" @@ -119,7 +119,8 @@ begin end ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin @@ -133,8 +134,7 @@ begin CONVERSION = clist[2] MIP = clist[3] FREQ = clist[4] - CMOR_TABLE = \ - getenv("esmvaltool_root") + "/cmor/tables/cmip5/Tables/CMIP5_" + MIP + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_" + MIP delete(clist) log_info("Processing " + VAR + " (" + MIP + ")") diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-AEROSOL.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_aerosol.ncl similarity index 90% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-AEROSOL.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_aerosol.ncl index 3ddbe27123..543c2ec8c4 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-AEROSOL.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_aerosol.ncl @@ -27,12 +27,13 @@ ; 20150424-A_righ_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-AEROSOL.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_aerosol.ncl" ; Source name OBSNAME = "ESACCI-AEROSOL" @@ -61,13 +62,13 @@ begin "mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/" + \ - (/"cmip5/Tables/CMIP5_aero", \ - "cmip5/Tables/CMIP5_aero", \ - "cmip5/Tables/CMIP5_aero", \ - "cmip5/Tables/CMIP5_aero", \ - "custom/CMOR_od550aerStderr.dat", \ - "custom/CMOR_od870aerStderr.dat"/) + CMOR_TABLE = getenv("cmor_tables") + \ + (/"/cmip5/Tables/CMIP5_aero", \ + "/cmip5/Tables/CMIP5_aero", \ + "/cmip5/Tables/CMIP5_aero", \ + "/cmip5/Tables/CMIP5_aero", \ + "/custom/CMOR_od550aerStderr.dat", \ + "/custom/CMOR_od870aerStderr.dat"/) ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-CLOUD.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_cloud.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-CLOUD.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_cloud.ncl index b65f05dde5..718863c344 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-CLOUD.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_cloud.ncl @@ -35,12 +35,13 @@ ; 20160519-A_laue_ax: written (reformat_obs_ESACCI-AEROSOL.ncl). ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-CLOUD.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_cloud.ncl" ; Source name OBSNAME = "ESACCI-CLOUD" @@ -68,11 +69,11 @@ begin FREQ = (/"mon", "mon", "mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/" + \ - (/"cmip5/Tables/CMIP5_Amon", \ - "custom/CMOR_cltStderr.dat", \ - "cmip5/Tables/CMIP5_Amon", \ - "cmip5/Tables/CMIP5_Amon"/) + CMOR_TABLE = getenv("cmor_tables") + \ + (/"/cmip5/Tables/CMIP5_Amon", \ + "/custom/CMOR_cltStderr.dat", \ + "/cmip5/Tables/CMIP5_Amon", \ + "/cmip5/Tables/CMIP5_Amon"/) ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-FIRE.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_fire.ncl similarity index 94% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-FIRE.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_fire.ncl index 4f3155b00e..96c4b1a40c 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-FIRE.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_fire.ncl @@ -20,12 +20,13 @@ ; 20190124-A_righ_ma: written based on a python script by muel_bn. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-FIRE.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_fire.ncl" ; Source name OBSNAME = "ESACCI-FIRE" @@ -50,8 +51,7 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_Lmon" + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_Lmon" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-LANDCOVER.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_landcover.ncl similarity index 96% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-LANDCOVER.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_landcover.ncl index 62a051ed72..968f3e7be3 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-LANDCOVER.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_landcover.ncl @@ -33,12 +33,13 @@ ; 20160714-A_muel_bn: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-LANDCOVER.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_landcover.ncl" ; Source name OBSNAME = "ESACCI-LANDCOVER" @@ -72,8 +73,7 @@ begin FREQ = (/"mon", "mon", "mon", "mon", "mon"/) ; CMOR table - CMOR_TABLE = \ - getenv("esmvaltool_root") + "/cmor/tables/cmip5/Tables/CMIP5_Lmon" + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_Lmon" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OC.py b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_oc.py similarity index 86% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OC.py rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_oc.py index f0f0d833b7..90567d5598 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OC.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_oc.py @@ -1,4 +1,3 @@ -# pylint: disable=invalid-name """ESMValTool CMORizer for ESACCI-OC data. Tier @@ -22,21 +21,18 @@ """ +import glob import logging import os -import glob -import xarray as xr import iris +import xarray as xr from .utilities import (constant_metadata, fix_coords, fix_var_metadata, - read_cmor_config, save_variable, set_global_atts) + save_variable, set_global_atts) logger = logging.getLogger(__name__) -# read in CMOR configuration -CFG = read_cmor_config('ESACCI-OC.yml') - def _fix_data(cube, var): """Specific data fixes for different variables.""" @@ -88,7 +84,7 @@ def extract_variable(var_info, raw_info, out_dir, attrs): def merge_data(in_dir, out_dir, raw_info, bins): """Merge all data into a single (regridded) file.""" var = raw_info['name'] - do_bin = True if (bins % 2 == 0) & (bins != 0) else False + do_bin = (bins != 0) and (bins % 2 == 0) datafile = sorted(glob.glob(in_dir + '/' + raw_info['file'] + '*.nc')) for x in datafile: ds = xr.open_dataset(x) @@ -147,25 +143,20 @@ def merge_data(in_dir, out_dir, raw_info, bins): return (datafile, dsmeta['BINNING']) -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - cmor_table = CFG['cmor_table'] - glob_attrs = CFG['attributes'] - - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) + cmor_table = cfg['cmor_table'] + glob_attrs = cfg['attributes'] # run the cmorization - for var, vals in CFG['variables'].items(): + for var, vals in cfg['variables'].items(): var_info = cmor_table.get_variable(vals['mip'], var) glob_attrs['mip'] = vals['mip'] raw_info = {'name': vals['raw'], 'file': vals['file']} # merge yearly data and apply binning inpfile, addinfo = merge_data(in_dir, out_dir, raw_info, - CFG['custom']['bin_size']) + cfg['custom']['bin_size']) logger.info("CMORizing var %s from file %s", var, inpfile) raw_info['file'] = inpfile diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OZONE.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_ozone.ncl similarity index 95% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OZONE.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_ozone.ncl index 6b2818e447..487fe95a58 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-OZONE.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_ozone.ncl @@ -21,12 +21,13 @@ ; 20160224-A_wenz_sa: written based on reformat_obs_ESACCI-AEROSOL.ncl. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-OZONE.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_ozone.ncl" ; Source name OBSNAME = "ESACCI-OZONE" @@ -54,8 +55,7 @@ begin FREQ = (/"mon", "mon", "mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_" + VAR + ".dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_" + VAR + ".dat" ; File name FNAME = (/"ESACCI-OZONE-L3S-TC-MERGED-DLR_1M-_DATE_??-fv0100.nc", \ diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SOILMOISTURE.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_soilmoisture.ncl similarity index 94% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SOILMOISTURE.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_soilmoisture.ncl index e5655b39e7..87212bc830 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SOILMOISTURE.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_soilmoisture.ncl @@ -25,12 +25,13 @@ ; 20150523-A_righ_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-SOILMOISTURE.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_soilmoisture.ncl" ; Source name OBSNAME = "ESACCI-SOILMOISTURE" @@ -55,8 +56,7 @@ begin FREQ = (/"mon", "mon", "mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_" + VAR + ".dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_" + VAR + ".dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SST.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_sst.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SST.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_esacci_sst.ncl index 306211a8e4..44223714d8 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_ESACCI-SST.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_esacci_sst.ncl @@ -23,12 +23,13 @@ ; 20160818-A_laue_ax: written ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_ESACCI-SST.ncl" + DIAG_SCRIPT = "cmorize_obs_esacci_sst.ncl" ; Source name OBSNAME = "ESACCI-SST" @@ -47,7 +48,7 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/" + CMOR_TABLE = getenv("cmor_tables") ; Type TYPE = "sat" @@ -131,13 +132,13 @@ begin format_coords(erravg, yy + mo + "01", yy + mo + dm, FREQ) ; Format variable metadata - table = CMOR_TABLE + "cmip5/Tables/CMIP5_Amon" + table = CMOR_TABLE + "/cmip5/Tables/CMIP5_Amon" tmp = format_variable(sstavg, "ts", table) delete(sstavg) sstavg = tmp delete(tmp) - table = CMOR_TABLE + "custom/CMOR_tsStderr.dat" + table = CMOR_TABLE + "/custom/CMOR_tsStderr.dat" tmp = format_variable(erravg, "tsStderr", table) delete(erravg) erravg = tmp diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_GHCN.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_ghcn.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_GHCN.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_ghcn.ncl index aed9b03e76..d330d37e3a 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_GHCN.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_ghcn.ncl @@ -20,12 +20,13 @@ ; 20190227-A_bock_ls: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_GHCN.ncl" + DIAG_SCRIPT = "cmorize_obs_ghcn.ncl" ; Source name OBSNAME = "GHCN" @@ -50,8 +51,7 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_Amon" + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_Amon" ; Type TYPE = "ground" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT3.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_hadcrut3.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT3.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_hadcrut3.ncl index abd1a6b3e9..1b0d0a630d 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT3.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_hadcrut3.ncl @@ -24,12 +24,13 @@ ; 20140311-A_senf_da: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_HadCRUT3.ncl" + DIAG_SCRIPT = "cmorize_obs_hadcrut3.ncl" ; Source name OBSNAME = "HadCRUT3" @@ -54,7 +55,7 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/custom/CMOR_tasa.dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_tasa.dat" ; Type TYPE = "ground" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT4.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_hadcrut4.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT4.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_hadcrut4.ncl index 07cf11a936..24d07dbf2b 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadCRUT4.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_hadcrut4.ncl @@ -31,12 +31,13 @@ ; 20160203-A_laue_ax: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_HadCRUT4.ncl" + DIAG_SCRIPT = "cmorize_obs_hadcrut4.ncl" ; Source name OBSNAME = "HadCRUT4" @@ -58,12 +59,12 @@ begin FREQ = "mon" ; CMOR table - CMOR_TABLE1 = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_Amon" - CMOR_TABLE2 = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_tasa.dat" - CMOR_TABLE3 = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_Amon" + CMOR_TABLE1 = getenv("cmor_tables") + \ + "/cmip5/Tables/CMIP5_Amon" + CMOR_TABLE2 = getenv("cmor_tables") + \ + "/custom/CMOR_tasa.dat" + CMOR_TABLE3 = getenv("cmor_tables") + \ + "/cmip5/Tables/CMIP5_Amon" ; Version VERSION = "1" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadISST.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_hadisst.ncl similarity index 93% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_HadISST.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_hadisst.ncl index ed9a4a0bc7..aa47f17c44 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_HadISST.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_hadisst.ncl @@ -21,12 +21,13 @@ ; 20150422-A_laue_ax: written. ; ; ############################################################################ -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_HadISST.ncl" + DIAG_SCRIPT = "cmorize_obs_hadisst.ncl" ; Source name OBSNAME = "HadISST" @@ -51,8 +52,7 @@ begin FREQ = (/"mon", "mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_" + MIP + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_" + MIP ; Type TYPE = "reanaly" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_LandFlux_EVAL.py b/esmvaltool/cmorizers/obs/cmorize_obs_landflux_eval.py similarity index 79% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_LandFlux_EVAL.py rename to esmvaltool/cmorizers/obs/cmorize_obs_landflux_eval.py index 6650520a4b..d6d7f4d31b 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_LandFlux_EVAL.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_landflux_eval.py @@ -26,12 +26,10 @@ import numpy as np from cf_units import Unit -import esmvaltool.utils.cmorizers.obs.utilities as utils +from . import utilities as utils logger = logging.getLogger(__name__) -CFG = utils.read_cmor_config('LandFlux-EVAL.yml') - def _extract_variable(raw_var, cmor_info, attrs, filepath, out_dir): """Extract variable.""" @@ -67,19 +65,15 @@ def _date2num(date_str): time_coord.attributes = {} -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - glob_attrs = CFG['attributes'] - cmor_table = CFG['cmor_table'] - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) - filepath = os.path.join(in_dir, CFG['filename']) + glob_attrs = cfg['attributes'] + cmor_table = cfg['cmor_table'] + filepath = os.path.join(in_dir, cfg['filename']) logger.info("Found input file '%s'", filepath) # Run the cmorization - for (var, var_info) in CFG['variables'].items(): + for (var, var_info) in cfg['variables'].items(): logger.info("CMORizing variable '%s'", var) glob_attrs['mip'] = var_info['mip'] cmor_info = cmor_table.get_variable(var_info['mip'], var) diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_Landschuetzer2016.py b/esmvaltool/cmorizers/obs/cmorize_obs_landschuetzer2016.py similarity index 84% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_Landschuetzer2016.py rename to esmvaltool/cmorizers/obs/cmorize_obs_landschuetzer2016.py index 8c7e85a402..da7a7f54b6 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_Landschuetzer2016.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_landschuetzer2016.py @@ -1,4 +1,3 @@ -# pylint: disable=invalid-name """ESMValTool CMORizer for Landschuetzer2016 data. Tier @@ -26,13 +25,10 @@ from dask import array as da from .utilities import (constant_metadata, fix_coords, fix_var_metadata, - read_cmor_config, save_variable, set_global_atts) + save_variable, set_global_atts) logger = logging.getLogger(__name__) -# read in CMOR configuration -CFG = read_cmor_config('Landschuetzer2016.yml') - def _fix_data(cube, var): """Specific data fixes for different variables.""" @@ -87,18 +83,13 @@ def extract_variable(var_info, raw_info, out_dir, attrs): ) -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - cmor_table = CFG['cmor_table'] - glob_attrs = CFG['attributes'] - - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) + cmor_table = cfg['cmor_table'] + glob_attrs = cfg['attributes'] # run the cmorization - for var, vals in CFG['variables'].items(): + for var, vals in cfg['variables'].items(): inpfile = os.path.join(in_dir, vals['file']) logger.info("CMORizing var %s from file %s", var, inpfile) var_info = cmor_table.get_variable(vals['mip'], var) diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_MODIS.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_modis.ncl similarity index 95% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_MODIS.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_modis.ncl index 5bfcfe1bc6..aa953a5ef6 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_MODIS.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_modis.ncl @@ -41,12 +41,13 @@ ; 20150430-eval_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_MODIS.ncl" + DIAG_SCRIPT = "cmorize_obs_modis.ncl" ; Source name OBSNAME = "MODIS" @@ -80,13 +81,13 @@ begin VERSION = "MYD08_M3" ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/" + \ - (/"cmip5/Tables/CMIP5_Amon", \ - "cmip5/Tables/CMIP5_Amon", \ - "cmip5/Tables/CMIP5_Amon", \ - "custom/CMOR_lwpStderr.dat", \ - "custom/CMOR_iwpStderr.dat", \ - "cmip5/Tables/CMIP5_aero"/) + CMOR_TABLE = getenv("cmor_tables") + \ + (/"/cmip5/Tables/CMIP5_Amon", \ + "/cmip5/Tables/CMIP5_Amon", \ + "/cmip5/Tables/CMIP5_Amon", \ + "/custom/CMOR_lwpStderr.dat", \ + "/custom/CMOR_iwpStderr.dat", \ + "/cmip5/Tables/CMIP5_aero"/) ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_MTE.py b/esmvaltool/cmorizers/obs/cmorize_obs_mte.py similarity index 75% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_MTE.py rename to esmvaltool/cmorizers/obs/cmorize_obs_mte.py index 3d2b193003..6116daf9ea 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_MTE.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_mte.py @@ -21,12 +21,10 @@ import iris -import esmvaltool.utils.cmorizers.obs.utilities as utils +from . import utilities as utils logger = logging.getLogger(__name__) -CFG = utils.read_cmor_config('MTE.yml') - def _get_filepath(in_dir, basename): """Find correct name of file (extend basename with timestamp).""" @@ -54,19 +52,15 @@ def _extract_variable(raw_var, cmor_info, attrs, filepath, out_dir): cube, var, out_dir, attrs, unlimited_dimensions=['time']) -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - glob_attrs = CFG['attributes'] - cmor_table = CFG['cmor_table'] - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) - filepath = _get_filepath(in_dir, CFG['filename']) + glob_attrs = cfg['attributes'] + cmor_table = cfg['cmor_table'] + filepath = _get_filepath(in_dir, cfg['filename']) logger.info("Found input file '%s'", filepath) # Run the cmorization - for (var, var_info) in CFG['variables'].items(): + for (var, var_info) in cfg['variables'].items(): logger.info("CMORizing variable '%s'", var) glob_attrs['mip'] = var_info['mip'] cmor_info = cmor_table.get_variable(var_info['mip'], var) diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_NCEP.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_ncep.ncl similarity index 97% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_NCEP.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_ncep.ncl index 39926d7df7..37570d0210 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_NCEP.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_ncep.ncl @@ -49,12 +49,13 @@ ; 20140128-A_righ_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_NCEP.ncl" + DIAG_SCRIPT = "cmorize_obs_ncep.ncl" ; Source name OBSNAME = "NCEP" @@ -97,8 +98,7 @@ begin "day", "day", "day", "day"/) ; CMOR tables - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_" + MIP + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_" + MIP ; Type TYPE = "reanaly" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_NIWA-BS.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_niwa_bs.ncl similarity index 92% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_NIWA-BS.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_niwa_bs.ncl index 78cbb15b40..21adc6f9b8 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_NIWA-BS.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_niwa_bs.ncl @@ -23,12 +23,13 @@ ; 20140528-A_gott_kl: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_NIWA-BS.ncl" + DIAG_SCRIPT = "cmorize_obs_niwa_bs.ncl" ; Source name OBSNAME = "NIWA-BS" @@ -53,8 +54,7 @@ begin FREQ = (/"mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + "/cmor/tables/custom/CMOR_" + \ - VAR + ".dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_" + VAR + ".dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_PATMOS-x.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_patmos_x.ncl similarity index 96% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_PATMOS-x.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_patmos_x.ncl index 0cb2a861b5..2273928406 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_PATMOS-x.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_patmos_x.ncl @@ -27,12 +27,13 @@ ; 20190208-A_righ_ma: written. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) - DIAG_SCRIPT = "cmorize_obs_PATMOS-x.ncl" + DIAG_SCRIPT = "cmorize_obs_patmos_x.ncl" ; Source name OBSNAME = "PATMOS-x" @@ -57,8 +58,7 @@ begin FREQ = (/"mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/cmip5/Tables/CMIP5_" + MIP + CMOR_TABLE = getenv("cmor_tables") + "/cmip5/Tables/CMIP5_" + MIP ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_UWisc.ncl b/esmvaltool/cmorizers/obs/cmorize_obs_uwisc.ncl similarity index 94% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_UWisc.ncl rename to esmvaltool/cmorizers/obs/cmorize_obs_uwisc.ncl index f392273fcd..fedc0751ea 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_UWisc.ncl +++ b/esmvaltool/cmorizers/obs/cmorize_obs_uwisc.ncl @@ -19,7 +19,8 @@ ; 20190208-A_righ_ma: adapted to v2. ; ; ############################################################################# -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/interface.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/interface.ncl") begin ; Script name (for logger) @@ -51,8 +52,7 @@ begin FREQ = (/"mon", "mon"/) ; CMOR table - CMOR_TABLE = getenv("esmvaltool_root") + \ - "/cmor/tables/custom/CMOR_" + VAR + ".dat" + CMOR_TABLE = getenv("cmor_tables") + "/custom/CMOR_" + VAR + ".dat" ; Type TYPE = "sat" diff --git a/esmvaltool/utils/cmorizers/obs/cmorize_obs_WOA.py b/esmvaltool/cmorizers/obs/cmorize_obs_woa.py similarity index 78% rename from esmvaltool/utils/cmorizers/obs/cmorize_obs_WOA.py rename to esmvaltool/cmorizers/obs/cmorize_obs_woa.py index e06053b05f..51377ea42b 100644 --- a/esmvaltool/utils/cmorizers/obs/cmorize_obs_WOA.py +++ b/esmvaltool/cmorizers/obs/cmorize_obs_woa.py @@ -1,4 +1,3 @@ -# pylint: disable=invalid-name """ESMValTool CMORizer for WOA data. Tier @@ -32,14 +31,10 @@ import iris from .utilities import (constant_metadata, convert_timeunits, fix_coords, - fix_var_metadata, read_cmor_config, save_variable, - set_global_atts) + fix_var_metadata, save_variable, set_global_atts) logger = logging.getLogger(__name__) -# read in CMOR configuration -CFG = read_cmor_config('WOA.yml') - def _fix_data(cube, var): """Specific data fixes for different variables.""" @@ -72,20 +67,14 @@ def extract_variable(var_info, raw_info, out_dir, attrs, year): cube, var, out_dir, attrs, unlimited_dimensions=['time']) -def cmorization(in_dir, out_dir): +def cmorization(in_dir, out_dir, cfg): """Cmorization func call.""" - cmor_table = CFG['cmor_table'] - glob_attrs = CFG['attributes'] - - logger.info("Starting cmorization for Tier%s OBS files: %s", - glob_attrs['tier'], glob_attrs['dataset_id']) - logger.info("Input data from: %s", in_dir) - logger.info("Output will be written to: %s", out_dir) + cmor_table = cfg['cmor_table'] + glob_attrs = cfg['attributes'] # run the cmorization - for var, vals in CFG['variables'].items(): - yr = None - for yr in CFG['custom']['years']: + for var, vals in cfg['variables'].items(): + for yr in cfg['custom']['years']: file_suffix = str(yr)[-2:] + '_' + str(yr + 1)[-2:] + '.nc' inpfile = os.path.join(in_dir, vals['file'] + file_suffix) logger.info("CMORizing var %s from file %s", var, inpfile) diff --git a/esmvaltool/utils/cmorizers/obs/interface.ncl b/esmvaltool/cmorizers/obs/interface.ncl similarity index 81% rename from esmvaltool/utils/cmorizers/obs/interface.ncl rename to esmvaltool/cmorizers/obs/interface.ncl index 16bcabb790..f288a8b54d 100644 --- a/esmvaltool/utils/cmorizers/obs/interface.ncl +++ b/esmvaltool/cmorizers/obs/interface.ncl @@ -11,10 +11,12 @@ loadscript("$settings") ; Load logging functions -loadscript(getenv("esmvaltool_root") + "/interface_scripts/logging.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/interface_scripts/logging.ncl") ; Load utility functions -loadscript(getenv("esmvaltool_root") + "/utils/cmorizers/obs/utilities.ncl") +loadscript(getenv("esmvaltool_root") + \ + "/esmvaltool/cmorizers/obs/utilities.ncl") ; Check trailing slash if (str_get_cols(input_dir_path, -1, -1).ne."/") then diff --git a/esmvaltool/utils/cmorizers/obs/utilities.ncl b/esmvaltool/cmorizers/obs/utilities.ncl similarity index 97% rename from esmvaltool/utils/cmorizers/obs/utilities.ncl rename to esmvaltool/cmorizers/obs/utilities.ncl index 09690b96ac..0da3c0dea8 100644 --- a/esmvaltool/utils/cmorizers/obs/utilities.ncl +++ b/esmvaltool/cmorizers/obs/utilities.ncl @@ -54,7 +54,7 @@ local funcname, scriptname, yy, mm, out begin funcname = "create_timec" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" out = new(12 * (y2 - y1 + 1), double) do yy = y1, y2 @@ -97,7 +97,7 @@ local funcname, scriptname, ctime, ntime, year1, month1, day1, year2, month2, \ begin funcname = "format_time" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Check supported frequency if (all(frequency.ne.(/"3hr", "6hr", "day", "mon", "yr"/))) then @@ -330,7 +330,7 @@ local funcname, scriptname, rank, cplev, newplev begin funcname = "format_plev" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Set rank rank = dimsizes(dimsizes(var)) @@ -392,7 +392,7 @@ local funcname, scriptname, rank, clev, newlev begin funcname = "format_lev" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Set rank rank = dimsizes(dimsizes(var)) @@ -455,7 +455,7 @@ local funcname, scriptname, rank, dims, dpos, lcheck, clat, newlat begin funcname = "format_lat" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Set rank rank = dimsizes(dimsizes(var)) @@ -537,7 +537,7 @@ local funcname, scriptname, clon, newlon begin funcname = "format_lon" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Check monotonicity if (isMonotonic(var&lon) .eq. 0) then @@ -597,7 +597,7 @@ procedure format_coords(var:numeric, begin funcname = "format_coords" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Get variable dimensions dnames = getvardims(var) @@ -668,7 +668,7 @@ local funcname, scriptname, data, idxu, idxd, attn, attv, out begin funcname = "read_cmor" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Read attributes from cmor table if (.not.fileexists(table)) then @@ -756,7 +756,7 @@ local funcname, scriptname, coordattr, out, tmp, att, ii begin funcname = "var_attrib" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Set fill value first if(isatt(var, "_FillValue")) then @@ -822,7 +822,7 @@ local funcname, scriptname, date, year, month, day, opt, units, tyear, tmonth begin funcname = "guess_bounds_time" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; This function assumes that units of days are used if (.not.isStrSubset(coord@units, "days since")) then @@ -928,7 +928,7 @@ local funcname, scriptname, size, top begin funcname = "guess_bounds_lev" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" bounds = new((/dimsizes(coord), 2/), double) bounds!0 = "lev" @@ -979,7 +979,7 @@ local funcname, scriptname begin funcname = "guess_bounds_lat" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" bounds = new((/dimsizes(coord), 2/), double) bounds!0 = "lat" @@ -1025,7 +1025,7 @@ local funcname, scriptname begin funcname = "guess_bounds_lon" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" bounds = new((/dimsizes(coord), 2/), double) bounds!0 = "lon" @@ -1053,7 +1053,7 @@ local funcname, scriptname, time_bnds, plev_bnds, lev_bnds, lat_bnds, lon_bnds begin funcname = "guess_coord_bounds" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Check supported frequency if (all(frequency.ne.(/"3hr", "6hr", "day", "mon", "yr", "fx"/))) then @@ -1138,7 +1138,7 @@ local funcname, scriptname, begin funcname = "set_global_atts" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" global = True global@title = obsname + " data reformatted for the ESMValTool v2.0" @@ -1190,7 +1190,7 @@ local funcname, scriptname, w, gAtt, dim_names, ndims, dim_sizes, dim_types, \ begin funcname = "write_nc" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Open file if (fileexists(outfile)) then @@ -1284,7 +1284,7 @@ local funcname, scriptname, w, coords, cc, jj, locname, locvar, cname begin funcname = "write_nc_profile" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Open file if (fileexists(outfile)) then @@ -1364,7 +1364,7 @@ local funcname, scriptname, minsize, maxsize, nbins, bin, out begin funcname = "set_size_array" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; Size range (0.5 nm - 10 um) minsize = 0.5e-9 @@ -1429,7 +1429,7 @@ local timec, datec, vID, fID, bn, en, head, hh, cline, syear, smonth, sday, \ begin funcname = "process_EBAS_data" - scriptname = "esmvaltool/utils/cmorizers/obs/utilities.ncl" + scriptname = "esmvaltool/cmorizers/obs/utilities.ncl" ; EBAS flags for valid measurements ; (see http://www.nilu.no/projects/ccc/flags/index.html) diff --git a/esmvaltool/utils/cmorizers/obs/utilities.py b/esmvaltool/cmorizers/obs/utilities.py similarity index 96% rename from esmvaltool/utils/cmorizers/obs/utilities.py rename to esmvaltool/cmorizers/obs/utilities.py index 76f822c2b3..4e9da101c3 100644 --- a/esmvaltool/utils/cmorizers/obs/utilities.py +++ b/esmvaltool/cmorizers/obs/utilities.py @@ -10,9 +10,9 @@ from cf_units import Unit from dask import array as da +from esmvalcore._config import get_tag_value +from esmvalcore.cmor.table import CMOR_TABLES from esmvaltool import __version__ as version -from esmvaltool._config import get_tag_value -from esmvaltool.cmor.table import CMOR_TABLES logger = logging.getLogger(__name__) @@ -123,15 +123,15 @@ def flip_dim_coord(cube, coord_name): cube.data = da.flip(cube.core_data(), axis=coord_idx) -def read_cmor_config(cmor_config): +def read_cmor_config(dataset): """Read the associated dataset-specific config file.""" reg_path = os.path.join( - os.path.dirname(__file__), 'cmor_config', cmor_config) + os.path.dirname(__file__), 'cmor_config', dataset + '.yml') with open(reg_path, 'r') as file: cfg = yaml.safe_load(file) cfg['cmor_table'] = \ CMOR_TABLES[cfg['attributes']['project_id']] - if 'comment' not in cfg.keys(): + if 'comment' not in cfg: cfg['attributes']['comment'] = '' return cfg @@ -191,9 +191,9 @@ def set_global_atts(cube, attrs): 'comment': attrs.pop('comment'), 'user': - os.environ["USER"], + os.environ.get("USER", "unknown user"), 'host': - os.environ["HOSTNAME"], + os.environ.get("HOSTNAME", "unknown host"), 'history': f'Created on {now_time}', 'project_id': diff --git a/esmvaltool/config-developer.yml b/esmvaltool/config-developer.yml deleted file mode 100644 index 06433da1bf..0000000000 --- a/esmvaltool/config-developer.yml +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# Developer's configuration file for the ESMValTool -############################################################################### -# This file retains the project- and machine-dependent directory and file name -# definitions of the input and output data -# Each dictionary is structured as follows -# -# PROJECT: -# input_dir: -# default: -# drs1: -# drs2: -# etc: -# input_file: -# output_file: -# -# Only the default drs is mandatory, the others are optional -############################################################################### ---- - -CMIP6: - input_dir: - default: '/' - BADC: '[institute]/[dataset]/[exp]/[ensemble]/[mip]/[short_name]/[grid]/[latestversion]' - DKRZ: '[institute]/[dataset]/[exp]/[ensemble]/[mip]/[short_name]/[grid]/[latestversion]' - ETHZ: '[exp]/[mip]/[short_name]/[dataset]/[ensemble]/[grid]/' - input_file: '[short_name]_[mip]_[dataset]_[exp]_[ensemble]_[grid]_*.nc' - output_file: '[project]_[dataset]_[mip]_[exp]_[ensemble]_[short_name]_[start_year]-[end_year]' - cmor_type: 'CMIP6' - institutes: - 'ACCESS-CM2': ['CSIRO-ARCCSS-BoM'] - 'ACCESS-ESM1-5': ['CSIRO'] - 'ARTS-2-3': ['UHH'] - 'AWI-CM-1-1-HR': ['AWI'] - 'AWI-CM-1-1-LR': ['AWI'] - 'AWI-CM-1-1-MR': ['AWI'] - 'AWI-ESM-1-1-LR': ['AWI'] - 'BCC-CSM2-HR': ['BCC'] - 'BCC-CSM2-MR': ['BCC'] - 'BCC-ESM1': ['BCC'] - 'BESM-2-7': ['INPE'] - 'BNU-ESM-1-1': ['BNU'] - 'CAMS-CSM1-0': ['CAMS'] - 'CanESM5': ['CCCma'] - 'CAS-ESM1-0': ['CAS'] - 'CESM2': ['NCAR'] - 'CESM2-SE': ['NCAR'] - 'CESM2-WACCM': ['NCAR'] - 'CIESM': ['THU'] - 'CMCC-CM2-HR4': ['CMCC'] - 'CMCC-CM2-HR5': ['CMCC'] - 'CMCC-CM2-SR5': ['CMCC'] - 'CMCC-CM2-VHR4': ['CMCC'] - 'CMCC-ESM2-HR5': ['CMCC'] - 'CMCC-ESM2-SR5': ['CMCC'] - 'CNRM-CM6-1': ['CNRM-CERFACS'] - 'CNRM-CM6-1-HR': ['CNRM-CERFACS'] - 'CNRM-ESM2-1': ['CNRM-CERFACS'] - 'CNRM-ESM2-1-HR': ['CNRM-CERFACS'] - 'CSIRO-Mk3L-1-3': ['UTAS'] - 'E3SM-1-0': ['E3SM-Project'] - 'EC-Earth3-AerChem': ['EC-Earth-Consortium'] - 'EC-Earth3-CC': ['EC-Earth-Consortium'] - 'EC-Earth3': ['EC-Earth-Consortium'] - 'EC-Earth3-GrIS': ['EC-Earth-Consortium'] - 'EC-Earth3-HR': ['EC-Earth-Consortium'] - 'EC-Earth3-LR': ['EC-Earth-Consortium'] - 'EC-Earth3P': ['EC-Earth-Consortium'] - 'EC-Earth3P-HR': ['EC-Earth-Consortium'] - 'EC-Earth3P-VHR': ['EC-Earth-Consortium'] - 'EC-Earth3-Veg': ['EC-Earth-Consortium'] - 'EC-Earth3-Veg-LR': ['EC-Earth-Consortium'] - 'ECMWF-IFS-HR': ['ECMWF'] - 'ECMWF-IFS-LR': ['ECMWF'] - 'ECMWF-IFS-MR': ['ECMWF'] - 'EMAC-2-53-AerChem': ['MESSy-Consortium'] - 'EMAC-2-53-Vol': ['MESSy-Consortium'] - 'FGOALS-f3-H': ['CAS'] - 'FGOALS-f3-L': ['CAS'] - 'FGOALS-g3': ['CAS'] - 'FIO-ESM-2-0': ['FIO-QLNM'] - 'GFDL-AM4': ['NOAA-GFDL'] - 'GFDL-CM4C192': ['NOAA-GFDL'] - 'GFDL-CM4': ['NOAA-GFDL'] - 'GFDL-ESM2M': ['NOAA-GFDL'] - 'GFDL-ESM4': ['NOAA-GFDL'] - 'GFDL-OM4p5B': ['NOAA-GFDL'] - 'GISS-E2-1-G': ['NASA-GISS'] - 'GISS-E2-1-H': ['NASA-GISS'] - 'GISS-E2-1-MA-G': ['NASA-GISS'] - 'GISS-E3-G': ['NASA-GISS'] - 'HadGEM3-GC31-HH': ['MOHC', 'NERC'] - 'HadGEM3-GC31-HM': ['MOHC', 'NERC'] - 'HadGEM3-GC31-LL': ['MOHC'] - 'HadGEM3-GC31-LM': ['MOHC'] - 'HadGEM3-GC31-MH': ['MOHC'] - 'HadGEM3-GC31-MM': ['MOHC'] - 'ICON-ESM-LR': ['MPI-M'] - 'IITM-ESM': ['CCCR-IITM'] - 'INM-CM4-8': ['INM'] - 'INM-CM5-0': ['INM'] - 'INM-CM5-H': ['INM'] - 'IPSL-CM6A-ATM-HR': ['IPSL'] - 'IPSL-CM6A-LR': ['IPSL'] - 'KACE-1-0-G': ['NIMS-KMA'] - 'KIOST-ESM': ['KIOST'] - 'LBLRTM-12-8': ['AER'] - 'MCM-UA-1-0': ['UA'] - 'MIROC6': ['MIROC'] - 'MIROC-ES2H': ['MIROC'] - 'MIROC-ES2L': ['MIROC'] - 'MPI-ESM-1-2-HAM': ['HAMMOZ-Consortium'] - 'MPI-ESM1-2-HR': ['MPI-M', 'DWD', 'DKRZ'] - 'MPI-ESM1-2-LR': ['MPI-M', 'AWI'] - 'MRI-AGCM3-2': ['MRI'] - 'MRI-ESM2-0': ['MRI'] - 'NESM3': ['NUIST'] - 'NICAM16-7S': ['MIROC'] - 'NICAM16-8S': ['MIROC'] - 'NICAM16-9D-L78': ['MIROC'] - 'NICAM16-9S': ['MIROC'] - 'NorESM2-HH': ['NCC'] - 'NorESM2-LMEC': ['NCC'] - 'NorESM2-LME': ['NCC'] - 'NorESM2-LM': ['NCC'] - 'NorESM2-MH': ['NCC'] - 'NorESM2-MM': ['NCC'] - 'PCMDI-test-1-0': ['PCMDI'] - 'RRTMG-LW-4-91': ['AER'] - 'RRTMG-SW-4-02': ['AER'] - 'RTE-RRTMGP-181204': ['AER'] - 'SAM0-UNICON': ['SNU'] - 'TaiESM1': ['AS-RCEC'] - 'UKESM1-0-LL': ['MOHC', 'NERC', 'NIMS-KMA', 'NIWA'] - 'UKESM1-0-MMh': ['MOHC', 'NERC'] - 'UofT-CCSM4': ['UofT'] - 'VRESM-1-0': ['CSIR-CSIRO'] - - -CMIP5: - cmor_strict: true - input_dir: - default: '/' - BADC: '[institute]/[dataset]/[exp]/[frequency]/[modeling_realm]/[mip]/[ensemble]/latest/[short_name]' - CP4CDS: '[institute]/[dataset]/[exp]/[frequency]/[modeling_realm]/[mip]/[ensemble]/[short_name]/latest/' - DKRZ: '[institute]/[dataset]/[exp]/[frequency]/[modeling_realm]/[mip]/[ensemble]/[latestversion]/[short_name]' - ETHZ: '[exp]/[mip]/[short_name]/[dataset]/[ensemble]/' - SMHI: '[dataset]/[ensemble]/[exp]/[frequency]' - BSC: '[type]/[project]/[exp]/[dataset.lower]' - input_file: '[short_name]_[mip]_[dataset]_[exp]_[ensemble]_*.nc' - input_fx_dir: - default: '/' - BADC: '[institute]/[dataset]/[exp]/fx/[modeling_realm]/fx/r0i0p0/[latestversion]/[fx_var]' - CP4CDS: '[institute]/[dataset]/[exp]/fx/[modeling_realm]/fx/r0i0p0/[fx_var]/latest/' - DKRZ: '[institute]/[dataset]/[exp]/fx/[modeling_realm]/fx/r0i0p0/[latestversion]/[fx_var]' - ETHZ: '[exp]/fx/[fx_var]/[dataset]/r0i0p0' - input_fx_file: '[fx_var]_fx_[dataset]_[exp]_r0i0p0.nc' - fx_mip_change: - 'areacella': 'Amon' - 'areacello': 'Omon' - 'basin': 'Omon' - 'deptho': 'Omon' - 'mrsofc': 'Lmon' - 'orog': 'Amon' - 'rootd': 'Lmon' - 'sftgif': 'Lmon' - 'sftlf': 'Amon' - 'sftof': 'Omon' - 'volcello': 'Omon' - output_file: '[project]_[dataset]_[mip]_[exp]_[ensemble]_[short_name]_[start_year]-[end_year]' - institutes: - 'ACCESS1-0': ['CSIRO-BOM'] - 'ACCESS1-3': ['CSIRO-BOM'] - 'bcc-csm1-1': ['BCC'] - 'bcc-csm1-1-m': ['BCC'] - 'BNU-ESM': ['BNU'] - 'CanAM4': ['CCCma'] - 'CanCM4': ['CCCma'] - 'CanESM2': ['CCCma'] - 'CCSM4': ['NCAR'] - 'CESM1-BGC': ['NSF-DOE-NCAR'] - 'CESM1-CAM5': ['NSF-DOE-NCAR'] - 'CESM1-CAM5-1-FV2': ['NSF-DOE-NCAR'] - 'CESM1-FASTCHEM': ['NSF-DOE-NCAR'] - 'CESM1-WACCM': ['NSF-DOE-NCAR'] - 'CFSv2-2011': ['COLA-CFS', 'NOAA-NCEP'] - 'CMCC-CESM': ['CMCC'] - 'CMCC-CM': ['CMCC'] - 'CMCC-CMS': ['CMCC'] - 'CNRM-CM5': ['CNRM-CERFACS'] - 'CNRM-CM5-2': ['CNRM-CERFACS'] - 'CSIRO-Mk3-6-0': ['CSIRO-QCCCE'] - 'EC-EARTH': ['ICHEC'] - 'FGOALS-g2': ['LASG-CESS'] - 'FGOALS-gl': ['LASG-IAP'] - 'FGOALS-s2': ['LASG-IAP'] - 'FIO-ESM': ['FIO'] - 'fio-esm': ['FIO'] - 'GEOS-5': ['NASA-GMAO'] - 'GFDL-CM2p1': ['NOAA-GFDL'] - 'GFDL-CM3': ['NOAA-GFDL'] - 'GFDL-ESM2G': ['NOAA-GFDL'] - 'GFDL-ESM2M': ['NOAA-GFDL'] - 'GFDL-HIRAM-C180': ['NOAA-GFDL'] - 'GFDL-HIRAM-C360': ['NOAA-GFDL'] - 'GISS-E2-H': ['NASA-GISS'] - 'GISS-E2-H-CC': ['NASA-GISS'] - 'GISS-E2-R': ['NASA-GISS'] - 'GISS-E2-R-CC': ['NASA-GISS'] - 'HadCM3': ['MOHC'] - 'HadGEM2-A': ['MOHC'] - 'HadGEM2-AO': ['NIMR-KMA'] - 'HadGEM2-CC': ['MOHC'] - 'HadGEM2-ES': ['INPE', 'MOHC'] - 'inmcm4': ['INM'] - 'IPSL-CM5A-LR': ['IPSL'] - 'IPSL-CM5A-MR': ['IPSL'] - 'IPSL-CM5B-LR': ['IPSL'] - 'MIROC-ESM': ['MIROC'] - 'MIROC-ESM-CHEM': ['MIROC'] - 'MIROC4h': ['MIROC'] - 'MIROC5': ['MIROC'] - 'MPI-ESM-LR': ['MPI-M'] - 'MPI-ESM-MR': ['MPI-M'] - 'MPI-ESM-P': ['MPI-M'] - 'MRI-AGCM3-2H': ['MRI'] - 'MRI-AGCM3-2S': ['MRI'] - 'MRI-CGCM3': ['MRI'] - 'MRI-ESM1': ['MRI'] - 'NICAM-09': ['NICAM'] - 'NorESM1-M': ['NCC'] - 'NorESM1-ME': ['NCC'] - -OBS: - cmor_strict: false - input_dir: - default: 'Tier[tier]/[dataset]' - BSC: '[type]/[institute.lower]/[dataset.lower]/[freq_folder]/[short_name][freq_base]' - input_file: - default: '[project]_[dataset]_[type]_[version]_[mip]_[short_name]_*.nc' - BSC: '[short_name]_*.nc' - input_fx_dir: - default: 'Tier[tier]/[dataset]' - input_fx_file: - default: '[project]_[dataset]_[type]_[version]_fx_[fx_var].nc' - output_file: '[project]_[dataset]_[type]_[version]_[mip]_[short_name]_[start_year]-[end_year]' - cmor_type: 'CMIP5' - -obs4mips: - cmor_strict: false - input_dir: - default: 'Tier[tier]/[dataset]' - input_file: '[short_name]_[dataset]_[level]_[version]_*.nc' - input_fx_dir: - default: 'Tier[tier]/[dataset]' - input_fx_file: - default: '[project]_[dataset]_fx_[fx_var].nc' - output_file: '[project]_[dataset]_[level]_[version]_[short_name]_[start_year]-[end_year]' - cmor_type: 'CMIP6' - cmor_path: 'obs4mips' - -ana4mips: - cmor_strict: false - input_dir: - default: 'Tier[tier]/[dataset]' - input_file: '[short_name]_[mip]_[type]_[dataset]_*.nc' - output_file: '[project]_[mip]_[type]_[dataset]_[short_name]_[start_year]-[end_year]' - cmor_type: 'CMIP5' - -EMAC: - input_dir: - default: '[dataset]' - input_file: '' - output_file: '[dataset]_[ensemble]_[short_name]_[start_year]-[end_year]' - cmor_type: 'CMIP5' diff --git a/esmvaltool/config-logging.yml b/esmvaltool/config-logging.yml deleted file mode 100644 index b78b308ed8..0000000000 --- a/esmvaltool/config-logging.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Logger configuration ---- - -version: 1 -disable_existing_loggers: false -formatters: - console: - format: '%(asctime)s UTC [%(process)d] %(levelname)-7s %(message)s' - brief: - format: '%(levelname)-7s [%(process)d] %(message)s' - debug: - format: '%(asctime)s UTC [%(process)d] %(levelname)-7s %(name)s:%(lineno)s %(message)s' -handlers: - console: - class: logging.StreamHandler - level: INFO - formatter: console - stream: ext://sys.stdout - simple_log_file: - class: logging.FileHandler - level: INFO - formatter: brief - filename: main_log.txt - mode: w - debug_log_file: - class: logging.FileHandler - level: DEBUG - formatter: debug - filename: main_log_debug.txt - mode: w -root: - level: DEBUG - handlers: [console, simple_log_file, debug_log_file] diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml index 3895298b84..233de29049 100644 --- a/esmvaltool/config-references.yml +++ b/esmvaltool/config-references.yml @@ -146,7 +146,7 @@ authors: gier_be: name: Gier, Bettina institute: University of Bremen, Germany - email: bettina.gier 'at' dlr.de + email: gier 'at' uni-bremen.de gott_kl: name: Gottschaldt, Klaus-Dirk institute: DLR, Germany @@ -351,6 +351,10 @@ authors: name: Wang, Shiyu institute: SMHI, Sweden email: shiyu.wang 'at' smhi.se + weig_ka: + name: Weigel, Katja + institute: University of Bremen and DLR, Germany + email: weigel 'at' iup.physik.uni-bremen.de wenz_sa: name: Wenzel, Sabrina institute: DLR, Germany @@ -546,6 +550,7 @@ references: cox18nature: "Cox, P. M. et al., Nature, 553, 319-322, doi:10.1038/nature25450, 2018." davini12jclim: "Davini P., C. Cagnazzo, S. Gualdi, and A. Navarra. J. Climate, 25, 6496-6509, doi: 10.1175/JCLI-D-12-00032.1, 2012" davini18: "Davini, P. MiLES - Mid Latitude Evaluation System. Zenodo. doi:10.5281/zenodo.1237837, 2018" + deangelis15nat: "DeAngelis, A. M. et al., Nature, 528(7581), 249-253, doi:10.1038/nature15770, 2015." demora2018gmd: "de Mora et al., Geosci. Model Dev., 11, 4215-4240, doi:10.5194/gmd-11-4215-2018, 2018." dong08grl: "Dong, S. et al., J. Geophys. Res., 113, C06013, doi:10.1029/2006JC004051, 2008." donofrio14jh: "D'Onofrio et al., J of Hydrometeorology 15, 830-843, 2014." @@ -574,6 +579,7 @@ references: lembo16climdyn: "Lembo et al., Clim. Dyn., 48, 1793-1812, doi:10.1007/s00382-016-3173-9" lembo19gmdd: "Lembo et al., Geosci. Model Dev. Discuss., doi:10.5194/gmd-2019-37, 2019" li14jclim: "Li and Xie, J. Climate, 27, 1765-1780, doi:10.1175/JCLI-D-13-00337.1, 2014." + li17natcc: "Li, G., S.-P. Xie, C. He, and Z. Chen, Nat Clim Change, 7, 708, doi:10.1038/nclimate3387, 2017." lin08jclim: "Lin, J-L. et al., J. Climate, 21, 4541-4567, doi: 10.1175/2008JCLI1816.1, 2008." lloyd-hughes02jclim: "Lloyd-Hughes, B. and Saunders, M. A., Int. J. Climatol., 22, 1571-1592, doi:10.1002/joc.846, 2002." locarini10usgov: "Locarnini, R. A. et al., World Ocean Atlas 2009, Volume 1: Temperature. S. Levitus, Ed. NOAA Atlas NESDIS 68, U.S. Government Printing Office, Washington, D.C., 184 pp.,2010." @@ -639,6 +645,7 @@ projects: dlrveu2: DLR project VEU2 embrace: EU FP7 project EMBRACE esmval: DLR project ESMVal + eval4cmip: DLR and University of Bremen project funded by the Initiative and Networking Fund of the Helmholtz Society qa4ecv: QA4ECV trr181: DFG Project TRR-181 ukesm: UKESM, UK Earth System Model project (NERC) diff --git a/esmvaltool/config-user.yml b/esmvaltool/config-user.yml deleted file mode 100644 index 55968d5ce2..0000000000 --- a/esmvaltool/config-user.yml +++ /dev/null @@ -1,49 +0,0 @@ -############################################################################### -# User's configuration file for the ESMValTool -############################################################################### ---- - -# Diagnostics create plots? [true]/false -write_plots: true -# Diagnositcs write NetCDF files? [true]/false -write_netcdf: true -# Set the console log level debug, [info], warning, error -log_level: info -# verbosity is deprecated and will be removed in the future -# verbosity: 1 -# Exit on warning? true/[false] -exit_on_warning: false -# Plot file format? [ps]/pdf/png/eps/epsi -output_file_type: pdf -# Destination directory -output_dir: ./esmvaltool_output -# Auxiliary data directory (used for some additional datasets) -auxiliary_data_dir: ./auxiliary_data -# Use netCDF compression true/[false] -compress_netcdf: false -# Save intermediary cubes in the preprocessor true/[false] -save_intermediary_cubes: false -# Remove the preproc dir if all fine -remove_preproc_dir: true -# Run at most this many tasks in parallel null/[1]/2/3/4/.. -# Set to null to use the number of available CPUs. -# Make sure your system has enough memory for the specified number of tasks. -max_parallel_tasks: 1 -# Path to custom config-developer file, to customise project configurations. -# See config-developer.yml for an example. Set to None to use the default -config_developer_file: null -# Get profiling information for diagnostics -# Only available for Python diagnostics -profile_diagnostic: false - -# Rootpaths to the data from different projects (lists are also possible) -rootpath: - CMIP5: [~/cmip5_inputpath1, ~/cmip5_inputpath2] - OBS: ~/obs_inputpath - RAWOBS: ~/rawobs_inputpath - default: ~/default_inputpath - -# Directory structure for input data: [default]/BADC/DKRZ/ETHZ/etc -# See config-developer.yml for definitions. -drs: - CMIP5: default diff --git a/esmvaltool/diag_scripts/autoassess/land_surface_snow/snow.py b/esmvaltool/diag_scripts/autoassess/land_surface_snow/snow.py index 6d2c4f52bf..66cacb8ba6 100644 --- a/esmvaltool/diag_scripts/autoassess/land_surface_snow/snow.py +++ b/esmvaltool/diag_scripts/autoassess/land_surface_snow/snow.py @@ -4,7 +4,7 @@ import numpy as np import iris -from esmvaltool.preprocessor._regrid import regrid +from esmvalcore.preprocessor import regrid from esmvaltool.diag_scripts.shared._supermeans import get_supermean diff --git a/esmvaltool/diag_scripts/autoassess/land_surface_soilmoisture/soilmoisture.py b/esmvaltool/diag_scripts/autoassess/land_surface_soilmoisture/soilmoisture.py index be08fa9f50..2f6180c26c 100644 --- a/esmvaltool/diag_scripts/autoassess/land_surface_soilmoisture/soilmoisture.py +++ b/esmvaltool/diag_scripts/autoassess/land_surface_soilmoisture/soilmoisture.py @@ -4,7 +4,7 @@ import logging import numpy as np import iris -from esmvaltool.preprocessor._regrid import regrid +from esmvalcore.preprocessor._regrid import regrid from esmvaltool.diag_scripts.shared._supermeans import get_supermean diff --git a/esmvaltool/diag_scripts/autoassess/land_surface_surfrad/surfrad.py b/esmvaltool/diag_scripts/autoassess/land_surface_surfrad/surfrad.py index 717326450d..72989aa3f1 100644 --- a/esmvaltool/diag_scripts/autoassess/land_surface_surfrad/surfrad.py +++ b/esmvaltool/diag_scripts/autoassess/land_surface_surfrad/surfrad.py @@ -6,7 +6,7 @@ import iris -from esmvaltool.preprocessor._regrid import regrid +from esmvalcore.preprocessor._regrid import regrid from esmvaltool.diag_scripts.shared._supermeans import get_supermean diff --git a/esmvaltool/diag_scripts/clouds/clouds_taylor.ncl b/esmvaltool/diag_scripts/clouds/clouds_taylor.ncl index fd1c6777f9..12600d76ac 100644 --- a/esmvaltool/diag_scripts/clouds/clouds_taylor.ncl +++ b/esmvaltool/diag_scripts/clouds/clouds_taylor.ncl @@ -90,7 +90,7 @@ load "$diag_scripts/../interface_scripts/interface.ncl" load "$diag_scripts/shared/plot/aux_plotting.ncl" load "$diag_scripts/shared/statistics.ncl" load "$diag_scripts/shared/plot/style.ncl" -load "$diag_scripts/shared/plot/taylor_diagram_less_hardcoded.ncl" +load "$diag_scripts/shared/plot/taylor_plot.ncl" begin diff --git a/esmvaltool/diag_scripts/cvdp/cvdp_wrapper.py b/esmvaltool/diag_scripts/cvdp/cvdp_wrapper.py index b09c6859d1..82f4190127 100644 --- a/esmvaltool/diag_scripts/cvdp/cvdp_wrapper.py +++ b/esmvaltool/diag_scripts/cvdp/cvdp_wrapper.py @@ -5,7 +5,7 @@ import shutil import subprocess -from esmvaltool._task import DiagnosticError +from esmvalcore._task import DiagnosticError from esmvaltool.diag_scripts.shared import (group_metadata, run_diagnostic, select_metadata) from esmvaltool.diag_scripts.shared import ProvenanceLogger diff --git a/esmvaltool/diag_scripts/examples/my_little_diagnostic.py b/esmvaltool/diag_scripts/examples/my_little_diagnostic.py index 9fdbf372c5..d16edc5d85 100644 --- a/esmvaltool/diag_scripts/examples/my_little_diagnostic.py +++ b/esmvaltool/diag_scripts/examples/my_little_diagnostic.py @@ -6,7 +6,7 @@ Module for personal diagnostics (example). Internal imports from exmvaltool work e.g.: -from esmvaltool.preprocessor import regrid +from esmvalcore.preprocessor import regrid from esmvaltool.diag_scripts.shared.supermeans import get_supermean Pipe output through logger; @@ -24,7 +24,7 @@ # import internal esmvaltool modules here from esmvaltool.diag_scripts.shared import group_metadata, run_diagnostic -from esmvaltool.preprocessor import average_region +from esmvalcore.preprocessor import area_statistics def _plot_time_series(cfg, cube, dataset): @@ -77,7 +77,7 @@ def run_my_diagnostic(cfg): Before plotting, we grab the squared result (not all operations on cubes) and apply an area average on it. This is a useful example of how to use - standard esmvaltool-preprocessor functionality within a diagnostic, and + standard esmvalcore.preprocessor functionality within a diagnostic, and especially after a certain (custom) diagnostic has been run and the user needs to perform an operation that is already part of the preprocessor standard library of functions. @@ -118,7 +118,7 @@ def run_my_diagnostic(cfg): # compute an area average over the squared cube # to apply the area average use a preprocessor function # rather than writing your own function - area_avg_cube = average_region(squared_cube, 'latitude', 'longitude') + area_avg_cube = area_statistics(squared_cube, 'mean') # finalize your analysis by plotting a time series of the # diffed, squared and area averaged cube; call the plot function: diff --git a/esmvaltool/diag_scripts/magic_bsc/capacity_factor.r b/esmvaltool/diag_scripts/magic_bsc/capacity_factor.r index ee213e3413..e2bca29bf2 100644 --- a/esmvaltool/diag_scripts/magic_bsc/capacity_factor.r +++ b/esmvaltool/diag_scripts/magic_bsc/capacity_factor.r @@ -1,6 +1,3 @@ - -Sys.setenv(TAR = "/bin/tar") # nolint - library(abind) library(climdex.pcic) library(ggplot2) @@ -16,9 +13,8 @@ params <- read_yaml(args[1]) print(args) initial.options <- commandArgs(trailingOnly = FALSE) file_arg_name <- "--file=" -script_name <- sub( - file_arg_name, "", initial.options[grep(file_arg_name, initial.options)] -) +script_name <- sub(file_arg_name, "", + initial.options[grep(file_arg_name, initial.options)]) script_dirname <- dirname(script_name) source(file.path(script_dirname, "PC.r")) @@ -63,44 +59,41 @@ units <- ncatt_get(data_nc, var0, "units")$value calendar <- ncatt_get(data_nc, "time", "calendar")$value long_names <- ncatt_get(data_nc, var0, "long_name")$value time <- ncvar_get(data_nc, "time") -start_date <- as.POSIXct( - substr(ncatt_get(data_nc, "time", "units")$value, 11, 29 ) -) +start_date <- as.POSIXct(substr(ncatt_get(data_nc, "time", + "units")$value, 11, 29)) nc_close(data_nc) time <- as.Date(time, origin = start_date, calendar = calendar) time <- as.POSIXct(time, format = "%Y-%m-%d") -print(calendar) -print(str(data)) time_dim <- which(names(dim(data)) == "time") time <- as.PCICt(time, cal = calendar) time <- as.character(time) jdays <- as.numeric(strftime(time, format = "%j")) if (calendar == "gregorian" | calendar == "standard" | calendar == "proleptic_gregorian") { - year <- as.numeric(strftime(time, format = "%Y")) - pos <- ( (year / 100) %% 1 == 0) + ( (year / 4) %% 1 == 0) - + ( (year / 400) %% 1 == 0) + year <- as.numeric(strftime(time, format = "%Y")) + pos <- ( (year / 100) %% 1 == 0) + ( (year / 4) %% 1 == 0) + + ( (year / 400) %% 1 == 0) pos <- which(pos == 1) bisiesto <- which(jdays == 60) - if ( length(intersect(pos, bisiesto)) > 0) { - time <- time[-intersect(pos, bisiesto)] - data <- apply(data, c(1 : length(dim(data)))[-time_dim], - function(x) { - x[-intersect(pos, bisiesto)] - }) - data <- aperm(data, c(2, 3, 1)) - names(dim(data)) <- c("lon", "lat", "time") - } + if (length(intersect(pos, bisiesto)) > 0) { + time <- time[-intersect(pos, bisiesto)] + data <- apply(data, c(1 : length(dim(data)))[-time_dim], + function(x) { + x[-intersect(pos, bisiesto)] + }) + data <- aperm(data, c(2, 3, 1)) + names(dim(data)) <- c("lon", "lat", "time") + } } dims <- dim(data) -dims <- append( - dims[-time_dim], c(no_of_years, dims[time_dim] / no_of_years), after = 2 -) +dims <- append(dims[-time_dim], c(no_of_years, dims[time_dim] / + no_of_years), after = 2) dim(data) <- dims - +# Convert to 100 m wind: +data <- data * 1.39 data <- aperm(data, c(3, 4, 2, 1)) names(dim(data)) <- c("year", "day", "lat", "lon") ##################################### @@ -111,7 +104,6 @@ names(dim(data)) <- c("year", "day", "lat", "lon") # Load PC to use and compute CF for 6h values #--------------------------- seas_data <- Mean1Dim(data, 2) -print(power_curves[1]) pc1 <- read_pc(file.path(script_dirname, power_curves[1])) pc2 <- read_pc(file.path(script_dirname, power_curves[2])) pc3 <- read_pc(file.path(script_dirname, power_curves[3])) @@ -153,96 +145,68 @@ q <- colorRampPalette(rev(brewer.pal(11, "RdBu"))) years <- seq(start_year, end_year) turb_types <- c("IEC I", "IEC I/II", "IEC II", "IEC II/III", "IEC III") -seas_data_cf_all <- abind( - seas_data_cf1, seas_data_cf2, seas_data_cf3, seas_data_cf4, seas_data_cf5, - along = 0 -) +seas_data_cf_all <- abind(seas_data_cf1, seas_data_cf2, seas_data_cf3, + seas_data_cf4, seas_data_cf5, along = 0) mean_data_cf_all <- Mean1Dim(seas_data_cf_all, 2) anom_data_cf_all <- seas_data_cf_all - InsertDim( # nolint - Mean1Dim(seas_data_cf_all, 2), 2, dim(data)[1] # nolint -) + Mean1Dim(seas_data_cf_all, 2), 2, dim(data)[1]) # nolint pct_anom_data_cf_all <- (seas_data_cf_all / InsertDim( # nolint - Mean1Dim(seas_data_cf_all, 2), 2, dim(data)[1] # nolint -)) - 1 - + Mean1Dim(seas_data_cf_all, 2), 2, dim(data)[1])) - 1 # nolint #--------------------------- # Plot seasonal CF maps #--------------------------- -filepng <- paste0( - plot_dir, "/", "capacity_factor_", - model_names, "_", start_year, "-", end_year, ".png") -title <- paste0(seasons, " CF from ", - model_names, " (", start_year, "-", end_year, ")") +filepng <- paste0(plot_dir, "/", "capacity_factor_", model_names, "_", + start_year, "-", end_year, ".png") +title <- paste0(seasons, " CF from ", model_names, + " (", start_year, "-", end_year, ")") PW_names <- c("Enercon E70", "Gamesa G80", "Gamesa G87", - "Vestas V100", "Vestas V110") -PlotLayout( # nolint - PlotEquiMap, # nolint - c(3, 2), - Mean1Dim(seas_data_cf_all, 2), - lon, - lat, - filled.continents = F, - toptitle = title, - titles = PW_names, - fileout = filepng) - -filencdf <- paste0(work_dir, "/", "capacity_factor_", - model_names, "_", start_year, "-", end_year, ".nc") - -dimlon <- ncdim_def( - name = "lon", - units = "degrees_east", - vals = as.vector(lon), - longname = "longitude" -) -dimlat <- ncdim_def( - name = "lat", - units = "degrees_north", - vals = as.vector(lat), - longname = "latitude" -) -dimtime <- ncdim_def( - name = "season", - units = "season", - vals = start_year : end_year, - longname = "season of the year: DJF, MAM, JJA, SON" -) -dimcurve <- ncdim_def( - name = "curve", - units = "name", - vals = 1 : 5, - longname = "Power curves of considered turbines" -) - + "Vestas V100", "Vestas V110") +PlotLayout(PlotEquiMap, # nolint + c(3, 2), Mean1Dim(seas_data_cf_all, 2), lon, lat, colNA = "white", + brks = seq(from = 0, to = max(seas_data_cf_all, na.rm = TRUE), + length.out = 10), color_fun = clim.palette("yellowred"), + filled.continents = FALSE, toptitle = title, + titles = PW_names, fileout = filepng) + +filencdf <- paste0(work_dir, "/", "capacity_factor_", model_names, "_", + start_year, "-", end_year, ".nc") +dimlon <- ncdim_def(name = "lon", units = "degrees_east", + vals = as.vector(lon), longname = "longitude") +dimlat <- ncdim_def(name = "lat", units = "degrees_north", + vals = as.vector(lat), longname = "latitude") +dimtime <- ncdim_def(name = "season", units = "season", + vals = start_year : end_year, + longname = "season of the year: DJF, MAM, JJA, SON") +dimcurve <- ncdim_def(name = "curve", units = "name", vals = 1 : 5, + longname = "Power curves of considered turbines") names(dim(seas_data_cf_all)) <- c("curve", "time", "lat", "lon") -defdata <- ncvar_def( - name = "CapacityFactor", - units = "%", - dim = list(season = dimcurve, dimtime, lat = dimlat, lon = dimlon), - longname = paste0("Capacity Factor of wind on different turbines") -) +defdata <- ncvar_def(name = "CapacityFactor", units = "%", + dim = list(season = dimcurve, dimtime, lat = dimlat, + lon = dimlon), + longname = paste("Capacity Factor of wind on", + "different turbines")) file <- nc_create(filencdf, list(defdata)) ncvar_put(file, defdata, seas_data_cf_all) nc_close(file) - # Set provenance for output files - xprov <- list(ancestors = list(fullpath_filenames, +# Set provenance for output files +xprov <- list(ancestors = list(fullpath_filenames, file.path(script_dirname, power_curves[1]), file.path(script_dirname, power_curves[2]), file.path(script_dirname, power_curves[3]), file.path(script_dirname, power_curves[4]), file.path(script_dirname, power_curves[5])), - authors = list("hunt_al", "manu_ni", "lled_ll", "caro_lo", - "bojo_dr", "gonz_nu"), - projects = list("c3s-magic"), - caption = title, - statistics = list("other"), - realms = list("atmos"), - themes = list("phys"), - plot_file = filepng) - - provenance[[filencdf]] <- xprov + authors = list("hunt_al", "pere_nu", "manu_ni", "lled_ll", + "caro_lo", "bojo_dr", "gonz_nu"), + projects = list("c3s-magic"), + caption = title, + statistics = list("other"), + realms = list("atmos"), + themes = list("phys"), + plot_file = filepng) + +provenance[[filencdf]] <- xprov # Write provenance to file write_yaml(provenance, provenance_file) diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py b/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py index 35d38b583d..f937fd738e 100644 --- a/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py +++ b/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py @@ -22,9 +22,9 @@ lat2: 30. z_min: 0. z_max: 3000. - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean + In order to add an observational dataset to the profile plot, the following arguments are needed in the diagnostic script:: diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py b/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py index 4817635a1c..ca1b0a4115 100644 --- a/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py +++ b/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py @@ -21,10 +21,9 @@ preprocessors: prep_timeseries_1:# For Global Volume Averaged - average_volume: - coord1: longitude - coord2: latitude - coordz: depth + volume_statistics: + operator: mean + An approproate preprocessor for a 3D+time field at the surface would be:: @@ -32,16 +31,16 @@ extract_levels: levels: [0., ] scheme: linear_extrap - average_area: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean + An approproate preprocessor for a 2D+time field would be:: prep_timeseries_2: # For Global surface Averaged - average_area: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean + This tool is part of the ocean diagnostic tools package in the ESMValTool. diff --git a/esmvaltool/diag_scripts/perfmetrics/cycle.ncl b/esmvaltool/diag_scripts/perfmetrics/cycle.ncl index c230660d1d..1a42c8976e 100644 --- a/esmvaltool/diag_scripts/perfmetrics/cycle.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/cycle.ncl @@ -47,9 +47,9 @@ begin ; Set path for saving processed data system("mkdir -p " + config_user_info@work_dir) if (isdefined("level")) then - vv = var0 - else vv = var0 + level + else + vv = var0 end if fname = str_join((/"perfmetrics", "cycle", vv, \ diag_script_info@time_avg, diag_script_info@region/), "_") @@ -121,9 +121,9 @@ begin if (isdefined("level")) then title = title + " " + level + " hPa" caption = caption + level + delete(level) end if title = title + " - " + diag_script_info@region - delete(level) ; Draw plot wks = gsn_open_wks(file_type, plotpath) diff --git a/esmvaltool/diag_scripts/shared/_supermeans.py b/esmvaltool/diag_scripts/shared/_supermeans.py index f09c82d26a..f82626fe3f 100644 --- a/esmvaltool/diag_scripts/shared/_supermeans.py +++ b/esmvaltool/diag_scripts/shared/_supermeans.py @@ -9,7 +9,7 @@ """ import os.path -import six + import cf_units import iris import iris.coord_categorisation @@ -20,14 +20,10 @@ class NoBoundsError(ValueError): """Return error and pass.""" - pass - class InvalidPeriod(ValueError): """Return error and pass.""" - pass - def get_supermean(name, season, data_dir, obs_flag=None): """Calculated supermeans from retrieved data, which are pickled Iris cubes. @@ -255,7 +251,7 @@ def _add_categorised_coord(cube, units of the category value, typically 'no_unit' or '1'. """ # Interpret coord, if given as a name - if isinstance(from_coord, six.string_types): + if isinstance(from_coord, str): from_coord = cube.coord(from_coord) if cube.coords(name): diff --git a/esmvaltool/diag_scripts/shared/_validation.py b/esmvaltool/diag_scripts/shared/_validation.py index 3fd4fcc2b3..7f42c759cb 100644 --- a/esmvaltool/diag_scripts/shared/_validation.py +++ b/esmvaltool/diag_scripts/shared/_validation.py @@ -2,7 +2,7 @@ import os import logging import iris -from esmvaltool.preprocessor import time_average +from esmvalcore.preprocessor import time_average from esmvaltool.diag_scripts.shared import select_metadata diff --git a/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl b/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl deleted file mode 100644 index 42326cdafd..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl +++ /dev/null @@ -1,2114 +0,0 @@ -; ############################################################################# -; GENERAL ROUTINES FOR GO PLOTTING -; ############################################################################# -; Please consider using or extending existing routines before adding new ones. -; Check the header of each routine for documentation. -; -; Contents: -; function get_title_suffix -; procedure remove_attrs -; procedure plot_two_by_one -; procedure plot_three_by_one_diff -; procedure two_by_one -; procedure three_by_one_diff -; procedure plot_three_by_one_vector -; procedure three_by_one_vector -; procedure plot_multipanel -; procedure multipanel -; procedure plot_multipanel_vector -; procedure multipanel_vector -; procedure seasonal_plot -; procedure xy_plot_wrapper -; procedure ts_line_wrapper -; -; ############################################################################# - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -; ############################################################################# - -begin - loadscript(exact_panel_position_file) -end - -; ############################################################################# - -load "$diag_scripts/aux/SAMonsoon/SAMonsoon.ncl" -load "$diag_scripts/aux/SAMonsoon/SAMonsoon_panel_positions.ncl" -load "$diag_scripts/aux/SAMonsoon/exact_panel_positions_generic.ncl" - -load "$diag_scripts/shared/plot/style.ncl" -load "$diag_scripts/shared/plot/xy_line.ncl" - -; ############################################################################# - -undef("get_title_suffix") -function get_title_suffix(plot_settings[1]:logical) -local main_title_suffix -begin - - if (isatt(plot_settings, "main_title_suffix")) then - main_title_suffix = plot_settings@main_title_suffix - else - main_title_suffix = "" - end if - return(main_title_suffix) - -end - -; ############################################################################# - -undef("remove_attrs") -procedure remove_attrs(p_settings[1]:logical, - attributes[*]:string) -local idx, settings -begin - do idx = 0, dimsizes(attributes) - 1 - if (isatt(p_settings, attributes(idx))) then - delete(p_settings@$attributes(idx)$) - end if - end do -end - -; ############################################################################# - -undef("plot_two_by_one") -procedure plot_two_by_one(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_name1[1]:string, - storage_name2[1]:string, - debuginfo[1]:logical, - storage_vault[1]:logical, - idx_mod[1]:integer) -begin - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - remove_attrs(res, (/"cnLevels"/)) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name1 + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - remove_attrs(plot_settings, (/"idx"/)) - plot_settings@idx = plot_settings@idx_ref - - ; ------------------------------------- - ; Plot model entry (first plot) - ; ------------------------------------- - main_title_prefix = "" ; input_file_info@dataset(idx_mod) - main_title_suffix = "" - res = panel_two_by_one(res, 0) ; Update resource for second plot - - storage_record = \ - str_join((/storage_name1, sprinti("%i", idx_mod)/), str_vault_sep) - upper = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - remove_attrs(plot_settings, (/"idx", "gsn_right_string"/)) - plot_settings@idx = idx_mod - plot_settings@gsn_right_string = upper@gsn_right_string - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio", "mean-corr"/), \ - valid_statistics, upper, dummy_array) - - plot_settings@skip_default_title = False - plot1 = single_contour(wks, - upper, - main_title_prefix, - main_title_suffix, - plot_settings, - debuginfo, - statistics, - res) - delete(statistics) - - ; --------------------------------------- - ; Plot model entry (second plot) - ; --------------------------------------- - main_title_prefix = "" - main_title_suffix = "" - res = panel_two_by_one(res, 1) ; Update resource for third plot - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name2 + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - storage_record = \ - str_join((/storage_name2, sprinti("%i", idx_mod)/), str_vault_sep) - lower = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio", "mean-corr"/), \ - valid_statistics, lower, dummy_array) - plot_settings@gsn_right_string = lower@gsn_right_string - plot_settings@skip_default_title = True - plot2 = single_contour(wks,\ - lower,\ - main_title_prefix,\ - main_title_suffix,\ - plot_settings,\ - debuginfo,\ - statistics,\ - res) - delete(statistics) - - txres = True - if (any(idx_mod .eq. plot_settings@idx_ref)) then - inset_top_text(wks, plot1, "Reference", txres) - inset_top_text(wks, plot2, "Reference", txres) - end if - lbtitle = plot_settings@lb_units - two_by_one_labelbar(wks, plot2, lbtitle) - - if (debuginfo) then - txres@txFuncCode = "~" - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot1) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot2) - drawNDCGrid(wks) - end if - draw(plot1) - draw(plot2) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - -end - -; ############################################################################# - -undef("plot_three_by_one_diff") -procedure plot_three_by_one_diff(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_name[1]:string, - debuginfo[1]:logical, - storage_vault[1]:logical, - ref[*][*]:numeric, - idx_mod[1]:integer) -begin - - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - ; ------------------------------------- - ; Plot reference plot (top plot) - ; ------------------------------------- - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "(1) " + di@season + "-" + storage_name + " of " - main_title_suffix = get_title_suffix(plot_settings) - plot_settings@type = "ref" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio"/), \ - valid_statistics, ref, dummy_array) - plot_ref = single_contour(wks, \ - ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - inset_top_text(wks, plot_ref, "Reference", txres) - - three_by_one_labelbar(wks, plot_ref, plot_settings) - - ; ------------------------------------- - ; Plot model entry (middle plot) - ; ------------------------------------- - main_title_prefix = "(2) " + di@season + "-" + storage_name + " of " - res = panel_three_by_one(res, 1) ; Update resource for second plot - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - curr = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio", "mean-corr"/), \ - valid_statistics, curr, dummy_array) - statistics = compute_stat((/"corr"/), valid_statistics, curr, ref) - plot = single_contour(wks, \ - curr, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - - ; --------------------------------------- - ; Plot reference model diff (bottom plot) - ; --------------------------------------- - main_title = "(2) - (1)" - main_title_suffix = "" - res = panel_three_by_one(res, 2) ; Update resource for third plot - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_diff_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - res@cnFillPalette = "BlWhRe" - - ; Plot mean of differences of first and second data set, first - ; interpolate to the reference data set grid (conservative interpolation) - diff_model_ref = get_dataset_minus_ref(curr, ref) - plot_settings@type = "diff" - plot_settings@skip_default_title = True - statistics = True - statistics = compute_stat((/"mean"/), valid_statistics, curr, dummy_array) - statistics = compute_stat((/"rmse"/), valid_statistics, curr, ref) - plot_diff = single_contour(wks, \ - diff_model_ref, \ - main_title, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - delete(diff_model_ref) - plot_settings@skip_default_title = False - - ; remove the light_centered colour palette for climatological plots (OA) - delete(res@cnFillPalette) - if (debuginfo) then - txres@txFuncCode = "~" - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_diff) - drawNDCGrid(wks) - end if - draw(plot_ref) - draw(plot_diff) - draw(plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - -end - -; ############################################################################# - -undef("two_by_one") -procedure two_by_one(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name1[1]:string, - storage_name2[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; Description: -; For each 2D-model field stored in the 'storage_vault', plot two separate -; figures. The various logicals carry switches for the plot routine behavior. -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, dummy_array, field_type0, \ - lbtitle, main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, diff_model_ref, txres -begin - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - - ; Handle the case when using two variables - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - do idx_mod = 0, dim_MOD - 1 - - ; ---------------------------------------- - ; Define output workstation - ; ---------------------------------------- - aux_title_info = di@season + "-" + storage_name1 + "-" + storage_name2 - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_two_by_one(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name1, \ - storage_name2, \ - False, \ - storage_vault, \ - idx_mod) - frame(wks) ; Workstation output - delete(wks) - - ; Debug version - if (debuginfo) then - aux_title_info = \ - di@season + "-" + storage_name1 + "-" + storage_name2 + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_two_by_one(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name1, \ - storage_name2, \ - debuginfo, \ - storage_vault, \ - idx_mod) - frame(wks_debug) ; Workstation output - delete(wks_debug) - end if - - end do ; idx_mod = 0, dim_MOD - 1 - -end - -; ############################################################################# - -undef("three_by_one_diff") -procedure three_by_one_diff(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; Description: -; For each 2D-model field stored in the 'storage_vault', plot a separate -; figure with a reference plot at the top, the model in the middle, and a -; diff at the bottom. The various logicals carry switches for the plot -; routine behavior. -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, dummy_array, field_type0, \ - lbtitle, main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, diff_model_ref, txres -begin - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - - ; Handle the case when using two variables - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - - storage_record = \ - str_join((/storage_name, sprinti("%i", plot_settings@idx_ref(0))/), \ - str_vault_sep) - ref = retrieve_from_vault(storage_vault, storage_record) - - do idx_mod = 0, dim_MOD - 1 - if (any(idx_mod .eq. plot_settings@idx_ref)) then - continue - end if - - ; ---------------------------------------- - ; Define output workstation - ; ---------------------------------------- - aux_title_info = di@season + "-" + storage_name - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_diff(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - False, \ - storage_vault, \ - ref, \ - idx_mod) - frame(wks) ; Workstation output - delete(wks) - - ; Debug version - if (debuginfo) then - aux_title_info = di@season + "-" + storage_name + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_diff(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - debuginfo, \ - storage_vault, \ - ref, \ - idx_mod) - frame(wks_debug) ; Workstation output - delete(wks_debug) - end if - - end do ; idx_mod = 0, dim_MOD - 1 - -end - -; ############################################################################# - -undef("plot_three_by_one_vector") -procedure plot_three_by_one_vector(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_name[1]:string, - debuginfo[1]:logical, - storage_vault[1]:logical, - ua_ref[*][*]:numeric, - va_ref[*][*]:numeric, - speed_ref[*][*]:numeric, - idx_mod[1]:integer) -begin - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - ; ------------------------------ - ; Plot reference plot (top plot) - ; ------------------------------ - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "(1) " + di@season + "-" + storage_name + " of " - main_title_suffix = "" - plot_settings@type = "ref" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed_ref, dummy_array) - plot_ref = single_contour(wks, \ - speed_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - inset_top_text(wks, plot_ref, "Reference", txres) - - max_speed_ref = max(speed_ref) - if (storage_name .ne. "stddev") then - plot_ref_v = single_vector(wks, \ - max_speed_ref, \ - speed_ref, \ - ua_ref, \ - va_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_ref, plot_ref_v) - end if - three_by_one_labelbar(wks, plot_ref, plot_settings@lb_units) - - ; ------------------------------------- - ; Plot model entry plot (middle plot) - ; ------------------------------------- - main_title_prefix = "(2) " + di@season + "-" + storage_name + " of " - res = panel_three_by_one(res, 1) ; Update resource for second plot - - storage_record = \ - str_join((/storage_name, "ua", sprinti("%i", idx_mod)/), str_vault_sep) - ua = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, "va", sprinti("%i", idx_mod)/), str_vault_sep) - va = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - speed = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - ; Interpolate to reference grid for pattern correlation calculation - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed, dummy_array) - statistics = compute_stat((/"corr"/), valid_statistics, speed, speed_ref) - plot = single_contour(wks, \ - speed, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_name .ne. "stddev") then - plot_v = single_vector(wks, \ - max_speed_ref, \ - speed, \ - ua, \ - va, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot, plot_v) - end if - - ; -------------------------------------------- - ; Plot model reference diff plot (bottom plot) - ; -------------------------------------------- - ; Plot mean of differnces of first and second data set, first - ; interpolate to the reference data set grid (bilinear interpolation) - - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_dataset_minus_ref(ua, ua_ref) - diff_model_va_ref = get_dataset_minus_ref(va, va_ref) - - main_title = "(1) - (2)" - res = panel_three_by_one(res, 2) ; Update resource for third plot - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_diff_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - plot_settings@type = "diff" - plot_settings@skip_default_title = True - - statistics = True - statistics = \ - compute_stat((/"mean"/), valid_statistics, diff_model_ref, dummy_array) - statistics = \ - compute_stat((/"rmse", "corr"/), valid_statistics, speed, speed_ref) - plot_diff = single_contour(wks, \ - diff_model_ref, \ - main_title, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_name .ne. "stddev") then - plot_diff_v = single_vector(wks, \ - max_speed_ref, \ - diff_model_ref, \ - diff_model_ua_ref, \ - diff_model_va_ref, \ - main_title, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_diff, plot_diff_v) - end if - plot_settings@skip_default_title = False - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_diff) - drawNDCGrid(wks) - end if - draw(plot_ref) - draw(plot_diff) - draw(plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if -end - -; ############################################################################# - -undef("three_by_one_vector") -procedure three_by_one_vector(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; Description: -; For each set of three 2D-model fields (vector_x, vector_y and abs) stored -; in the 'storage_vault', plot a separate figure with a reference plot at -; the top (abs + vector f, the model in the middle, and a diff at the -; bottom. The various logicals carry switches for the plot routine behavior. -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, field_type0, lbtitle, \ - main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, wks_debug, txres -begin - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - var1 = variables(1) - field_type0 = field_types(0) - field_type1 = field_types(1) - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@mpFillOn = False - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - - txres = True - txres@txFuncCode = "~" - - ; Fetch reference plot - storage_record = \ - str_join((/storage_name, "ua", \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ua_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, "va", \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - va_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - speed_ref = retrieve_from_vault(storage_vault, storage_record) - - do idx_mod = 0, dim_MOD - 1 - if (idx_mod .eq. plot_settings@idx_ref) then - continue - end if - - ; ------------------------- - ; Define output workstation - ; ------------------------- - aux_title_info = di@season + "-" + storage_name - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_vector(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - False, \ - storage_vault, \ - ua_ref, \ - va_ref, \ - speed_ref, \ - idx_mod) - frame(wks) - delete(wks) - - ; Debug version - if (debuginfo) then - aux_title_info = di@season + "-" + storage_name + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_vector(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - debuginfo, \ - storage_vault, \ - ua_ref, \ - va_ref, \ - speed_ref, \ - idx_mod) - frame(wks_debug) - delete(wks_debug) - end if - end do ; idx_mod = start_idx, dim_MOD - 1 - -end - -; ############################################################################# - -undef("plot_multipanel") -procedure plot_multipanel(cols[*]:integer, - rows[*]:float, - curr_idx[1]:integer, - curr_page[1]:integer, - res[1]:logical, - storage_name[1]:string, - storage_vault[1]:logical, - wks[1]:graphic, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - debuginfo[1]:logical, - figures_per_page[*]:integer, - model_panel_placement[*]:integer, - figure_panel_placement[*]:integer, - plot_array[*]:graphic, - type_specifier[1]:string, - no_figures_on_this_page[1]:integer) -begin - - ; Update position, labelbar and title - curr_figure_pos = figure_panel_placement(curr_idx) - res = \ - panel_n_by_cols(res, curr_figure_pos, rows, cols, \ - figures_per_page(curr_page)) - - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "" - main_title_suffix = "" - - ; Fetch reference plot - storage_record = \ - str_join((/storage_name, sprinti("%i", plot_settings@idx_ref(0))/), \ - str_vault_sep) - ref = retrieve_from_vault(storage_vault, storage_record) - - ; Reference plot - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio", "mean-corr"/), \ - valid_statistics, ref, dummy_array) - plot_ref = single_contour(wks, \ - ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - end if - - idx_fig = figure_panel_placement(curr_idx) - plot_array(idx_fig) = plot_ref - - ; Skip past the reference plot - curr_idx = curr_idx + 1 - - lbres = True - - if (plot_settings@type .eq. "diff") then - inset_top_text(wks, plot_ref, "REF", txres) - inset_labelbar(wks, plot_ref, res, "REF", lbres) - main_title_suffix = " - REF" - else - inset_top_text(wks, plot_ref, "Reference", txres) - main_title_suffix = "" - end if - - delete(res@cnLevels) - cn_levels_string = str_sub_str("cn_levels_" + storage_name + \ - type_specifier + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - ; ----------------------------- - ; Create the non-reference plots - ; ----------------------------- - do curr_fig = 1, figures_per_page(curr_page) - 1 - - main_title_prefix = "" - idx_mod = model_panel_placement(curr_idx) - idx_fig = figure_panel_placement(curr_idx) - - ; Skip reference models - if any((idx_mod .eq. plot_settings@idx_ref)) then - continue - end if - - ; Update placement and labelbar colors - res = panel_n_by_cols(res, figure_panel_placement(curr_idx), rows, \ - cols, figures_per_page(curr_page)) - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - curr = retrieve_from_vault(storage_vault, storage_record) - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, curr, dummy_array) - if (plot_settings@type .eq. "diff") then - statistics = compute_stat((/"rmse"/), valid_statistics, curr, ref) - diff_model_ref = get_dataset_minus_ref(curr, ref) - delete(curr) - curr = diff_model_ref - delete(diff_model_ref) - else - statistics = compute_stat((/"corr"/), valid_statistics, curr, ref) - end if - statistics = \ - compute_stat((/"mean", "bob", "eio", "mean-corr"/), \ - valid_statistics, curr, dummy_array) - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - plot = single_contour(wks, \ - curr, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - end if - - plot_array(idx_fig) = plot - - ; Update index to point to next field - curr_idx = curr_idx + 1 - delete(curr) - delete(statistics) - - end do ; curr_fig=1, figures_per_page(curr_page) - 1 - - plottype_lbres = False - - ; --------------------------------------------------------- - ; Create an blank plot for shared labelbar placement (mean) - ; --------------------------------------------------------- - blank_plot = add_blank_plot_title(wks, \ - di@season + "-" + plot_settings@type + \ - plot_settings@part_of_header, \ - rows, \ - cols) - ; Create shared labelbar - n_by_cols_labelbar(wks, \ - blank_plot, \ - plot_array(no_figures_on_this_page - 1), \ - rows, \ - cols, \ - plot_settings@lb_units, \ - plottype_lbres) - - ; -------------------- - ; Draw mean value plot - ; -------------------- - if (debuginfo) then - drawNDCGrid(wks) - end if - draw(plot_array) - draw(blank_plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if -end - -; ############################################################################# - -undef("multipanel") -procedure multipanel(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; Description: -; Place the 2D-model fields stored in the 'storage_vault' on a set of paneled -; figures. First entry is always the reference data set. The various logicals -; carry switches for the plot routine behavior. -local aux_title_info, blank_plot, cn_levels_string, cols, curr, curr_fig, \ - curr_figure_pos, curr_idx, curr_idx_debug, curr_page, diag_script_base, \ - dim_MOD, dim_VAR, dummy_array, field_type0, figure_panel_placement, \ - figures_per_page, idx_fig, idx_mod, lbres, main_title_prefix, \ - model_panel_placement, no_figures_on_this_page, output_dir, \ - output_filename, output_file_path, page_no, plot, plot_array, \ - plot_mean_diff, plot_ref, plot_stddev, plot_stddev_diff, plottype_lbres, \ - ref, res, rows, storage_record, total_no_of_pages, txres, type_specifier, \ - var0, wks -begin - ; No of models may differ from dimsizes(dim_MOD) if variables - ; from different models are combined (e.g., 'ts' from HadISST - ; and 'pr' from TRMM) - ref_no = 0 - stored_ref_name = "model" - dim_MOD = no_unique_vault_entries(storage_vault, stored_ref_name, ref_no) - - dim_VAR = dimsizes(variables) - - var0 = variables(0) - field_type0 = field_types(0) - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@lbLabelBarOn = False - res@gsnAddCyclic = False - - ; -------------------------------------- - ; Compute the layout of paneled figures - ; -------------------------------------- - figures_per_page = \ - get_figures_per_page(dim_MOD, max_figures_pp, min_figures_pp) - - ; Which model goes where across all pages - model_panel_placement = new((/sum(figures_per_page)/), integer) - - ; Which model goes where on each page? - figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(input_file_info, \ - plot_settings@idx_ref, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement) - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - if (plot_settings@type .eq. "diff") then - type_specifier = "_diff" - else - type_specifier = "" - end if - - ; --------------------------- - ; Loop over all output pages - ; --------------------------- - curr_idx = 0 - curr_idx_debug = 0 - total_no_of_pages = dimsizes(figures_per_page) - - do curr_page = 0, total_no_of_pages - 1 - - ; -------------------------- - ; Plot arrays for gsn_panels - ; -------------------------- - plot_array = new((/max_figures_pp/), graphic) - - no_figures_on_this_page = figures_per_page(curr_page) - - ; Create a string to add to the figure output filename for mulitple pages - if (total_no_of_pages .gt. 1) then - page_no = "-page" + sprinti("%i", curr_page) - else - page_no = "" - end if - - ; ----------------------------------- - ; Define output workstation for plots - ; ----------------------------------- - idx_mod = -1 ; No specific model defined - aux_title_info = di@season + "-" + storage_name + type_specifier + page_no - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - cols = multipanel_get_no_cols(no_figures_on_this_page, max_cols) - rows = multipanel_get_no_rows(no_figures_on_this_page, max_cols) - - plot_multipanel(cols, \ - rows, \ - curr_idx, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks, \ - di, \ - plot_settings, \ - valid_statistics, \ - False, \ ; No debuginfo - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks) - if (debuginfo) then - aux_title_info = di@season + "-" + storage_name + type_specifier + \ - page_no + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - - plot_multipanel(cols, \ - rows, \ - curr_idx_debug, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks_debug, \ - di, \ - plot_settings, \ - valid_statistics, \ - debuginfo, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks_debug) - end if - end do ; curr_fig = 1, figures_per_page(curr_page) - 1 - -end - -; ############################################################################# - -undef("plot_multipanel_vector") -procedure plot_multipanel_vector(cols[*]:integer, - rows[*]:float, - curr_idx[1]:integer, - curr_page[1]:integer, - res[1]:logical, - storage_name[1]:string, - storage_vault[1]:logical, - wks[1]:graphic, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - debuginfo[1]:logical, - figures_per_page[*]:integer, - model_panel_placement[*]:integer, - figure_panel_placement[*]:integer, - plot_array[*]:graphic, - type_specifier[1]:string, - no_figures_on_this_page[1]:integer) -begin - - ; Update position, labelbar and title - curr_figure_pos = figure_panel_placement(curr_idx) - res = panel_n_by_cols(res, curr_figure_pos, rows, cols, \ - figures_per_page(curr_page)) - - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "" - main_title_suffix = "" - - ; Fetch reference plot - storage_record = \ - str_join((/"mean", "ua", \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ua_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/"mean", "va", \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - va_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - speed_ref = retrieve_from_vault(storage_vault, storage_record) - max_speed_ref = max(speed_ref) - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed_ref, dummy_array) - plot_ref = single_contour(wks, \ - speed_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_name .ne. "stddev") then - plot_ref_v = single_vector(wks, \ - max_speed_ref, \ - speed_ref, \ - ua_ref, \ - va_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_ref, plot_ref_v) - end if - - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - end if - - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + type_specifier + \ - "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - idx_fig = figure_panel_placement(curr_idx) - plot_array(idx_fig) = plot_ref - - ; Skip past the reference plot - curr_idx = curr_idx + 1 - - lbres = True - txres = True - txres@txFuncCode = "~" - - if (plot_settings@type .eq. "diff") then - inset_top_text(wks, plot_ref, "REF", txres) - inset_labelbar(wks, plot_ref, res, "REF", lbres) - main_title_suffix = " - REF" - else - inset_top_text(wks, plot_ref, "Reference", txres) - main_title_suffix = "" - end if - - ; ------------------------------ - ; Create the non-reference plots - ; ------------------------------ - do curr_fig = 1, figures_per_page(curr_page) - 1 - - main_title_prefix = "" - idx_mod = model_panel_placement(curr_idx) - idx_fig = figure_panel_placement(curr_idx) - - ; Update placement and labelbar colors - res = panel_n_by_cols(res, figure_panel_placement(curr_idx), rows, cols, \ - figures_per_page(curr_page)) - - storage_record = \ - str_join((/"mean", "ua", sprinti("%i", idx_mod)/), str_vault_sep) - ua = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/"mean", "va", sprinti("%i", idx_mod)/), str_vault_sep) - va = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - speed = retrieve_from_vault(storage_vault, storage_record) - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, speed, dummy_array) - if (plot_settings@type .eq. "diff") then - - ; Plot mean of differences of first and second data set, first - ; interpolate to the reference data set grid (bilinear interpolation) - statistics = compute_stat((/"rmse"/), valid_statistics, speed, speed_ref) - - ; ua/va/speed field interpolation - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_dataset_minus_ref(ua, ua_ref) - diff_model_va_ref = get_dataset_minus_ref(va, va_ref) - - delete(speed) - speed = diff_model_ref - - delete(ua) - ua = diff_model_ua_ref - - delete(va) - va = diff_model_va_ref - - delete(diff_model_ref) - delete(diff_model_ua_ref) - delete(diff_model_va_ref) - end if - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - statistics = compute_stat((/"mean"/), valid_statistics, speed, dummy_array) - statistics = compute_stat((/"corr"/), valid_statistics, speed, speed_ref) - - plot = single_contour(wks, \ - speed, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_name .ne. "stddev") then - plot_v = single_vector(wks, \ - max_speed_ref, \ - speed, \ - ua, \ - va, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot, plot_v) - end if - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - end if - - plot_array(idx_fig) = plot - - ; Update index to point to next field - curr_idx = curr_idx + 1 - delete(ua) - delete(va) - delete(speed) - - end do ; curr_fig=1, figures_per_page(curr_page) - 1 - - plottype_lbres = False - - ; --------------------------------------------------------- - ; Create an blank plot for shared labelbar placement (mean) - ; --------------------------------------------------------- - blank_plot = \ - add_blank_plot_title(wks, di@season + "-" + plot_settings@type + \ - plot_settings@part_of_header, rows, cols) - - ; Create shared labelbar - n_by_cols_labelbar(wks, \ - blank_plot, \ - plot_array(no_figures_on_this_page - 1), \ - rows, \ - cols, \ - plot_settings@lb_units, \ - plottype_lbres) - - ; -------------------- - ; Draw mean value plot - ; -------------------- - if (debuginfo) then - drawNDCGrid(wks) - end if - draw(plot_array) - draw(blank_plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if -end - -; ############################################################################# - -undef("multipanel_vector") -procedure multipanel_vector(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; Description: -; Place the sets of three 2D-model fields (vector_x, vector_y and abs) -; stored in the 'storage_vault' on a set of paneled figures. -; First entry is always the reference data set. The various logicals -; carry switches for the plot routine behavior. -local aux_title_info, blank_plot, cn_levels_string, cols, curr_fig, \ - curr_figure_pos, curr_idx, curr_page, diag_script_base, dim_MOD, dim_VAR, \ - dummy_array, field_type0, field_type1, figure_panel_placement, \ - figures_per_page, idx_fig, idx_mod, lbres, main_title_prefix, \ - model_panel_placement, no_figures_on_this_page, output_dir, \ - output_filename, output_file_path, page_no, plot, plot_array, plot_ref, \ - plottype_lbres, res, rows, speed, speed_ref, storage_record, \ - total_no_of_pages, txres, type_specifier, ua, ua_ref, va, var0, var1, \ - va_ref, wks, plot_ref_v -begin - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@mpFillOn = False - res@cnFillOn = True - res@cnLinesOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@lbLabelBarOn = False - res@gsnAddCyclic = False - - ; -------------------------------------- - ; Compute the layout of paneled figures - ; -------------------------------------- - figures_per_page = get_figures_per_page(dim_MOD, \ - max_figures_pp, \ - min_figures_pp) - - ; Which model goes where across all pages - model_panel_placement = new((/sum(figures_per_page)/), integer) - - ; Which model goes where on each page? - figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(input_file_info, \ - plot_settings@idx_ref, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement) - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - if (plot_settings@type .eq. "diff") then - type_specifier = "_diff" - else - type_specifier = "" - end if - - ; --------------------------- - ; Loop over all output pages - ; --------------------------- - curr_idx = 0 - curr_idx_debug = 0 - total_no_of_pages = dimsizes(figures_per_page) - - do curr_page = 0, total_no_of_pages - 1 - - ; -------------------------- - ; Plot arrays for gsn_panels - ; -------------------------- - plot_array = new((/max_figures_pp/), graphic) - - no_figures_on_this_page = figures_per_page(curr_page) - - ; Create a string to add to the figure output - ; filename for mulitple pages - if (total_no_of_pages .gt. 1) then - page_no = "-page" + sprinti("%i", curr_page) - else - page_no = "" - end if - - ; ----------------------------------- - ; Define output workstation for plots - ; ----------------------------------- - idx_mod = -1 ; No specific model defined - aux_title_info = di@season + "-" + storage_name + type_specifier + page_no - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - cols = multipanel_get_no_cols(no_figures_on_this_page, max_cols) - rows = multipanel_get_no_rows(no_figures_on_this_page, max_cols) - - plot_multipanel_vector(cols, \ - rows, \ - curr_idx, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks, \ - di, \ - plot_settings, \ - valid_statistics, \ - False, \ ; No debuginfo - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks) - - if (debuginfo) then - aux_title_info = \ - di@season + "-" + storage_name + type_specifier + page_no + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - - plot_multipanel_vector(cols, \ - rows, \ - curr_idx_debug, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks_debug, \ - di, \ - plot_settings, \ - valid_statistics, \ - debuginfo, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks_debug) - end if - end do - -end - -; ############################################################################# - -undef("seasonal_plot") -procedure seasonal_plot(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -; Description: -; Produces a bar plot for seasonal climatology or interannual -; variability. The various logicals carry switches for the -; plot routine behavior. -local am_infobox_id, am_labelbar_id, amres, debugbox, diag_script_base, \ - dim_VAR, field_type0, idx_mod, labelbar, labels, lbres, output_dir, \ - output_filename, output_file_path, plot_array, precip, \ - precip_seasonal_maxY, precip_seasonal_minY, precip_seasonal_spreadY, res, \ - storage_record, txres, var0, wks, xaxis, var1, field_type1 -begin - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - precip = retrieve_from_vault(storage_vault, storage_record) - units = precip@units - - precip_seasonal_maxY = max(precip) - precip_seasonal_minY = min(precip) - precip_seasonal_spreadY = precip_seasonal_maxY - precip_seasonal_minY - - ; Plot arrays for gsn_plots - plot_array = new((/dim_MOD/), graphic) - - ; ------------------------------- - ; General resources for all plot - ; ------------------------------- - res = True - res@gsnDraw = False - res@gsnFrame = False - res@gsnXYBarChart = True - res@gsnXYBarChartBarWidth = 0.15 ; change bar widths - res@gsnYRefLine = 0. ; reference line - - ; Specific plot resource for plot iii) - if (plot_settings@type .eq. "iav") then - res@tmXBFormat = "4f" - xaxis = di@years - else - ; Set months on x-axis for plots i) and ii) - res@tmXBMode = "Explicit" ; Define your own tick mark labels. - res@tmXBMinorOn = False ; No minor tick marks. - res@tmXBValues = ispan(0, 11, 1) ; Location to put tick mark labels - res@tmXBLabels = (/"Jan", "Feb", "Mar", "Apr", "May", "Jun", \ - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"/) - res@tmXBLabelFont = 25 ; Change font of labels. - res@tmXBLabelFontHeightF = 0.015 ; Change font height of labels. - - ; Add some margins - res@trXMinF = -1 - res@trXMaxF = 12 - - xaxis = fspan(0, 11, 12) - end if - - labels = new(dim_MOD, string) - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - ; ---------------------------------------------- - ; Define output workstation for seasonal anomaly - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = interface_get_figure_filename(diag_script_base, \ - var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - ; --------- - ; Plot loop - ; --------- - do idx_mod = 0, dim_MOD - 1 - labels(idx_mod) = input_file_info@dataset(idx_mod) - res@gsnXYBarChartColors = di@colors_seasonal(idx_mod) - - ; Shift plot to the right and draw/redraw - res@vpXF = 0.2 + idx_mod * 0.005 - res@trYMinF = precip_seasonal_minY - precip_seasonal_spreadY * 0.05 - res@trYMaxF = precip_seasonal_maxY + precip_seasonal_spreadY * 0.05 - - ; Set strings for titles and axis for plot i) and ii) - res@tiMainString = set_string_once(plot_settings@title_string, idx_mod) - res@tiYAxisString = set_string_once(plot_settings@yaxis_string, idx_mod) - res@gsnLeftString = \ - set_string_once(plot_settings@left_plot_subheader, idx_mod) - res@gsnRightString = set_string_once(units, idx_mod) - - if (isatt(plot_settings, "xaxis_string")) then - res@tiXAxisString = set_string_once(plot_settings@xaxis_string, idx_mod) - end if - - plot_array(idx_mod) = gsn_csm_xy(wks, xaxis, precip(idx_mod, :), res) - - ; Remove borders such that next plot only draws the actual "bars" - res = remove_figure_borders(res) - end do ; idx_mod = 0, dim_MOD - 1 - - ; Label bar resources - lbres = True ; labelbar only resources - lbres@vpWidthF = 0.30 ; labelbar width - lbres@vpHeightF = 0.024 * dim_MOD ; labelbar height - lbres@lbBoxMajorExtentF = 0.36 ; puts space between color boxes - lbres@lbFillColors = di@colors_seasonal - lbres@lbMonoFillPattern = True ; Solid fill pattern - lbres@lbLabelJust = "CenterLeft" ; left justify labels - lbres@lbPerimOn = True - lbres@lbPerimFill = 0 - lbres@lbPerimFillColor = "white" - lbres@lbPerimColor = "black" - labelbar = gsn_create_labelbar(wks, dim_MOD, labels, lbres) - - ; Place annotations - amres = True - amres@amZone = 3 - amres@amSide = "Right" - amres@amParallelPosF = 0.88 - amres@amOrthogonalPosF = -0.25 - am_labelbar_id = gsn_add_annotation(plot_array(dim_MOD - 1), labelbar, amres) - - ; If requested, add a text info box and/or debug info box to each plot - txres = True - txres@txFuncCode = "~" - - if (debuginfo) then - debuginfo@years = di@years_string - debugbox = write_info(debuginfo) - am_infobox_id = \ - place_debuginfo(wks, debugbox, txres, plot_array(dim_MOD - 1)) - drawNDCGrid(wks) - end if - - draw(wks) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - frame(wks) -end - -; ############################################################################# - -undef("xy_plot_wrapper") -procedure xy_plot_wrapper(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -local annots, annots_mmm, avgstd, avgstd_mmm, colors, colors_mmm, dashes, \ - dashes_mmm, diag_script_base, dim_VAR, field_type0, field_type1, i, \ - idx_mod, imon, output_dir, output_filename, output_file_path, res, \ - storage_record, temp, thicks, thicks_mmm, values, values_stddev, \ - values_stddev, var0, var1, wks, wks_debug -begin - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - values = retrieve_from_vault(storage_vault, storage_record) - units = values@units - - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - ; ---------------------------------------------- - ; Define output workstation for xy plot - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = interface_get_figure_filename(diag_script_base, \ - var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - aux_filename_info = plot_settings@aux_filename_info + "-debug" - output_filename = interface_get_figure_filename(diag_script_base, \ - var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - if (debuginfo) then - wks_debug = gsn_open_wks(output_file_type, output_file_path) - end if - - values&month@units = "Multi-year monthly mean" - - ; Select colors and other plotting attributes - ; See ./diag_scripts/shared/plot/style.ncl - colors = project_style(diag_script_info, "colors") - dashes = project_style(diag_script_info, "dashes") - thicks = project_style(diag_script_info, "thicks") - annots = project_style(diag_script_info, "annots") - avgstd = project_style(diag_script_info, "avgstd") - ; Select colors and other plotting attributes for multi-model mean - if (diag_script_info@multi_model_mean .eq. "y") then - ; project_style evaluates metadata of variable "models" - temp = models - - ; -> keep original "models" in "temp" and restore later - copy_VarMeta(models, temp) - delete(models) - - ; Use "models" to pass on attribute names - models = getvaratts(temp) - do i = 0, dimsizes(models) - 1 - ; Define all original attributes again, but empty - input_file_info@$models(i)$ = "" - end do - input_file_info@dataset = "model_mean" - - ; See ./diag_scripts/shared/plot/style.ncl - colors_mmm = project_style(diag_script_info, "colors") - dashes_mmm = project_style(diag_script_info, "dashes") - thicks_mmm = project_style(diag_script_info, "thicks") - annots_mmm = project_style(diag_script_info, "annots") - avgstd_mmm = project_style(diag_script_info, "avgstd") - delete(models) - models = temp ; Restore original "models" - copy_VarMeta(temp, models) - delete(temp) - end if - - ; Calculate standard deviation of models - if (di@multi_model_mean .ne. "y") then - ; define anyway, because fields are needed as parameters for xy_line - values_stddev = 0 - else - ; Mean, stddev, -1 * stddev, +1 * stddev - values_stddev = new((/4, 12/), float) - ; See ./diag_scripts/shared/plot/style.ncl for which data shall be - ; included in the statistics - temp = ind(avgstd .eq. 0) - do imon = 0, 11 - values_stddev(0, imon) = dim_avg_n_Wrap(values(temp, imon), (/0/)) - values_stddev(1, imon) = dim_stddev_n_Wrap(values(temp, imon), (/0/)) - values_stddev(2, imon) = values_stddev(0, imon) - values_stddev(1, imon) - values_stddev(3, imon) = values_stddev(0, imon) + values_stddev(1, imon) - end do - delete(temp) - end if - - ; Min and max values on x-axis - res = True - res@tmXTOn = False - res@tmYROn = True - if (di@supporting_gridlines .eq. "y") then - res@tmXMajorGrid = True - res@gsnYRefLine = 0 - end if - res@trXMinF = min(values&month) - 0.05 * \ - (max(values&month) - min(values&month)) - res@trXMaxF = max(values&month) + 0.25 * \ - (max(values&month) - min(values&month)) - - res@tmXBMode = "Explicit" - res@tmXBValues = (/0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11/) - res@tmXBLabels = (/"J", "F", "M", "A", "M", "J", \ - "J", "A", "S", "O", "N", "D"/) - - res@tiMainString = plot_settings@title_string - res@tiYAxisString = plot_settings@yaxis_string - res@gsnRightString = values@units - res@gsnRightStringFontHeightF = 16 - res@gsnLeftString = plot_settings@left_plot_subheader - res@gsnLeftStringFontHeightF = 16 - - xy_line(wks, values, values&month, values_stddev, res, False) - - if (debuginfo) then - xy_line(wks_debug, values, values&month, values_stddev, res, debuginfo) - end if -end - -; ############################################################################# - -undef("ts_line_wrapper") -procedure ts_line_wrapper(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -local annots, avgstd, diag_script_base, dim_VAR, field_type0, field_type1, \ - idx_mod, imonth, output_dir, output_filename, output_file_path, res, \ - storage_record, temp, val_area_stddev, values, values_stddev, var0, var1, \ - wks, wks_debug -begin - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - values = retrieve_from_vault(storage_vault, storage_record) - units = values@units - - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - ; ---------------------------------------------- - ; Define output workstation for xy plot - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = interface_get_figure_filename(diag_script_base, \ - var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - aux_filename_info = plot_settings@aux_filename_info + "-debug" - output_filename = interface_get_figure_filename(diag_script_base, \ - var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - if (debuginfo) then - wks_debug = gsn_open_wks(output_file_type, output_file_path) - end if - - ; Determine time range - start_year = min(stringtoint(input_file_info@start_year)) - end_year = max(stringtoint(input_file_info@end_year)) - - ; Select attributes - annots = project_style(diag_script_info, "annots") - avgstd = project_style(diag_script_info, "avgstd") - - ; Prepare calculation of standard deviation of models - if (diag_script_info@multi_model_mean .eq. "y") then - values_stddev = new((/4, end_year - start_year + 1/), float) - val_area_stddev = new((/4, end_year - start_year + 1/), float) - else ; initialize anyway, because both are needed as parameters in xy_line - values_stddev = 0 - val_area_stddev = 0 - end if - - ; Calculate standard deviation of models - if (diag_script_info@multi_model_mean .eq. "y") then - ; See style_$project$.ncl for which data shall - ; be included in the statistics - temp = ind(avgstd .eq. 0) - do imonth = 0, dimsizes(values&years) - 1 - ; For extent - values_stddev(0, imonth) = dim_avg_n_Wrap(values(temp, imonth), (/0/)) - values_stddev(1, imonth) = dim_stddev_n_Wrap(values(temp, imonth), (/0/)) - values_stddev(2, imonth) = \ - values_stddev(0, imonth) - values_stddev(1, imonth) - values_stddev(3, imonth) = \ - values_stddev(0, imonth) + values_stddev(1, imonth) - end do - delete(temp) - end if - - res = True - res@tmXTOn = False - res@tmYROn = True - if (di@supporting_gridlines .eq. "y") then - res@tmXMajorGrid = True - res@gsnYRefLine = 0 - end if - res@tmXBFormat = "4f" - res@tiMainString = plot_settings@title_string - res@tiYAxisString = plot_settings@yaxis_string - res@tiXAxisString = plot_settings@xaxis_string - res@gsnRightString = values@units - res@gsnRightStringFontHeightF = 16 - res@gsnLeftString = plot_settings@left_plot_subheader - res@gsnLeftStringFontHeightF = 16 - res@trXMinF = min(di@years) - 0.05 * (max(di@years) - min(di@years)) - res@trXMaxF = max(di@years) + 0.25 * (max(di@years) - min(di@years)) - - xy_line(wks, values, values&years, values_stddev, res, False) - - if (debuginfo) then - xy_line(wks_debug, values, di@years, values_stddev, res, debuginfo) - end if - -end diff --git a/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl b/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl index dd665ccd95..e31b99fc67 100644 --- a/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl +++ b/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl @@ -18,6 +18,19 @@ ; procedure add_errorbar ; procedure horizontal_whiskers ; procedure add_prediction_error +; function month_sel +; function lat_names +; procedure add_line +; procedure add_scatt +; procedure add_legenda +; function calcRegCoeffs +; function genZonalMeans +; function calcMeanAnnCycleMonthly +; function calcMeanAnnCycleAnnual +; procedure rmMeanAnnCycle +; function apfiltersmooth +; procedure smoothAnomalies +; function clmMon2clmDayn ; ; ############################################################################# @@ -223,9 +236,6 @@ procedure copy_VarAtt_sel(var1, var2, sel: string) ; sel: string (or list of strings) that specify the BEGINNING letters ; of the attributes to copy ; -; Return value -; var2 gets additional attributes -; ; Description ; Intended to copy selected plot ressources for use in a different ; plot routine that may not allow all ressources from var1. @@ -400,7 +410,7 @@ end ; ############################################################################# undef("get_outfile_name") -function get_outfile_name(add_specs[1] : string) +function get_outfile_name(add_specs[1]:string) ; ; Arguments ; add_specs: string containing specific elements to be added to the file @@ -493,11 +503,11 @@ end ; ############################################################################# undef("add_markers") -procedure add_markers(wks[1] : graphic, - plot[1] : graphic, - res_in[1] : logical, - xpos_in : numeric, - ypos_in : numeric) +procedure add_markers(wks[1]:graphic, + plot[1]:graphic, + res_in[1]:logical, + xpos_in:numeric, + ypos_in:numeric) ; ; Arguments ; wks: valid workstation, e.g. created by get_wks @@ -562,11 +572,11 @@ end ; ############################################################################# undef("add_num_markers") -procedure add_num_markers(wks[1] : graphic, - plot[1] : graphic, - res_in[1] : logical, - xpos_in : numeric, - ypos_in : numeric) +procedure add_num_markers(wks[1]:graphic, + plot[1]:graphic, + res_in[1]:logical, + xpos_in:numeric, + ypos_in:numeric) ; ; Arguments ; wks: valid workstation, e.g. created by get_wks @@ -647,11 +657,11 @@ end ; ############################################################################# undef("add_errorbar") -procedure add_errorbar(wks[1] : graphic, - plot[1] : graphic, - res_in[1] : logical, - xpos_in : numeric, - ypos_in : numeric) +procedure add_errorbar(wks[1]:graphic, + plot[1]:graphic, + res_in[1]:logical, + xpos_in:numeric, + ypos_in:numeric) ; ; Arguments ; wks: valid workstation, e.g. created by get_wks @@ -780,11 +790,11 @@ end ; ############################################################################# undef("horizontal_whiskers") -procedure horizontal_whiskers(wks[1] : graphic, - plot[1] : graphic, - res_in[1] : logical, - xmin_in : numeric, - xmax_in : numeric, +procedure horizontal_whiskers(wks[1]:graphic, + plot[1]:graphic, + res_in[1]:logical, + xmin_in:numeric, + xmax_in:numeric, ypos_in: numeric) ; ; Arguments @@ -891,11 +901,11 @@ end ; ############################################################################# undef("add_prediction_error") -procedure add_prediction_error(wks[1] : graphic, - plot[1] : graphic, - res_in[1] : logical, - xpos_in : numeric, - ypos_in : numeric) +procedure add_prediction_error(wks[1]:graphic, + plot[1]:graphic, + res_in[1]:logical, + xpos_in:numeric, + ypos_in:numeric) ; ; Arguments ; wks: valid workstation, e.g. created by get_wks @@ -952,3 +962,945 @@ begin leave_msg(scriptname, funcname) end + +; ############################################################################# +undef("month_sel") +function month_sel(month_names:string) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local month_names, month_n, i +begin + + if (.not.any(ismissing(ind(month_names.eq."ANN")))) then + month_n = new(12, "integer") + month_n = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12/) + else + month_n = new(dimsizes(month_names), "integer") + do i = 0, dimsizes(month_names)-1 + if (.not.ismissing(ind(month_names(i).eq."JAN"))) then + month_n(i) = 1 + end if + if (.not.ismissing(ind(month_names(i).eq."FEB"))) then + month_n(i) = 2 + end if + if (.not.ismissing(ind(month_names(i).eq."MAR"))) then + month_n(i) = 3 + end if + if (.not.ismissing(ind(month_names(i).eq."APR"))) then + month_n(i) = 4 + end if + if (.not.ismissing(ind(month_names(i).eq."MAY"))) then + month_n(i) = 5 + end if + if (.not.ismissing(ind(month_names(i).eq."JUN"))) then + month_n(i) = 6 + end if + if (.not.ismissing(ind(month_names(i).eq."JUL"))) then + month_n(i) = 7 + end if + if (.not.ismissing(ind(month_names(i).eq."AUG"))) then + month_n(i) = 8 + end if + if (.not.ismissing(ind(month_names(i).eq."SEP"))) then + month_n(i) = 9 + end if + if (.not.ismissing(ind(month_names(i).eq."OCT"))) then + month_n(i) = 10 + end if + if (.not.ismissing(ind(month_names(i).eq."NOV"))) then + month_n(i) = 11 + end if + if (.not.ismissing(ind(month_names(i).eq."DEC"))) then + month_n(i) = 12 + end if + end do + end if + + return(month_n) + +end + +; ############################################################################# +undef("lat_names") +function lat_names(lat_val:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local lat_name, lat_val, i +begin + + lat_name = new((/dimsizes(lat_val)/), "string") + do i = 0, dimsizes(lat_val) - 1 + if (lat_val(i).gt.0.) then + lat_name(i) = lat_val(i) + "N" + end if + if (lat_val(i).eq.0.) then + lat_name(i) = "Equator" + end if + if (lat_val(i).lt.0.) then + lat_name(i) = -lat_val(i) + "S" + end if + end do + + return (lat_name) + +end + +; ############################################################################# +undef("add_line") +procedure add_line(wks, + plot, + x, + yval, + line_color, + line_dash) +; +; Arguments +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local plres, str +begin + + ; gsn_add_polyline crashes if the arrays x and/or yval contain only missing + if (all(ismissing(x)).or.all(ismissing(yval))) then + return + end if + + plres = True + plres@gsLineColor = line_color + plres@gsLineDashPattern = line_dash + plres@gsLineThicknessF = 2.5 + str = unique_string("polyline") + plot@$str$ = gsn_add_polyline(wks, plot, x, yval, plres) + +end + +; ############################################################################# +undef("add_scatt") +procedure add_scatt(wks, + plot, + x, + yval, + mark_color, + mark_ind) +; +; Arguments +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local plres, str +begin + + plres = True + plres@gsMarkerColor = mark_color + plres@gsMarkerIndex = mark_ind + str = unique_string("polymarker") + plot@$str$ = gsn_add_polymarker(wks, plot, x, yval, plres) + +end + +; ############################################################################# +undef("add_legenda") +procedure add_legenda(wks, + model:string, + colors:string, + dashs:numeric, + scatters:string, + ticknesses:numeric, + place:string) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local model, dim_mod, colors, dashs, edge_x, edge_y, edge_res, tx1res, \ + dim_lb, xleg, xl, yleg, yl, xtxt, ytxt, place, dim_lines, space_lines, \ + lin_sp, scatters, ticknesses +begin + + dim_mod = dimsizes(model) + dim_lines = floattoint(dim_mod / 3)+1 + if ((mod(dim_mod, 3)).eq.0) then + dim_lines = floattoint(dim_mod /3) + 1 + else + dim_lines = floattoint(dim_mod / 3) + 2 + end if + lin_sp = 0.025 + space_lines = (dim_lines + 1) * lin_sp + + if (place.eq."bottom") + top_line = 0.20 + end if + if (place.eq."middle") + top_line = 0.42 + end if + if (place.eq."top") + top_line = 0.99 + end if + if ((place.ne."bottom").and.(place.ne."middle").and.(place.ne."top")) then + top_line = tofloat(place) + end if + bot_line = top_line-space_lines + edge_x = (/ 0.12, 0.92, 0.92, 0.12, 0.12/) + edge_y = (/space_lines+bot_line, space_lines+bot_line, bot_line, \ + bot_line, space_lines+bot_line/) + edge_res = True + edge_res@gsLineColor = "white" + gsn_polyline_ndc(wks, edge_x, edge_y, edge_res) + + dim_lb = dimsizes(model) + + gs1res = True + tx1res = True + tx1res@txFontHeightF = lin_sp / 5 * 2 + + xleg = new((/3 * dim_lines, 4/), "float") + xl = new((/3, 4/), "float") + + do i = 0, 2 + xl(0, :) = fspan((edge_x(0) + 0.02), (edge_x(0) + 0.07), 4) + xl(1, :) = fspan(((edge_x(2) + edge_x(0)) / 2 - 0.09), \ + ((edge_x(2) + edge_x(0)) / 2 - 0.04), 4) + xl(2, :) = fspan((edge_x(2) - 0.20), (edge_x(2) - 0.15), 4) + end do + + nt = 0 + do j = 0, dim_lines - 1 + do i = 0, 2 + xleg(nt, :) = (/xl(i, :)/) + nt = nt + 1 + end do + end do + + yleg = new((/3 * dim_lines, 4/), "float") + yl = new(dim_lines, "float") + + do i = 0, dim_lines - 1 + yl(dim_lines - 1 - i) = edge_y(3) + \ + (((edge_y(0) - (edge_y(3))) / dim_lines) * (i + 1)) - (lin_sp) + end do + + nt = 0 + do j = 0, dim_lines - 1 + do i = 0, 2 + yleg(nt, :) = (/yl(j)/) + nt = nt + 1 + end do + end do + + xtxt = new((/dim_lines * 3/), "float") + ytxt = new((/dim_lines * 3/), "float") + + nt = 0 + do j = 0, dim_lines - 1 + do i = 0, 2 + xtxt(nt) = xl(i, 3) + lin_sp / 5. + nt = nt + 1 + end do + end do + nt = 0 + do i = 0, dim_lines - 1 + do j = 0, 2 + ytxt(nt) = (/yl(i)/) + nt = nt + 1 + end do + end do + + do i = 0, (dimsizes(model) - 1) + gs1res@gsLineColor = colors(i) + gs1res@gsLineDashPattern = dashs(i) + gs1res@gsLineThicknessF = ticknesses(i) + tx1res@txFontColor = colors(i) + tx1res@txJust = "CenterLeft" + + if (scatters(i).eq."Markers") + gs1res@gsMarkerColor = colors(i) + gs1res@gsMarkerIndex = dashs(i) + gs1res@gsMarkerSizeF = 0.01 + gs1res@gsMarkerThicknessF = 1.5 + gsn_polymarker_ndc(wks, xleg(i, 2), yleg(i, 2), gs1res) + else + gsn_polyline_ndc(wks, xleg(i, :), yleg(i, :), gs1res) + end if + gsn_text_ndc(wks, model(i), xtxt(i), ytxt(i), tx1res) + end do + +end + +; ############################################################################# +undef("calcRegCoeffs") +function calcRegCoeffs(y:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local y, d_y, d_t, ma, x, funcx, pi, t, a +begin + d_y = dimsizes(y) + d_t = d_y(0) + + ma = 14 + x = fspan(1, d_t, d_t) + a = new((/ma/), typeof(y)) + + funcx = new((/ma, d_t/), "float") + pi = 4.0 * atan(1.0) + t = 2 * pi * (x - 0.5) / 12 + + funcx(0, :) = 1 + funcx(1, :) = sin(t) + funcx(2, :) = cos(t) + funcx(3, :) = sin(2 * t) + funcx(4, :) = cos(2 * t) + funcx(5, :) = sin(3 * t) + funcx(6, :) = cos(3 * t) + funcx(7, :) = sin(4 * t) + funcx(8, :) = cos(4 * t) + funcx(9, :) = x + funcx(10, :) = sin(t) * x + funcx(11, :) = cos(t) * x + funcx(12, :) = sin(2 * t) * x + funcx(13, :) = cos(2 * t) * x + + a(:) = reg_multlin(y(:), funcx, False) + a@_FillValue = 1e20 + delete_VarAtts(a, "constant") + + a@long_name = "Coefficients A and B" + a!0 = "number of coefficients" + + return(a) + +end + +; ########################################################################### +undef("genZonalMeans") +function genZonalMeans(x:numeric, + lat:numeric, + startLat:numeric, + endLat:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, ntim, nlat, nzone, z, t, i, j, cnt, idx_st, idx_ed, xZonMean +begin + dimx = dimsizes(x) + ntim = dimx(0) + nlat = dimx(1) + nlon = dimx(2) + nzone = dimsizes(startLat) + + nmos = 12 + modCheck("genZonalMeans", ntim, nmos) + + xZonMean = new((/ntim, nzone/), typeof(x)) + + pi = 4. * atan(1.0) + rad = (pi / 180.) + + ; loop through lat_band + do t = 0, (ntim-1) + do z = 0, (nzone-1) + idx_st = 0 + do while (lat(idx_st).lt.startLat(z)) + idx_st = idx_st + 1 + end do + idx_ed = nlat - 1 + do while (lat(idx_ed).gt.endLat(z)) + idx_ed = idx_ed - 1 + end do + + zoneTotalX = 0.0 + ZoneTotalArea = 0.0 + + do i = idx_st, idx_ed + if (i.eq.idx_st) then + Lat1 = startLat(z) + else + Lat1 = (lat(i) + lat(i - 1))/2 + end if + if (i.eq.idx_ed) then + Lat2 = endLat(z) + else + Lat2 = (lat(i) + lat(i + 1))/2 + end if + lat_slice = x(t, i, :) + idx_lon = ind(.not.ismissing(lat_slice)) + if (.not.all(ismissing(idx_lon))) then + CellArea = abs(sin(Lat1 * rad) - sin(Lat2 * rad)) + zoneTotalX = zoneTotalX + sum(lat_slice) * CellArea + ZoneTotalArea = ZoneTotalArea + dimsizes(idx_lon) * CellArea + end if + delete(idx_lon) + end do + + if (ZoneTotalArea.ne.0) then + xZonMean(t, z) = zoneTotalX / ZoneTotalArea + end if + end do ; loop(z) + end do ; loop(t) + + ; Create an informational attribute: + xZonMean@info = "zonal mean: CCMOzoneModelData.ncl" + + return (xZonMean) + +end + +; ############################################################################# +undef("calcMeanAnnCycleMonthly") +function calcMeanAnnCycleMonthly(RegCoeffAs:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, z, month, t, xMeanAnnCycleMon +begin + dimx = dimsizes(RegCoeffAs) + + pi = 4. * atan(1.0) + + month = fspan(1, 12, 12) + t = 2 * pi * (month - 0.5) / 12.0 + + xMeanAnnCycleMon = new((/12/), "float") + xMeanAnnCycleMon(:) = RegCoeffAs(0) + \ + RegCoeffAs(1) * sin(t) + RegCoeffAs(2) * cos(t) + \ + RegCoeffAs(3) * sin(2 * t) + RegCoeffAs(4) * cos(2 * t) + \ + RegCoeffAs(5) * sin(3 * t) + RegCoeffAs(6) * cos(3 * t) + \ + RegCoeffAs(7) * sin(4 * t) + RegCoeffAs(8) * cos(4 * t) + + ; Create an informational attribute: + xMeanAnnCycleMon@info = "mean annual cycle monthly: CCMOzoneModelData.ncl" + + return(xMeanAnnCycleMon) + +end + +; ############################################################################# +undef("calcMeanAnnCycleAnnual") +function calcMeanAnnCycleAnnual(RegCoeffAs:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, day, t, xMeanAnnCycleDay +begin + + dimx = dimsizes(RegCoeffAs) + + pi = 4. * atan(1.0) + + day = fspan(1, 366, 366) + t = 2 * pi * (day - 0.5) / 366.0 + + xMeanAnnCycleDay = new((/366/), "float") + + xMeanAnnCycleDay(:) = RegCoeffAs(0) + \ + RegCoeffAs(1) * sin(t) + RegCoeffAs(2) * cos(t) + \ + RegCoeffAs(3) * sin(2 * t) + RegCoeffAs(4) * cos(2 * t) + \ + RegCoeffAs(5) * sin(3 * t) + RegCoeffAs(6) * cos(3 * t) + \ + RegCoeffAs(7) * sin(4 * t) + RegCoeffAs(8) * cos(4 * t) + + ; Create an informational attribute: + xMeanAnnCycleDay@info = "mean annual cycle daily: CCMOzoneModelData.ncl" + + return (xMeanAnnCycleDay) + +end + +; ############################################################################# +undef("rmMeanAnnCycle") +procedure rmMeanAnnCycle(x:numeric, + xMeanAnnCycle:numeric, + RegCoeffA1:numeric, + xMonAnom:numeric, + xAnnAnom:numeric) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, ntim, t, i, idx_st, idx_ed, nyr, xdata +begin + dimx = dimsizes(x) + ntim = dimx(0) + + nmos = 12 + modCheck("rmMeanAnnCycle", ntim, nmos) ; error check + + nyr = ntim/nmos + + ; loop through lat_band + do t = 0, (ntim - 1) + mon = mod(t, 12) + xMonAnom(t) = (x(t) - xMeanAnnCycle(mon)) * 100.0 / RegCoeffA1 + end do ; loop(t) + + do t = 0, (nyr - 1) + idx_st = t * 12 + idx_ed = (t + 1) * 12 - 1 + xdata = xMonAnom(idx_st:idx_ed) + if(.not.any(ismissing(xdata))) then + xAnnAnom(t) = avg(xdata) + end if + end do ; loop(t) + + ; Create an informational attribute: + xMonAnom@info = "monthly anomalies: CCMOzoneModelData.ncl" + xAnnAnom@info = "annual anomalies: CCMOzoneModelData.ncl" + +end + +; ############################################################################# +undef("apfiltersmooth") +function apfiltersmooth(xMonAnom:numeric, + filter:numeric, + iterations:integer) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, dimf, ntim, nwin, z, t, i, j, hfw, idx_ed, avgwidth, \ + totalwgt, total, num, minval, finished, data, hold, xSmthMonAnom +begin + dimx = dimsizes(xMonAnom) + ntim = dimx(0) + + nmos = 12 + modCheck("apfiltersmooth", ntim, nmos) ; error check + + dimf = dimsizes(filter) + nwin = dimf(0) + hfw = nwin / 2 + + data = new(nwin, typeof(xMonAnom)) + hold = new(ntim, typeof(xMonAnom)) + xSmthMonAnom = new((/ntim/), typeof(xMonAnom)) + + do i = 1, iterations + + ; Transfer the data to the storage array. + if (i.eq.1) then + hold(:) = xMonAnom(:, z) + else + hold(:) = xSmthMonAnom(:, z) + end if + + ; Fill the data array for the first time. + do j = 1, hfw + data(j - 1) = -999.99 + end do + do j = hfw, (nwin - 1) + data(j) = hold(j - hfw) + end do + idx_ed = nwin-hfw + + ; Process the data array. + do t = 0, (ntim - 1) + if (data(hfw).lt.-999.0) then + xSmthMonAnom(t, z) = -999.99 + else + avgwidth = 0 + totalwgt = filter(hfw) + total = filter(hfw) * data(hfw) + num = 1 + finished = False + do while (.not.finished) + avgwidth = avgwidth + 1 + if ((data(hfw - avgwidth).gt.-999.0).and. \ + (data(hfw + avgwidth).gt.-999.0)) then + totalwgt = totalwgt + filter(hfw - avgwidth) + \ + filter(hfw + avgwidth) + total = total + (filter(hfw - avgwidth) * data(hfw - avgwidth)) + \ + (filter(hfw + avgwidth) * data(hfw + avgwidth)) + num = num+2 + else + finished = True + end if + if (avgwidth.eq.hfw) then + finished = True + end if + end do + if (i.eq.iterations) then + minval = hfw + else + minval = 0 + end if + if (num.gt.minval) then + xSmthMonAnom(t) = total / totalwgt + else + xSmthMonAnom(t) = -999.99 + end if + end if + + do j = 1, (nwin - 1) + data(j - 1) = data(j) + end do + idx_ed = idx_ed + 1 + if (idx_ed.gt.ntim) then + data(nwin - 1) = -999.99 + else + data(nwin - 1) = hold(idx_ed - 1) + end if + end do ; loop(t) + end do ; loop(i) + + ; Create an informational attribute: + xSmthMonAnom@info = "smoothed monthly anomalies: CCMOzoneModelData.ncl" + xSmthMonAnom@_FillValue = -999.99 + + return (xSmthMonAnom) + +end + +; ############################################################################# +undef("smoothAnomalies") +procedure smoothAnomalies(xAnnAnom:numeric, + iterations:integer) +; +; Arguments +; +; +; Return value +; +; +; Description +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dimx, dimf, ntim, nset, nwin, s, t, i, j, hfw, idx_ed, avgwidth, \ + totalwgt, total, num, minval, finished, smthdata, hold, buffer, filter, \ + method +begin + + filter = (/1., 2., 1./) + method = "EdgeP" + + dimx = dimsizes(xAnnAnom) + ntim = dimx(0) + + dimf = dimsizes(filter) + nwin = dimf(0) + hfw = nwin/2 + + buffer = new(nwin, typeof(xAnnAnom)) + smthdata = new(ntim, typeof(xAnnAnom)) + hold = new(ntim, typeof(xAnnAnom)) + + do i = 1, iterations + ; Transfer the data to the storage array. + if (i.eq.1) then + hold = (/xAnnAnom/) + else + hold = (/smthdata/) + end if + + ; Fill the data array for the first time. + do j = 1, hfw + buffer(j - 1) = -999.99 + end do + do j = hfw, (nwin - 1) + buffer(j) = (/hold(j - hfw)/) + end do + idx_ed = nwin - hfw + + ; Process the data array. + do t = 0, (ntim - 1) + if (buffer(hfw).lt.-999.0) then + smthdata(t) = -999.99 + else + avgwidth = 0 + totalwgt = filter(hfw) + total = filter(hfw) * buffer(hfw) + num = 1 + finished = False + do while (.not.finished) + avgwidth = avgwidth + 1 + if ((buffer(hfw - avgwidth).gt.-999.0) .and. \ + (buffer(hfw + avgwidth).gt.-999.0)) then + totalwgt = \ + totalwgt + filter(hfw - avgwidth) + filter(hfw + avgwidth) + total = \ + total + (filter(hfw - avgwidth) * buffer(hfw - avgwidth)) + \ + (filter(hfw + avgwidth) * buffer(hfw + avgwidth)) + num = num + 2 + else + finished = True + end if + if (avgwidth.eq.hfw) then + finished = True + end if + end do + + if (method.eq."EdgeP") then + if (num.eq.1) then + if (buffer(hfw + 1).lt.-999.0) then + smthdata(t) = (buffer(hfw) + buffer(hfw - 1)) / 2.0 + else + smthdata(t) = (buffer(hfw) + buffer(hfw + 1)) / 2.0 + end if + else + smthdata(t) = total / totalwgt + end if + else + if (i.eq.iterations) then + minval = hfw + else + minval = 0 + end if + if (num.gt.minval) then + smthdata(t) = total / totalwgt + else + smthdata(t) = -999.99 + end if + end if ; if(method) + end if + do j = 1, (nwin - 1) + buffer(j-1) = buffer(j) + end do + idx_ed = idx_ed+1 + if (idx_ed.gt.ntim) then + buffer(nwin-1) = -999.99 + else + buffer(nwin-1) = hold(idx_ed-1) + end if + end do ; loop(t) + end do ; loop(i) + xAnnAnom(:) = (/smthdata(:)/) + + ; Create an informational attribute: + xAnnAnom@info = "smoothed annual anomalies: CCMOzoneModelData.ncl" + xAnnAnom@_FillValue = -999.99 + +end + + +; ############################################################################# +undef("clmMon2clmDayn") +function clmMon2clmDayn(x:numeric, + retOrder:integer, + opt:integer) +; +; Arguments +; +; +; Return value +; +; +; Description +; Take a monthly climatology and make a daily climatology +; +; +; Caveats +; +; Modification history +; 20190605-A_righ_ma: ported from v1. +; +local dNames, dimx, rank, X, midMon, day +begin + if (.not.(retOrder.eq.0 .or. retOrder.eq.1)) then + print("clmMon2clmDay: retOrder must be 0 or 1, retOrder=" + retOrder) + exit + end if + + dNames = getvardims(x) + if (any(ismissing(dNames))) then + print("clmMon2clmDay: named dimensions required:" + dNames) + exit + end if + + dimx = dimsizes(x) + if (dimx(0).ne.12) then + print("clmMon2clmDay: leftmost dimension must be size=12: SIZE=" + dimx(0)) + exit + end if + + rank = dimsizes(dimx) + if (rank.gt.4) then + print("clmMon2clmDay: currently max of 4 dimension supported: rank=" + \ + rank) + exit + end if + + ; transfer to work array, if necessary, reorder array + if (rank.eq.1) then + X = x + end if + if (rank.eq.2) then + X = x($dNames(1)$|:, $dNames(0)$|:) + end if + if (rank.eq.3) + X = x($dNames(1)$|:, $dNames(2)$|:, $dNames(0)$|:) + end if + if (rank.eq.4) + X = x($dNames(1)$|:, $dNames(2)$|:, $dNames(3)$|:, $dNames(0)$|:) + end if + + ; mid day of each month + if (isatt(opt, "midmon")) then + if (dimsizes(opt@midMon).eq.12) then + midMon = opt@midMon + else + print("clmMon2clmDay: midMon required to be size 12: size=" + \ + dimsizes(opt@midMon)) + exit + end if + else + midMon = (/15.5, 45, 74.5, 105, 135.5, 166, 196.5, \ + 227.5, 258, 288.5, 319, 349.5/) + end if + midMon@long_name = "middle of month" + + day = ispan(0, 364, 1) ; use 0 => 364 for interpolation + day!0 = "day" + + Z = linint1_Wrap(midMon, X, True, day, 0) + Z@info = "NCL: clmMon2clmDay" + + day = ispan(1, 365, 1) ; use 1 => 365 for coord variable + day@long_name = "day of year: no leap" + day@units = "1=Jan 1, 32=Feb 1, ..., 365-Dec 31" + Z!(rank-1) = "day" + Z&day = day + + if (retOrder.eq.1) then + return(Z) + end if + + if (retOrder.eq.0) then + if (rank.eq.1) then + return(Z) + end if + if (rank.eq.2) then + return(Z(day|:, $dNames(1)$|:)) + end if + if (rank.eq.3) then + return(Z(day|:, $dNames(1)$|:, $dNames(2)$|:)) + end if + if (rank.eq.4) then + return(Z(day|:, $dNames(1)$|:, $dNames(2)$|:, $dNames(3)$|:)) + end if + end if + +end diff --git a/esmvaltool/diag_scripts/shared/plot/misc_function.ncl b/esmvaltool/diag_scripts/shared/plot/misc_function.ncl deleted file mode 100755 index a12c240fa6..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/misc_function.ncl +++ /dev/null @@ -1,775 +0,0 @@ -; ############################################################################# -; MISCELLANEOUS FUNCTIONS PORTED FROM THE CCMvalTool -; ############################################################################# -; Please consider using of extending existing routines before adding new ones. -; Check the header of each routine for documentation. -; -; Contents: -; function month_sel -; function lat_names -; procedure add_line -; procedure add_scatt -; procedure add_legenda -; -; ############################################################################# - -; ############################################################################# -undef("month_sel") -function month_sel(month_names:string) -local month_names, month_n -begin - - if (.not.any(ismissing(ind(month_names.eq."ANN")))) then - month_n = new(12, "integer") - month_n = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12/) - else - month_n = new(dimsizes(month_names), "integer") - do i = 0, dimsizes(month_names)-1 - if (.not.ismissing(ind(month_names(i).eq."JAN"))) then - month_n(i) = 1 - end if - if (.not.ismissing(ind(month_names(i).eq."FEB"))) then - month_n(i) = 2 - end if - if (.not.ismissing(ind(month_names(i).eq."MAR"))) then - month_n(i) = 3 - end if - if (.not.ismissing(ind(month_names(i).eq."APR"))) then - month_n(i) = 4 - end if - if (.not.ismissing(ind(month_names(i).eq."MAY"))) then - month_n(i) = 5 - end if - if (.not.ismissing(ind(month_names(i).eq."JUN"))) then - month_n(i) = 6 - end if - if (.not.ismissing(ind(month_names(i).eq."JUL"))) then - month_n(i) = 7 - end if - if (.not.ismissing(ind(month_names(i).eq."AUG"))) then - month_n(i) = 8 - end if - if (.not.ismissing(ind(month_names(i).eq."SEP"))) then - month_n(i) = 9 - end if - if (.not.ismissing(ind(month_names(i).eq."OCT"))) then - month_n(i) = 10 - end if - if (.not.ismissing(ind(month_names(i).eq."NOV"))) then - month_n(i) = 11 - end if - if (.not.ismissing(ind(month_names(i).eq."DEC"))) then - month_n(i) = 12 - end if - end do - end if - - return(month_n) - -end - -; ############################################################################# - -undef("lat_names") -function lat_names(lat_val:numeric) -local lat_name, lat_val -begin - - lat_name = new((/dimsizes(lat_val)/), "string") - do i = 0, dimsizes(lat_val) - 1 - if (lat_val(i).gt.0.) then - lat_name(i) = lat_val(i) + "N" - end if - if (lat_val(i).eq.0.) then - lat_name(i) = "Equator" - end if - if (lat_val(i).lt.0.) then - lat_name(i) = -lat_val(i) + "S" - end if - end do - - return (lat_name) - -end - -; ############################################################################# - -undef("add_line") -procedure add_line(wks, plot, x, yval, line_color, line_dash) -local plres, str, y, plot, x, yval, line_color, line_dash -begin - - ; gsn_add_polyline crashes if the arrays x and/or yval contain - ; only missing values - if (all(ismissing(x)).or.all(ismissing(yval))) then - return - end if - - plres = True - plres@gsLineColor = line_color - plres@gsLineDashPattern = line_dash - plres@gsLineThicknessF = 2.5 - str = unique_string("polyline") - plot@$str$ = gsn_add_polyline(wks, plot, x, yval, plres) - -end - -; ############################################################################# - -undef("add_scatt") -procedure add_scatt(wks, plot, x, yval, mark_color, mark_ind) -local plres, str, y, plot, x, yval, line_color, line_dash -begin - - plres = True - plres@gsMarkerColor = mark_color - plres@gsMarkerIndex = mark_ind - str = unique_string("polymarker") - plot@$str$ = gsn_add_polymarker(wks, plot, x, yval, plres) - -end - -; ############################################################################# -undef("add_legenda") -procedure add_legenda(wks, - MODEL:string, - colors:string, - dashs:numeric, - scatters:string, - ticknesses:numeric, - place:string) -local MODEL, dim_mod, colors, dashs, edge_x, edge_y, edge_res, tx1res, \ - dim_lb, xleg, xl, yleg, yl, xtxt, ytxt, place, dim_lines, space_lines, \ - lin_sp, scatters, ticknesses -begin - - dim_mod = dimsizes(MODEL) - dim_lines = floattoint(dim_mod / 3)+1 - if ((mod(dim_mod, 3)).eq.0) then - dim_lines = floattoint(dim_mod /3) + 1 - else - dim_lines = floattoint(dim_mod / 3) + 2 - end if - lin_sp = 0.025 - space_lines = (dim_lines + 1) * lin_sp - - if (place.eq."bottom") - top_line = 0.20 - end if - if (place.eq."middle") - top_line = 0.42 - end if - if (place.eq."top") - top_line = 0.99 - end if - if ((place.ne."bottom").and.(place.ne."middle").and.(place.ne."top")) then - top_line = tofloat(place) - end if - bot_line = top_line-space_lines - edge_x = (/ 0.12, 0.92, 0.92, 0.12, 0.12/) - edge_y = (/space_lines+bot_line, space_lines+bot_line, bot_line, \ - bot_line, space_lines+bot_line/) - edge_res = True - edge_res@gsLineColor = "white" - gsn_polyline_ndc(wks, edge_x, edge_y, edge_res) - - dim_lb = dimsizes(MODEL) - - gs1res = True - tx1res = True - tx1res@txFontHeightF = lin_sp / 5 * 2 - - xleg = new((/3 * dim_lines, 4/), "float") - xl = new((/3, 4/), "float") - - do i = 0, 2 - xl(0, :) = fspan((edge_x(0) + 0.02), (edge_x(0) + 0.07), 4) - xl(1, :) = fspan(((edge_x(2) + edge_x(0)) / 2 - 0.09), \ - ((edge_x(2) + edge_x(0)) / 2 - 0.04), 4) - xl(2, :) = fspan((edge_x(2) - 0.20), (edge_x(2) - 0.15), 4) - end do - - nt = 0 - do j = 0, dim_lines - 1 - do i = 0, 2 - xleg(nt, :) = (/xl(i, :)/) - nt = nt + 1 - end do - end do - - yleg = new((/3 * dim_lines, 4/), "float") - yl = new(dim_lines, "float") - - do i = 0, dim_lines - 1 - yl(dim_lines - 1 - i) = edge_y(3) + \ - (((edge_y(0) - (edge_y(3))) / dim_lines) * (i + 1)) - (lin_sp) - end do - - nt = 0 - do j = 0, dim_lines - 1 - do i = 0, 2 - yleg(nt, :) = (/yl(j)/) - nt = nt + 1 - end do - end do - - xtxt = new((/dim_lines * 3/), "float") - ytxt = new((/dim_lines * 3/), "float") - - nt = 0 - do j = 0, dim_lines - 1 - do i = 0, 2 - xtxt(nt) = xl(i, 3) + lin_sp / 5. - nt = nt + 1 - end do - end do - nt = 0 - do i = 0, dim_lines - 1 - do j = 0, 2 - ytxt(nt) = (/yl(i)/) - nt = nt + 1 - end do - end do - - do i = 0, (dimsizes(MODEL) - 1) - gs1res@gsLineColor = colors(i) - gs1res@gsLineDashPattern = dashs(i) - gs1res@gsLineThicknessF = ticknesses(i) - tx1res@txFontColor = colors(i) - tx1res@txJust = "CenterLeft" - - if (scatters(i).eq."Markers") - gs1res@gsMarkerColor = colors(i) - gs1res@gsMarkerIndex = dashs(i) - gs1res@gsMarkerSizeF = 0.01 - gs1res@gsMarkerThicknessF = 1.5 - gsn_polymarker_ndc(wks, xleg(i, 2), yleg(i, 2), gs1res) - else - gsn_polyline_ndc(wks, xleg(i, :), yleg(i, :), gs1res) - end if - gsn_text_ndc(wks, MODEL(i), xtxt(i), ytxt(i), tx1res) - end do - -end - -; ############################################################################# - -undef("calcRegCoeffs") -function calcRegCoeffs(y:numeric) -local y, d_y, d_t, ma, x, funcx, pi, t, a -begin - d_y = dimsizes(y) - d_t = d_y(0) - - ma = 14 - x = fspan(1, d_t, d_t) - a = new((/ma/), typeof(y)) - - funcx = new((/ma, d_t/), "float") - pi = 4.0 * atan(1.0) - t = 2 * pi * (x - 0.5) / 12 - - funcx(0, :) = 1 - funcx(1, :) = sin(t) - funcx(2, :) = cos(t) - funcx(3, :) = sin(2 * t) - funcx(4, :) = cos(2 * t) - funcx(5, :) = sin(3 * t) - funcx(6, :) = cos(3 * t) - funcx(7, :) = sin(4 * t) - funcx(8, :) = cos(4 * t) - funcx(9, :) = x - funcx(10, :) = sin(t) * x - funcx(11, :) = cos(t) * x - funcx(12, :) = sin(2 * t) * x - funcx(13, :) = cos(2 * t) * x - - a(:) = reg_multlin(y(:), funcx, False) - a@_FillValue = 1e20 - delete_VarAtts(a, "constant") - - a@long_name = "Coefficients A and B" - a!0 = "number of coefficients" - - return(a) - -end - -; ########################################################################### - -undef("genZonalMeans") -function genZonalMeans(x:numeric, - lat:numeric, - startLat:numeric, - endLat:numeric) -local dimx, ntim, nlat, nzone, z, t, i, j, cnt, idx_st, idx_ed, xZonMean -begin - dimx = dimsizes(x) - ntim = dimx(0) - nlat = dimx(1) - nlon = dimx(2) - nzone = dimsizes(startLat) - - nmos = 12 - modCheck("genZonalMeans", ntim, nmos) - - xZonMean = new((/ntim, nzone/), typeof(x)) - - pi = 4. * atan(1.0) - rad = (pi / 180.) - - ; loop through lat_band - do t = 0, (ntim-1) - do z = 0, (nzone-1) - idx_st = 0 - do while (lat(idx_st).lt.startLat(z)) - idx_st = idx_st + 1 - end do - idx_ed = nlat - 1 - do while (lat(idx_ed).gt.endLat(z)) - idx_ed = idx_ed - 1 - end do - - zoneTotalX = 0.0 - ZoneTotalArea = 0.0 - - do i = idx_st, idx_ed - if (i.eq.idx_st) then - Lat1 = startLat(z) - else - Lat1 = (lat(i) + lat(i - 1))/2 - end if - if (i.eq.idx_ed) then - Lat2 = endLat(z) - else - Lat2 = (lat(i) + lat(i + 1))/2 - end if - lat_slice = x(t, i, :) - idx_lon = ind(.not.ismissing(lat_slice)) - if (.not.all(ismissing(idx_lon))) then - CellArea = abs(sin(Lat1 * rad) - sin(Lat2 * rad)) - zoneTotalX = zoneTotalX + sum(lat_slice) * CellArea - ZoneTotalArea = ZoneTotalArea + dimsizes(idx_lon) * CellArea - end if - delete(idx_lon) - end do - - if (ZoneTotalArea.ne.0) then - xZonMean(t, z) = zoneTotalX / ZoneTotalArea - end if - end do ; loop(z) - end do ; loop(t) - - ; Create an informational attribute: - xZonMean@info = "zonal mean: CCMOzoneModelData.ncl" - - return (xZonMean) - -end - -; ############################################################################# - -undef("calcMeanAnnCycleMonthly") -function calcMeanAnnCycleMonthly(RegCoeffAs:numeric) -local dimx, z, month, t, xMeanAnnCycleMon -begin - dimx = dimsizes(RegCoeffAs) - - pi = 4. * atan(1.0) - - month = fspan(1, 12, 12) - t = 2 * pi * (month - 0.5) / 12.0 - - xMeanAnnCycleMon = new((/12/), "float") - xMeanAnnCycleMon(:) = RegCoeffAs(0) + \ - RegCoeffAs(1) * sin(t) + RegCoeffAs(2) * cos(t) + \ - RegCoeffAs(3) * sin(2 * t) + RegCoeffAs(4) * cos(2 * t) + \ - RegCoeffAs(5) * sin(3 * t) + RegCoeffAs(6) * cos(3 * t) + \ - RegCoeffAs(7) * sin(4 * t) + RegCoeffAs(8) * cos(4 * t) - - ; Create an informational attribute: - xMeanAnnCycleMon@info = "mean annual cycle monthly: CCMOzoneModelData.ncl" - - return(xMeanAnnCycleMon) - -end - -; ############################################################################# - -undef("calcMeanAnnCycleAnnual") -function calcMeanAnnCycleAnnual(RegCoeffAs:numeric) -local dimx, day, t, xMeanAnnCycleDay -begin - - dimx = dimsizes(RegCoeffAs) - - pi = 4. * atan(1.0) - - day = fspan(1, 366, 366) - t = 2 * pi * (day - 0.5) / 366.0 - - xMeanAnnCycleDay = new((/366/), "float") - - xMeanAnnCycleDay(:) = RegCoeffAs(0) + \ - RegCoeffAs(1) * sin(t) + RegCoeffAs(2) * cos(t) + \ - RegCoeffAs(3) * sin(2 * t) + RegCoeffAs(4) * cos(2 * t) + \ - RegCoeffAs(5) * sin(3 * t) + RegCoeffAs(6) * cos(3 * t) + \ - RegCoeffAs(7) * sin(4 * t) + RegCoeffAs(8) * cos(4 * t) - - ; Create an informational attribute: - xMeanAnnCycleDay@info = "mean annual cycle daily: CCMOzoneModelData.ncl" - - return (xMeanAnnCycleDay) - -end - -; ############################################################################# - -undef("rmMeanAnnCycle") -procedure rmMeanAnnCycle(x:numeric, - xMeanAnnCycle:numeric, - RegCoeffA1:numeric, - xMonAnom:numeric, - xAnnAnom:numeric) -local dimx, ntim, t, i, idx_st, idx_ed, nyr, xdata -begin - dimx = dimsizes(x) - ntim = dimx(0) - - nmos = 12 - modCheck("rmMeanAnnCycle", ntim, nmos) ; error check - - nyr = ntim/nmos - - ; loop through lat_band - do t = 0, (ntim - 1) - mon = mod(t, 12) - xMonAnom(t) = (x(t) - xMeanAnnCycle(mon)) * 100.0 / RegCoeffA1 - end do ; loop(t) - - do t = 0, (nyr - 1) - idx_st = t * 12 - idx_ed = (t + 1) * 12 - 1 - xdata = xMonAnom(idx_st:idx_ed) - if(.not.any(ismissing(xdata))) then - xAnnAnom(t) = avg(xdata) - end if - end do ; loop(t) - - ; Create an informational attribute: - xMonAnom@info = "monthly anomalies: CCMOzoneModelData.ncl" - xAnnAnom@info = "annual anomalies: CCMOzoneModelData.ncl" - -end - -; ############################################################################# - -undef("apfiltersmooth") -function apfiltersmooth(xMonAnom:numeric, - filter:numeric, - iterations:integer) -local dimx, dimf, ntim, nwin, z, t, i, j, hfw, idx_ed, avgwidth, \ - totalwgt, total, num, minval, finished, data, hold, xSmthMonAnom -begin - dimx = dimsizes(xMonAnom) - ntim = dimx(0) - - nmos = 12 - modCheck("apfiltersmooth", ntim, nmos) ; error check - - dimf = dimsizes(filter) - nwin = dimf(0) - hfw = nwin / 2 - - data = new(nwin, typeof(xMonAnom)) - hold = new(ntim, typeof(xMonAnom)) - xSmthMonAnom = new((/ntim/), typeof(xMonAnom)) - - do i = 1, iterations - - ; Transfer the data to the storage array. - if (i.eq.1) then - hold(:) = xMonAnom(:, z) - else - hold(:) = xSmthMonAnom(:, z) - end if - - ; Fill the data array for the first time. - do j = 1, hfw - data(j - 1) = -999.99 - end do - do j = hfw, (nwin - 1) - data(j) = hold(j - hfw) - end do - idx_ed = nwin-hfw - - ; Process the data array. - do t = 0, (ntim - 1) - if (data(hfw).lt.-999.0) then - xSmthMonAnom(t, z) = -999.99 - else - avgwidth = 0 - totalwgt = filter(hfw) - total = filter(hfw) * data(hfw) - num = 1 - finished = False - do while (.not.finished) - avgwidth = avgwidth + 1 - if ((data(hfw - avgwidth).gt.-999.0).and. \ - (data(hfw + avgwidth).gt.-999.0)) then - totalwgt = totalwgt + filter(hfw - avgwidth) + \ - filter(hfw + avgwidth) - total = total + (filter(hfw - avgwidth) * data(hfw - avgwidth)) + \ - (filter(hfw + avgwidth) * data(hfw + avgwidth)) - num = num+2 - else - finished = True - end if - if (avgwidth.eq.hfw) then - finished = True - end if - end do - if (i.eq.iterations) then - minval = hfw - else - minval = 0 - end if - if (num.gt.minval) then - xSmthMonAnom(t) = total / totalwgt - else - xSmthMonAnom(t) = -999.99 - end if - end if - - do j = 1, (nwin - 1) - data(j - 1) = data(j) - end do - idx_ed = idx_ed + 1 - if (idx_ed.gt.ntim) then - data(nwin - 1) = -999.99 - else - data(nwin - 1) = hold(idx_ed - 1) - end if - end do ; loop(t) - end do ; loop(i) - - ; Create an informational attribute: - xSmthMonAnom@info = "smoothed monthly anomalies: CCMOzoneModelData.ncl" - xSmthMonAnom@_FillValue = -999.99 - - return (xSmthMonAnom) - -end - -; ############################################################################# - -undef("smoothAnomalies") -procedure smoothAnomalies(xAnnAnom:numeric, - iterations:integer) -local dimx, dimf, ntim, nset, nwin, s, t, i, j, hfw, idx_ed, avgwidth, \ - totalwgt, total, num, minval, finished, smthdata, hold, buffer, filter, \ - method -begin - - filter = (/1., 2., 1./) - method = "EdgeP" - - dimx = dimsizes(xAnnAnom) - ntim = dimx(0) - - dimf = dimsizes(filter) - nwin = dimf(0) - hfw = nwin/2 - - buffer = new(nwin, typeof(xAnnAnom)) - smthdata = new(ntim, typeof(xAnnAnom)) - hold = new(ntim, typeof(xAnnAnom)) - - do i = 1, iterations - ; Transfer the data to the storage array. - if (i.eq.1) then - hold = (/xAnnAnom/) - else - hold = (/smthdata/) - end if - - ; Fill the data array for the first time. - do j = 1, hfw - buffer(j - 1) = -999.99 - end do - do j = hfw, (nwin - 1) - buffer(j) = (/hold(j - hfw)/) - end do - idx_ed = nwin - hfw - - ; Process the data array. - do t = 0, (ntim - 1) - if (buffer(hfw).lt.-999.0) then - smthdata(t) = -999.99 - else - avgwidth = 0 - totalwgt = filter(hfw) - total = filter(hfw) * buffer(hfw) - num = 1 - finished = False - do while (.not.finished) - avgwidth = avgwidth + 1 - if ((buffer(hfw - avgwidth).gt.-999.0) .and. \ - (buffer(hfw + avgwidth).gt.-999.0)) then - totalwgt = \ - totalwgt + filter(hfw - avgwidth) + filter(hfw + avgwidth) - total = \ - total + (filter(hfw - avgwidth) * buffer(hfw - avgwidth)) + \ - (filter(hfw + avgwidth) * buffer(hfw + avgwidth)) - num = num + 2 - else - finished = True - end if - if (avgwidth.eq.hfw) then - finished = True - end if - end do - - if (method.eq."EdgeP") then - if (num.eq.1) then - if (buffer(hfw + 1).lt.-999.0) then - smthdata(t) = (buffer(hfw) + buffer(hfw - 1)) / 2.0 - else - smthdata(t) = (buffer(hfw) + buffer(hfw + 1)) / 2.0 - end if - else - smthdata(t) = total / totalwgt - end if - else - if (i.eq.iterations) then - minval = hfw - else - minval = 0 - end if - if (num.gt.minval) then - smthdata(t) = total / totalwgt - else - smthdata(t) = -999.99 - end if - end if ; if(method) - end if - do j = 1, (nwin - 1) - buffer(j-1) = buffer(j) - end do - idx_ed = idx_ed+1 - if (idx_ed.gt.ntim) then - buffer(nwin-1) = -999.99 - else - buffer(nwin-1) = hold(idx_ed-1) - end if - end do ; loop(t) - end do ; loop(i) - xAnnAnom(:) = (/smthdata(:)/) - - ; Create an informational attribute: - xAnnAnom@info = "smoothed annual anomalies: CCMOzoneModelData.ncl" - xAnnAnom@_FillValue = -999.99 - -end - - -; ############################################################################# -; -; D. Shea -; Take a monthly climatology and make a daily climatology -; Current for gregorian / standard year. -; -; Supported: leftmost dimension must be 12 -; x(12), x(12, N), x(12, N1, N2), x(12, N1, N2, N3) -; x must have named dimensions on entry -; opt - not used set to zero [0] -; -undef("clmMon2clmDayn") -function clmMon2clmDayn(x:numeric, retOrder:integer, opt:integer) -local dNames, dimx, rank, X, midMon, day -begin - if (.not.(retOrder.eq.0 .or. retOrder.eq.1)) then - print("clmMon2clmDay: retOrder must be 0 or 1, retOrder=" + retOrder) - exit - end if - - dNames = getvardims(x) - if (any(ismissing(dNames))) then - print("clmMon2clmDay: named dimensions required:" + dNames) - exit - end if - - dimx = dimsizes(x) - if (dimx(0).ne.12) then - print("clmMon2clmDay: leftmost dimension must be size=12: SIZE=" + dimx(0)) - exit - end if - - rank = dimsizes(dimx) - if (rank.gt.4) then - print("clmMon2clmDay: currently max of 4 dimension supported: rank=" + \ - rank) - exit - end if - - ; transfer to work array, if necessary, reorder array - if (rank.eq.1) then - X = x - end if - if (rank.eq.2) then - X = x($dNames(1)$|:, $dNames(0)$|:) - end if - if (rank.eq.3) - X = x($dNames(1)$|:, $dNames(2)$|:, $dNames(0)$|:) - end if - if (rank.eq.4) - X = x($dNames(1)$|:, $dNames(2)$|:, $dNames(3)$|:, $dNames(0)$|:) - end if - - ; mid day of each month - if (isatt(opt, "midmon")) then - if (dimsizes(opt@midMon).eq.12) then - midMon = opt@midMon - else - print("clmMon2clmDay: midMon required to be size 12: size=" + \ - dimsizes(opt@midMon)) - exit - end if - else - midMon = (/15.5, 45, 74.5, 105, 135.5, 166, 196.5, \ - 227.5, 258, 288.5, 319, 349.5/) - end if - midMon@long_name = "middle of month" - - day = ispan(0, 364, 1) ; use 0 => 364 for interpolation - day!0 = "day" - - Z = linint1_Wrap(midMon, X, True, day, 0) - Z@info = "NCL: clmMon2clmDay" - - day = ispan(1, 365, 1) ; use 1 => 365 for coord variable - day@long_name = "day of year: no leap" - day@units = "1=Jan 1, 32=Feb 1, ..., 365-Dec 31" - Z!(rank-1) = "day" - Z&day = day - - if (retOrder.eq.1) then - return(Z) - end if - - if (retOrder.eq.0) then - if (rank.eq.1) then - return(Z) - end if - if (rank.eq.2) then - return(Z(day|:, $dNames(1)$|:)) - end if - if (rank.eq.3) then - return(Z(day|:, $dNames(1)$|:, $dNames(2)$|:)) - end if - if (rank.eq.4) then - return(Z(day|:, $dNames(1)$|:, $dNames(2)$|:, $dNames(3)$|:)) - end if - end if - -end diff --git a/esmvaltool/diag_scripts/shared/plot/mjo_level1.ncl b/esmvaltool/diag_scripts/shared/plot/mjo_level1.ncl deleted file mode 100644 index 4224f8aaff..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/mjo_level1.ncl +++ /dev/null @@ -1,323 +0,0 @@ -; ############################################################################# -; GENERAL ROUTINES FOR STATISTICS -; ############################################################################# -; Please consider using or extending existing routines before adding new -; ones. -; Check the header of each routine for documentation. -; -; Contents: -; function pr_u850_mean_plot -; function mjo_xcor_lag_plot -; function mjo_pr_ua_vari_plot -; function mjo_unvari_eof_plot -; -; ############################################################################# - -; Temporary file updated by Python on the fly - - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/data_handling.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -load "$diag_scripts/shared/set_operators.ncl" -load "$diag_scripts/shared/statistics.ncl" - -load "$diag_scripts/aux/SAMonsoon/SAMonsoon.ncl" - -undef("pr_u850_mean_plot") -function pr_u850_mean_plot(wks[1]:graphic,\ - mean_pr[*][*] : numeric,\ - mean_ua[*][*] : numeric,\ - di[1] : logical,\ - opt[1] : logical) -; Description: -; Place the 2D-model fields stored in the 'storage_vault' on a set of paneled -; figures. First entry is always the reference data set. The various logcials -; carry switches for the plot routine behaviour. -local res1, res2, plot -begin - ; common resources for global contour plots - res1 = True - res1@gsnDraw = False ; don't draw - res1@gsnFrame = False ; don't advance frame - res1@gsnStringFontHeightF = 0.0125 ; make larger than default - - res1@lbLabelBarOn = False - res1@lbLabelFontHeightF = 0.01 ; make labels larger - res1@pmLabelBarOrthogonalPosF = -0.025 ; move closer to plot - res1@lbLabelAutoStride = True ; optimal label stride - res1@gsnSpreadColors = True ; use full range of colors - res1@mpCenterLonF = 180. ; center plot at 180 - - res1@cnLevelSelectionMode = "ExplicitLevels" ; set explicit contour levels - res1@cnLevels = ispan(2, 13, 1) - - res1@gsnAddCyclic = False - - res1@gsnStringFontHeightF = 0.02 - res1@tmYLLabelFontHeightF = 0.02 - res1@tmXBLabelFontHeightF = 0.02 - - res1@mpMinLonF = di@lonrange_basic(0) ; select a subregion - res1@mpMaxLonF = di@lonrange_basic(1) - res1@mpMinLatF = di@latrange_basic(0) - res1@mpMaxLatF = di@latrange_basic(1) - - res1@mpLandFillColor = "background" ; color of land - res1@cnFillDrawOrder = "Predraw" - - if (isatt(opt, "gsnLeftString")) then - res1@gsnLeftString = opt@gsnLeftString - end if - - if (isatt(opt, "gsnCenterString")) then - res1@gsnCenterString = opt@gsnCenterString - end if - - if (isatt(opt, "gsnRightString")) then - res1@gsnRightString = opt@gsnRightString - end if - - ; ************************************************** - ; resource list for second (contour only) data array - ; ************************************************** - res2 = True - res2@gsnContourZeroLineThicknessF = 2. ; doubles thickness of zero contour - - ; Sets negative contours to dash pattern 1 - res2@gsnContourNegLineDashPattern = 2 - res2@cnLineColor = "Black" ; color of second contours - res2@cnLineThicknessF = 1. - res2@cnLevelSpacingF = 3. ; SST contour spacing - res2@cnInfoLabelOn = False ; do not want - res2@cnLineLabelsOn = True - res2@cnLabelMasking = True - res2@tiMainString = "" - - res2@gsnAddCyclic = False - plot = gsn_csm_contour_map_overlay(wks, mean_pr, mean_ua, res1, res2) - - return(plot) - -end - -; ############################################################################# - -undef("mjo_xcor_lag_plot") -function mjo_xcor_lag_plot(wks[1]:graphic, - ccr_a[*][*]:numeric, - ccr_b[*][*]:numeric, - opt[1]:logical) -local res1, res2, CCR1, CCR2, plot -begin - res1 = True ; color precip - res1@gsnDraw = False - res1@gsnFrame = False - res1@gsnMaximize = True - res1@gsnPaperOrientation = "portrait" - - res1@cnFillOn = True ; turn on color - res1@cnLinesOn = False - res1@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels - res1@cnMinLevelValF = -1.0 ; set min contour level - res1@cnMaxLevelValF = 1.0 ; set max contour level - res1@cnLevelSpacingF = 0.1 ; set contour spacing - - res1@cnLabelBarEndLabelsOn = True - res1@cnLabelBarEndStyle = "ExcludeOuterBoxes" - res1@cnInfoLabelOn = False - - res1@lbLabelBarOn = False ; turn off individual cb's - res1@vpWidthF = 0.6 ; change aspect ratio of plot - res1@vpHeightF = 0.4 - - res1@tiYAxisString = "lag (days)" - if (isatt(opt, "tiMainString")) then - res1@tiMainString = opt@tiMainString - end if - - if (isatt(opt, "gsnLeftString")) then - res1@gsnLeftString = opt@gsnLeftString - end if - - if (isatt(opt, "gsnCenterString")) then - res1@gsnCenterString = opt@gsnCenterString - end if - - if (isatt(opt, "gsnRightString")) then - res1@gsnRightString = opt@gsnRightString - end if - - ; *********************************** - ; resource list for second data array - ; *********************************** - res2 = True ; U - res2@gsnDraw = False - res2@gsnFrame = False - res2@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels - res2@cnMinLevelValF = -1.0 - res2@cnMaxLevelValF = 1.0 - res2@cnLevelSpacingF = 0.1 - res2@cnLineLabelsOn = True - res2@gsnContourZeroLineThicknessF = 0. ; Eliminate 0 line - res2@gsnContourNegLineDashPattern = 1 ; negative contours dash pattern - res2@cnInfoLabelOn = False - - CCR1 = ccr_a ; possible smooth and delete of attribute - CCR2 = ccr_b - - if (opt .and. isatt(opt, "smth9") .and. abs(opt@smth9).eq.0.25) then - CCR1 = smth9(CCR1, 0.50, opt@smth9, False) - CCR2 = smth9(CCR2, 0.50, opt@smth9, False) - end if - delete(CCR1@long_name) - plot = gsn_csm_contour(wks, CCR1, res1) ; contour the variable - - delete(CCR2@long_name) - plt2 = gsn_csm_contour(wks, CCR2, res2) ; contour the variable - - overlay(plot, plt2) - - delete(CCR1) ; size may change - delete(CCR2) - - return(plot) -end - -; ############################################################################# - -undef("mjo_pr_ua_vari_plot") -function mjo_pr_ua_vari_plot(wks[1]:graphic, - ccr_a[*][*]:numeric, - ccr_b[*][*]:numeric, - opt[1]:logical, - di[1]:logical) -local res1, res2, plot -begin - - ; ****************************************** - ; resource list for first (color) data array - ; ****************************************** - res1 = True - res1@gsnDraw = False ; don't draw - res1@gsnFrame = False ; don't advance frame - - res1@lbLabelBarOn = False - - res1@lbLabelFontHeightF = 0.01 ; make labels larger - res1@pmLabelBarOrthogonalPosF = -0.025 ; move closer to plot - res1@lbLabelAutoStride = True ; optimal label stride - res1@gsnSpreadColors = True ; use full range of colors - res1@mpCenterLonF = 180. ; center plot at 180 - - res1@gsnStringFontHeightF = 0.02 - res1@tmYLLabelFontHeightF = 0.02 - res1@tmXBLabelFontHeightF = 0.02 - - res1@mpMinLonF = di@lonrange_seasonal(0) ; select a subregion - res1@mpMaxLonF = di@lonrange_seasonal(1) - res1@mpMinLatF = di@latrange_seasonal(0) - res1@mpMaxLatF = di@latrange_seasonal(1) - - res1@cnLevelSelectionMode = "ExplicitLevels" ; set explicit contour levels - res1@cnLevels = di@cnLevels_pr_vari - - res1@gsnAddCyclic = False - - res1@mpLandFillColor = "background" ; color of land - res1@cnFillDrawOrder = "Predraw" - - if (isatt(opt, "gsnLeftString")) then - res1@gsnLeftString = opt@gsnLeftString - end if - - if (isatt(opt, "gsnCenterString")) then - res1@gsnCenterString = opt@gsnCenterString - end if - - if (isatt(opt, "gsnRightString")) then - res1@gsnRightString = opt@gsnRightString - end if - - ; ************************************************** - ; resource list for second (contour only) data array - ; ************************************************** - res2 = True - res2@gsnContourZeroLineThicknessF = 2. ; doubles thickness of zero contour - - ; Sets negative contours to dash pattern 1 - res2@gsnContourNegLineDashPattern = 2 - res2@cnLineColor = "Black" ; color of second contours - res2@cnLineThicknessF = 1. - - res2@gsnAddCyclic = False - - res2@cnLevelSpacingF = 3. ; SST contour spacing - res2@cnInfoLabelOn = False ; do not want - res2@cnLineLabelsOn = True - res2@cnLabelMasking = True - res2@tiMainString = "" - - plot = gsn_csm_contour_map_overlay(wks, ccr_a, ccr_b, res1, res2) - return(plot) - -end - -; ############################################################################# - -undef("mjo_unvari_eof_plot") -function mjo_unvari_eof_plot(wks[1]:graphic, - eof[*][*]:numeric, - opt[1]:logical, - di[1]:logical) -local res, lot -begin - - ; EOF patterns - res = True - res@gsnDraw = False ; don't draw yet - res@gsnFrame = False ; don't advance frame yet - res@gsnSpreadColors = True ; spread out color table - res@gsnStringFontHeightF = 0.015 ; make larger than default - - res@mpFillOn = False ; turn off map fill - res@mpMinLatF = di@latrange_eof(0) ; zoom in on map - res@mpMaxLatF = di@latrange_eof(1) - res@mpMinLonF = di@lonrange_eof(0) ; select a subregion - res@mpMaxLonF = di@lonrange_eof(1) - - res@mpCenterLonF = 180. - - res@gsnAddCyclic = False - - res@cnFillOn = True ; turn on color fill - res@cnLinesOn = False ; True is default - res@cnLineLabelsOn = False ; True is default - res@lbLabelBarOn = False ; turn off individual lb's - - res@lbLabelFontHeightF = 0.01 ; make labels larger - - res@cnLevelSelectionMode = "ExplicitLevels" ; set explicit contour levels - res@cnLevels = di@cnLevels - - res@gsnStringFontHeightF = 0.018 - res@tmYLLabelFontHeightF = 0.018 - res@tmXBLabelFontHeightF = 0.018 - - if (isatt(opt, "gsnLeftString")) then - res@gsnLeftString = opt@gsnLeftString - end if - - if (isatt(opt, "gsnCenterString")) then - res@gsnCenterString = opt@gsnCenterString - end if - - if (isatt(opt, "gsnRightString")) then - res@gsnRightString = opt@gsnRightString - end if - - plot = gsn_csm_contour_map_ce(wks, eof(:, :), res) - return(plot) - -end diff --git a/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl b/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl deleted file mode 100644 index 5cc163f5c1..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl +++ /dev/null @@ -1,731 +0,0 @@ - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/data_handling.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -load "$diag_scripts/shared/set_operators.ncl" -load "$diag_scripts/shared/statistics.ncl" - -load "$diag_scripts/aux/SAMonsoon/SAMonsoon.ncl" - -; ############################################################################# -undef("mjo_wave_freq_plot") -function mjo_wave_freq_plot(wks[1]:graphic, - wf[*][*]:numeric, - dummy[*][*]:graphic, - idx_mod[1]:numeric, - opt[1]:logical, - di[1]:logical) -; Description: -; Place the 2D-model fields stored in the 'storage_vault' on a set of paneled -; figures. First entry is always the reference data set. The various logcials -; carry switches for the plot routine behaviour. -local res, NW, fMin, fMax, day1, fline1, day2, fline2, gsres, tres -begin - - ; Set plot setting - res = True ; plot mods desired - res@gsnFrame = False - res@gsnDraw = False - res@cnFillOn = True ; turn on color - res@gsnSpreadColors = True ; use full range of colormap - res@lbLabelAutoStride = True - res@cnLinesOn = False ; no contour lines - res@cnLineLabelsOn = False - res@cnLevelFlags = False - res@cnInfoLabelOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnLevels = (/0.01, 0.015, 0.02, 0.025, 0.03, 0.035, 0.04, 0.05/) - res@lbLabelBarOn = False - res@gsnLeftString = "" - res@gsnRightString = "" - res@tiXAxisString = "" - - gsres = True - gsres@gsLineDashPattern = 11 - - tres = True - tres@txFontHeightF = 0.0175 - - NW = 6 - fMin = -0.05 - fMax = 0.05 - day1 = di@min_days - fline1 = 1. / day1 - day2 = di@max_days - fline2 = 1. / day2 - - if(isatt(opt, "gsnLeftString")) then - res@gsnLeftString = opt@gsnLeftString - end if - if(isatt(opt, "gsnCenterString")) then - res@gsnCenterString = opt@gsnCenterString - end if - if(isatt(opt, "gsnRightString")) then - res@gsnRightString = opt@gsnRightString - end if - - plot = gsn_csm_contour(wks, wf({0:NW}, {fMin:fMax}), res) - - dummy(idx_mod, 0) = gsn_add_polyline(wks,\ - plot,\ - (/fline1, fline1/),\ - (/ 0., NW/),\ - gsres) - - dummy(idx_mod, 1) = gsn_add_text(wks,\ - plot,\ - (day1 + "d"),\ - fline1 + 0.005,\ - 0.93 * NW,\ - tres) - - dummy(idx_mod, 2) = gsn_add_polyline(wks,\ - plot,\ - (/fline2, fline2/),\ - (/ 0., NW/),\ - gsres) - - dummy(idx_mod, 3) = gsn_add_text(wks,\ - plot,\ - (day2 + "d"),\ - fline2 + 0.005,\ - 0.93 * NW,\ - tres) - return(plot) - -end - -; ############################################################################# - -undef("addHorVertLinesCross_extended") -function addHorVertLinesCross_extended(wks[1]:graphic, - plot[1]:graphic, - nw[1], - dumy[*][*]:graphic, - idx_mod[1]:numeric) -; freq [y] axis: Add horizontal lines that explicitly -; print time in days. This assumes the units -; of the freq axis are "cpd" [cycles per day] -local gsres, txres, xx, dely, m, nwl, nwr -begin - - gsres = True - gsres@gsLineDashPattern = 1 - - nwl = -nw + 3.5 ; left - nwr = nw ; right - dumy(idx_mod, 0) = \ - gsn_add_polyline(wks, plot, (/0, 0/), (/0.0, 0.5 /), gsres) - dumy(idx_mod, 1) = \ - gsn_add_polyline(wks, plot, (/nwl, nwr/), (/1. / 80, 1. / 80/), gsres) - dumy(idx_mod, 2) = \ - gsn_add_polyline(wks, plot, (/nwl, nwr/), (/1. / 20, 1. / 20/), gsres) - dumy(idx_mod, 3) = \ - gsn_add_polyline(wks, plot, (/nwl, nwr/), (/1. / 10, 1. / 10/), gsres) - dumy(idx_mod, 4) = \ - gsn_add_polyline(wks, plot, (/nwl, nwr/), (/1. / 5, 1. / 5/), gsres) - dumy(idx_mod, 5) = \ - gsn_add_polyline(wks, plot, (/nwl, nwr/), (/1. / 3, 1. / 3/), gsres) - - txres = True - txres@txJust = "CenterLeft" - txres@txFontHeightF = 0.013 - - xx = -nw + 0.3 - dely = 0.000 ; yy - dumy(idx_mod, 6) = \ - gsn_add_text(wks, plot, "3 days", xx, (1. / 3 + dely), txres) - dumy(idx_mod, 7) = \ - gsn_add_text(wks, plot, "5 days", xx, (1. / 5 + dely), txres) - dumy(idx_mod, 8) = \ - gsn_add_text(wks, plot, "10 days", xx, (1. / 10 + dely), txres) - dumy(idx_mod, 9) = \ - gsn_add_text(wks, plot, "20 days", xx, (1. / 20 + dely), txres) - dumy(idx_mod, 10) = \ - gsn_add_text(wks, plot, "80 days", xx, (1. / 80 + dely), txres) - - return(plot) - -end - -; ############################################################################# - -undef("mjo_cross_spectra_plot") -function mjo_cross_spectra_plot(wks[1]:graphic, - STC[*][*][*]:numeric, - spectraType[1]:string, - dumdcs[*][*]:graphic, - dums[*][*]:graphic, - idx_mod[1]:numeric, - opt[1]:logical) -local res -begin - - res = True ; plot mods desired - res@gsnDraw = False - res@gsnFrame = False - - res@cnFillOn = True ; turn on color - res@cnFillMode = "RasterFill" ; match WMO Clivar - - res@gsnSpreadColors = True ; use full range of colormap - if (opt .and. isatt(opt, "gsnSpreadColorStart")) then - res@gsnSpreadColorStart = opt@gsnSpreadColorStart - end if - - if (opt .and. isatt(opt, "gsnSpreadColorEnd")) then - res@gsnSpreadColorEnd = opt@gsnSpreadColorEnd - end if - - res@cnLinesOn = False - res@cnLineLabelsOn = False - res@cnLevelSelectionMode = "ManualLevels" - res@cnMinLevelValF = 0.05 - res@cnMaxLevelValF = 0.65 ; correlation^2 = 0.8 - res@cnLevelSpacingF = 0.05 - res@cnInfoLabelOn = False - res@lbLabelBarOn = False ; no individual label bars - - if(.not. opt .or. .not. isatt(opt, "pltPhase") .or. opt@pltPhase) then - plotPhase = True - res@vcRefMagnitudeF = 1.0 ; define vector ref mag - res@vcRefLengthF = 0.01 ; define length of vec ref - res@vcRefAnnoOrthogonalPosF = -1.0 ; move ref vector - res@vcRefAnnoArrowLineColor = "black" ; change ref vector color - res@vcMinDistanceF = 0.0075 ; thin out vectors - res@vcMapDirection = False - res@vcRefAnnoOn = False ; do not draw - res@gsnScalarContour = True ; contours desired - else - plotPhase = False - end if - - ; res@gsnLeftString = "Coh^2: Symmetric" - if(isatt(opt, "gsnLeftString")) then - res@gsnLeftString = opt@gsnLeftString - end if - - res@gsnRightString = "10% = " \ - + sprintf("%3.2f", STC@prob_coh2(2))\ - + " 5% = "\ - + sprintf("%3.2f", STC@prob_coh2(4)) - - if (opt .and. isatt(opt, "pltZonalWaveNumber")) then - nWavePlt = opt@pltZonalWaveNumber - else - nWavePlt = 15 ; default - end if - - ; --------------------------------------------------------------- - ; dispersion: curves - ; --------------------------------------------------------------- - rlat = 0.0 - Ahe = (/50., 25., 12./) - nWaveType = 6 - nPlanetaryWave = 50 - nEquivDepth = dimsizes(Ahe) - Apzwn = new((/nWaveType, nEquivDepth, nPlanetaryWave/), "double", 1e20) - Afreq = Apzwn - genDispersionCurves(nWaveType, \ - nEquivDepth, \ - nPlanetaryWave, \ - rlat, \ - Ahe, \ - Afreq, \ - Apzwn) - - ; -------------------------------------------------------------- - ; dispersion curve and text plot resources - ; -------------------------------------------------------------- - dcres = True - dcres@gsLineThicknessF = 2.0 - dcres@gsLineDashPattern = 0 - - txres = True - txres@txPerimOn = True - txres@txFontHeightF = 0.013 - txres@txBackgroundFillColor = "Background" - - ; --------------------------------------------------------------- - ; plot symmetric data - ; --------------------------------------------------------------- - if (spectraType .eq. "Symmetric") then - n = 8 - c2s = STC(n, :, {-nWavePlt:nWavePlt}) - c2s@_FillValue = 1e20 - c2s(0, :) = c2s@_FillValue - c2s = where(c2s .lt. 0.05, c2s@_FillValue, c2s) ; mask - - n = 12 - phs1 = STC(n, :, {-nWavePlt:nWavePlt}) - phs1@long_name = "symmetric phase-1" - phs1@_FillValue = c2s@_FillValue - phs1(0, :) = phs1@_FillValue - phs1 = where(c2s .lt. 0.05, phs1@_FillValue, phs1) ; mask - - n = 14 - phs2 = STC(n, :, {-nWavePlt:nWavePlt}) - phs2@long_name = "symmetric phase-2" - phs2@_FillValue = c2s@_FillValue - phs2(0, :) = phs2@_FillValue - phs2 = where(c2s .lt. 0.05, phs2@_FillValue, phs2) ; mask - - if(opt .and. isatt(opt, "pltProb")) then - np = ind(c2s@prob_coh2 .eq. opt@pltProb) - if(.not. ismissing(np)) then - c2s = where(c2s .lt. STC@prob_coh2(np), c2s@_FillValue, c2s) - phs1 = where(ismissing(c2s), phs1@_FillValue, phs1) - phs2 = where(ismissing(c2s), phs2@_FillValue, phs2) - end if - end if - - if(opt .and. isatt(opt, "coh2Cutoff")) then - c2s = where(c2s .lt. opt@coh2Cutoff, c2s@_FillValue, c2s) - end if - - if(opt .and. isatt(opt, "phaseCutoff")) then - phs1 = where(c2s .lt. opt@phaseCutoff, phs1@_FillValue, phs1) - phs2 = where(c2s .lt. opt@phaseCutoff, phs2@_FillValue, phs2) - end if - - if(opt .and. isatt(opt, "elimIsoVals") .and. .not.opt@elimIsoVals) then - print("mjo_cross_plot: no values eliminated") - else - mjo_elimIsolatedValues(c2s, phs1, phs2, 1) - mjo_elimIsolatedValues(c2s, phs1, phs2, 2) - end if - - if (plotPhase) then - scl_one = sqrt(1. / (phs1 ^ 2 + phs2 ^ 2)) - phs1 = scl_one*phs1 - phs2 = scl_one*phs2 - plot = gsn_csm_vector_scalar(wks, phs1, phs2, c2s, res) - else - plot = gsn_csm_contour(wks, c2s, res) - end if - - plot = addHorVertLinesCross_extended(wks, plot, nWavePlt, dums, idx_mod) - - dumdcs(idx_mod, 0) = \ - gsn_add_polyline(wks, plot, Apzwn(3, 0, :), Afreq(3, 0, :), dcres) - dumdcs(idx_mod, 1) = \ - gsn_add_polyline(wks, plot, Apzwn(3, 1, :), Afreq(3, 1, :), dcres) - dumdcs(idx_mod, 2) = \ - gsn_add_polyline(wks, plot, Apzwn(3, 2, :), Afreq(3, 2, :), dcres) - dumdcs(idx_mod, 3) = \ - gsn_add_polyline(wks, plot, Apzwn(4, 0, :), Afreq(4, 0, :), dcres) - dumdcs(idx_mod, 4) = \ - gsn_add_polyline(wks, plot, Apzwn(4, 1, :), Afreq(4, 1, :), dcres) - dumdcs(idx_mod, 5) = \ - gsn_add_polyline(wks, plot, Apzwn(4, 2, :), Afreq(4, 2, :), dcres) - dumdcs(idx_mod, 6) = \ - gsn_add_polyline(wks, plot, Apzwn(5, 0, :), Afreq(5, 0, :), dcres) - dumdcs(idx_mod, 7) = \ - gsn_add_polyline(wks, plot, Apzwn(5, 1, :), Afreq(5, 1, :), dcres) - dumdcs(idx_mod, 8) = \ - gsn_add_polyline(wks, plot, Apzwn(5, 2, :), Afreq(5, 2, :), dcres) - - dumdcs(idx_mod, 9) = \ - gsn_add_text(wks, plot, "Kelvin", 11.5, .40, txres) - dumdcs(idx_mod, 10) = \ - gsn_add_text(wks, plot, "n = 1 ER", -10.7, .07, txres) - dumdcs(idx_mod, 11) = \ - gsn_add_text(wks, plot, "n = 1 IG", -3.0, .45, txres) - dumdcs(idx_mod, 12) = \ - gsn_add_text(wks, plot, "h = 50", -14.0, .78, txres) - dumdcs(idx_mod, 13) = \ - gsn_add_text(wks, plot, "h = 25", -14.0, .60, txres) - dumdcs(idx_mod, 14) = \ - gsn_add_text(wks, plot, "h = 12", -14.0, .46, txres) - - ; --------------------------------------------------------------- - ; plot asymmetric data - ; --------------------------------------------------------------- - else if(spectraType .eq. "Asymmetric") then - n = 9 - if(isatt(opt, "gsnLeftString")) then - res@gsnLeftString = opt@gsnLeftString - end if - - res@gsnRightString = "10% = " \ - + sprintf("%3.2f", STC@prob_coh2(2)) \ - + " " \ - + " 5% = " \ - + sprintf("%3.2f", STC@prob_coh2(4)) - c2a = STC(n, :, {-nWavePlt:nWavePlt}) - c2a@_FillValue = 1e20 - c2a(0, :) = c2a@_FillValue - c2a = where(c2a .lt. 0.05, c2a@_FillValue, c2a) ; mask - - n = 13 - pha1 = STC(n, :, {-nWavePlt:nWavePlt}) - pha1@long_name = "asymmetric phase-1" - pha1@_FillValue = c2a@_FillValue - pha1(0, :) = pha1@_FillValue - - n = 15 - pha2 = STC(n, :, {-nWavePlt:nWavePlt}) - pha2@long_name = "asymmetric phase-2" - pha2@_FillValue = c2a@_FillValue - pha2(0, :) = pha2@_FillValue - pha2 = where(c2a .lt. 0.05, pha2@_FillValue, pha2) ; mask - - if (opt .and. isatt(opt, "pltProb")) then - np = ind(c2a@prob_coh2 .eq. opt@pltProb) - if (.not. ismissing(np)) then - c2a = where(c2a .lt. STC@prob_coh2(np), c2a@_FillValue, c2s) - pha1 = where(ismissing(c2a), pha1@_FillValue, pha1) - pha2 = where(ismissing(c2a), pha2@_FillValue, pha2) - end if - end if - - if (opt .and. isatt(opt, "coh2Cutoff")) then - c2a = where(c2a .lt. opt@coh2Cutoff, c2s@_FillValue, c2s) - end if - if (opt .and. isatt(opt, "phaseCutoff")) then - pha1 = where(c2a .lt. opt@phaseCutoff, pha1@_FillValue, pha1) - pha2 = where(c2a .lt. opt@phaseCutoff, pha2@_FillValue, pha2) - end if - - if (opt .and. isatt(opt, "elimIsoVals") .and. .not.opt@elimIsoVals) then - mjo_elimIsolatedValues(c2a, pha1, pha2, 2) - mjo_elimIsolatedValues(c2a, pha1, pha2, 1) - end if - - if (plotPhase) then - scl_one = sqrt(1. / (pha1 ^ 2 + pha2 ^ 2)) - pha1 = scl_one * pha1 - pha2 = scl_one * pha2 - plot = gsn_csm_vector_scalar(wks, pha1, pha2, c2a, res) - else - plot = gsn_csm_contour(wks, c2a, res) - end if - - plot = addHorVertLinesCross_extended(wks, plot, nWavePlt, dums, idx_mod) - - dumdcs(idx_mod, 0) = \ - gsn_add_polyline(wks, plot, Apzwn(0, 0, :), Afreq(0, 0, :), dcres) - dumdcs(idx_mod, 1) = \ - gsn_add_polyline(wks, plot, Apzwn(0, 1, :), Afreq(0, 1, :), dcres) - dumdcs(idx_mod, 2) = \ - gsn_add_polyline(wks, plot, Apzwn(0, 2, :), Afreq(0, 2, :), dcres) - dumdcs(idx_mod, 3) = \ - gsn_add_polyline(wks, plot, Apzwn(1, 0, :), Afreq(1, 0, :), dcres) - dumdcs(idx_mod, 4) = \ - gsn_add_polyline(wks, plot, Apzwn(1, 1, :), Afreq(1, 1, :), dcres) - dumdcs(idx_mod, 5) = \ - gsn_add_polyline(wks, plot, Apzwn(1, 2, :), Afreq(1, 2, :), dcres) - dumdcs(idx_mod, 6) = \ - gsn_add_polyline(wks, plot, Apzwn(2, 0, :), Afreq(2, 0, :), dcres) - dumdcs(idx_mod, 7) = \ - gsn_add_polyline(wks, plot, Apzwn(2, 1, :), Afreq(2, 1, :), dcres) - dumdcs(idx_mod, 8) = \ - gsn_add_polyline(wks, plot, Apzwn(2, 2, :), Afreq(2, 2, :), dcres) - - dumdcs(idx_mod, 10) = gsn_add_text(wks, plot, "MRG", -10.0, .15, txres) - dumdcs(idx_mod, 11) = gsn_add_text(wks, plot, "n = 2 IG", -3.0, .58, txres) - dumdcs(idx_mod, 12) = gsn_add_text(wks, plot, "n = 0 EIG", 6.5, .40, txres) - dumdcs(idx_mod, 13) = gsn_add_text(wks, plot, "h = 50", -10.0, .78, txres) - dumdcs(idx_mod, 14) = gsn_add_text(wks, plot, "h = 25", -10.0, .63, txres) - dumdcs(idx_mod, 15) = gsn_add_text(wks, plot, "h = 12", -10.0, .51, txres) - - end if - end if - - resP = True - resP@gsnMaximize = True - resP@gsnPanelLabelBar = True - resP@lbLabelStride = 2 ; every other one - resP@cnLabelBarEndLabelsOn = True - resP@cnLabelBarEndStyle = "ExcludeOuterBoxes" - - resP@cnLevelSelectionMode = res@cnLevelSelectionMode - resP@cnMinLevelValF = res@cnMinLevelValF - resP@cnMaxLevelValF = res@cnMaxLevelValF ; correlation^2 = 0.8 - resP@cnLevelSpacingF = res@cnLevelSpacingF - - return(plot) - -end - -; ############################################################################# - -undef("mjo_ceof_plot") -function mjo_ceof_plot(wks[1]:graphic, - ceof[*][*]:numeric, - pcv_eof_olr[1]:numeric, - pcv_eof_u850[1]:numeric, - pcv_eof_u200[1]:numeric, - opt[1]:logical) -local res, rts, var0, lon, plot -begin - - ; ************************************************ - ; Multivariate EOF plots - ; ************************************************ - rts = True - rts@gsnDraw = False ; don't draw yet - rts@gsnFrame = False ; don't advance frame yet - rts@gsnScale = True ; force text scaling - - rts@vpHeightF = 0.40 ; Changes the aspect ratio - rts@vpWidthF = 0.85 - rts@vpXF = 0.10 ; change start locations - rts@vpYF = 0.75 ; the plot - rts@xyLineThicknesses = (/2, 2, 2/) - rts@xyLineColors = (/"black", "red", "green"/) - rts@xyDashPatterns = (/0.0, 0.0, 0.0/) ; line patterns - - rts@trYMaxF = diag_script_info@trYMaxF_ceof - rts@trYMinF = diag_script_info@trYMinF_ceof - - rts@gsnYRefLine = 0. ; reference line - - rts@pmLegendDisplayMode = "Always" ; turn on legend - rts@pmLegendSide = "Top" ; Change location of - rts@pmLegendParallelPosF = 0.86 ; move units right - rts@pmLegendOrthogonalPosF = -0.50 ; move units down - rts@pmLegendWidthF = 0.15 ; Change width and - rts@pmLegendHeightF = 0.15 ; height of legend. - rts@lgLabelFontHeightF = 0.0175 - - var0 = variables(0) - - if (var0 .eq. "pr-mmday") then - rts@xyExplicitLegendLabels = \ - (/"Pre: " + sprintf("%4.1f", pcv_eof_olr) + "%",\ - "U850: " + sprintf("%4.1f", pcv_eof_u850) + "%",\ - "U200: " + sprintf("%4.1f", pcv_eof_u200) + "%" /) - end if - - if (var0 .eq. "rlut") then - rts@xyExplicitLegendLabels = \ - (/"OLR: " + sprintf("%4.1f", pcv_eof_olr) + "%",\ - "U850: " + sprintf("%4.1f", pcv_eof_u850) + "%",\ - "U200: " + sprintf("%4.1f", pcv_eof_u200) + "%"/) - end if - - if (isatt(opt, "gsnLeftString")) then - rts@gsnLeftString = opt@gsnLeftString - end if - - if (isatt(opt, "gsnCenterString")) then - rts@gsnCenterString = opt@gsnCenterString - end if - - if (isatt(opt, "gsnRightString")) then - rts@gsnRightString = opt@gsnRightString - end if - - lon = ceof&lon - plot = gsn_csm_xy(wks, lon, ceof(:, :), rts) - - return(plot) - -end - -; ############################################################################# - -undef("mjo_life_cycle_plot") -procedure mjo_life_cycle_plot(x[*][*][*]:numeric,\ - u[*][*][*]:numeric,\ - v[*][*][*]:numeric,\ - idx_mod[1]:numeric,\ - di[1]:logical) -local amres, ang, angBnd, aux_title_info, diag_script_base, f, field_type0, \ - iday, imon, mjo_indx, nDays, netcdf_dir, nn, nPhase, nt, output_dir, \ - output_filename, input_netcdf, pc1, pc2, phaBnd, phase, pLabel, plot, \ - pltSubTitle, r2d, res, resP, time, txid, txres, uAvg, var0, vAvg, wks, \ - xAvg, ymdhms -begin - - ; *********************************************************** - ; Open PC components file created in 'mjo_14.ncl' - ; *********************************************************** - var0 = variables(0) - field_type0 = field_types(0) - - netcdf_dir = plot_dir + "netcdf/" - aux_title_info = "MJO_PC_INDEX" - input_netcdf = \ - interface_get_figure_filename("mjo_life_cycle_plot", var0, field_type0, \ - aux_title_info, idx_mod) - f = addfile(netcdf_dir + input_netcdf + ".nc", "r") - - ; *********************************************************** - ; Find the indices corresponding to the start/end times - ; on the MJO_PC_INDEX.nc file - ; *********************************************************** - ; TIME = f->time ; days since ... - ; YMD = cd_calendar(TIME, -2) ; entire(time, 6) - ; - ; iStrt = ind(YMD .eq. twStrt) ; index start - ; iLast = ind(YMD .eq. twLast) ; index last - ; delete(TIME) - ; delete(YMD) - ; *********************************************************** - ; Read the data for the desired period - ; *********************************************************** - pc1 = f->PC1(:) - pc2 = f->PC2(:) - mjo_indx = f->MJO_INDEX(:) - - time = pc1&time - ymdhms = cd_calendar(time, 0) - - imon = floattoint(ymdhms(:, 1)) ; convenience - iday = floattoint(ymdhms(:, 2)) ; subscripts must be integer - - ; *********************************************************** - ; Place each array into an appropriate array - ; *********************************************************** - phase = (/202.5, 247.5, 292.5, 337.5, \ ; phi: Matt Wheeler's f77 code - 22.5, 67.5, 112.5, 157.5/) - nPhase = dimsizes(phase) - phaBnd = 180.0 / nPhase - angBnd = new((/2, nPhase/), "float") - angBnd(0, :) = phase - phaBnd - angBnd(1, :) = phase + phaBnd - - r2d = 180. / (4. * atan(1.0)) - ang = atan2(pc2, pc1) * r2d ; phase space - nn = ind(ang .lt. 0) - ang(nn) = ang(nn) + 360 ; make 0 to 360 - - nDays = new(nPhase, "integer") - pLabel = "P" + ispan(1, nPhase, 1) + ": " - - res = True - res@gsnDraw = False ; don't draw yet - res@gsnFrame = False ; don't advance frame yet - res@gsnSpreadColors = True ; spread out color table - - res@mpFillOn = False ; turn off map fill - res@mpMinLatF = di@latrange_life(0) ; zoom in on map - res@mpMaxLatF = di@latrange_life(1) - res@mpCenterLonF = 210. - res@cnFillOn = True ; turn on color fill - res@cnLinesOn = False ; True is default - res@cnLineLabelsOn = False ; True is default - res@lbLabelBarOn = False ; turn off individual lb's - res@gsnScalarContour = True ; contour 3rd array - res@gsnMajorLatSpacing = 15 - res@gsnMajorLonSpacing = 60 - res@tmXBLabelFontHeightF = 0.01 - res@tmYLLabelFontHeightF = 0.01 - - res@cnLevelSelectionMode = "ManualLevels" - - if (var0 .eq. "rlut") then - res@cnMinLevelValF = -40 ; -98 mnmxint(0) - res@cnMaxLevelValF = 40 ; 80 mnmxint(1) - res@cnLevelSpacingF = 5 ; 20 mnmxint(2) - end if - - if (var0 .eq. "pr-mmday") then - res@cnMinLevelValF = -8 ; -100 mnmxint(0) - res@cnMaxLevelValF = 8 ; 80 mnmxint(1) - res@cnLevelSpacingF = 1 ; 20 mnmxint(2) - end if - - res@vcMinDistanceF = 0.01 ; thin the vector density - res@vcRefMagnitudeF = 2.0 ; define vector ref mag - res@vcRefLengthF = 0.025 ; define length of vec ref - res@vcRefAnnoOrthogonalPosF = -1.0 ; move ref vector - res@vcRefAnnoArrowLineColor = "black" ; change ref vector color - res@vcRefAnnoArrowUseVecColor = False ; don't use vec color for ref - - ; panel plot only resources - resP = True ; modify the panel plot - resP@gsnMaximize = True ; large format - resP@gsnPanelLabelBar = True ; add common colorbar - resP@lbLabelAutoStride = True ; auto stride on labels - resP@lbLabelFontHeightF = 0.01 - resP@gsnPanelBottom = 0.05 ; add some space at bottom - resP@pmLabelBarWidthF = 0.8 ; label bar width - resP@pmLabelBarHeightF = 0.05 - resP@gsnPanelFigureStringsFontHeightF = 0.0125 ; bit larger than default - - amres = True - amres@amOrthogonalPosF = 0.75 - amres@amJust = "CenterCenter" - - ; ******************************************* - ; Loop over each phase - ; ******************************************* - res@gsnLeftString = "" - res@gsnRightString = "" - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - pltSubTitle = "Anomalous: OLR, U850, V850" - - do nSeason = 1, 2 - aux_title_info = input_file_info@dataset(idx_mod) + "_" \ - + di@season_life_cycle(nSeason - 1) - output_filename = \ - interface_get_figure_filename(diag_script_base, var0, field_type0,\ - aux_title_info, -1) - wks = gsn_open_wks(output_file_type, output_dir + output_filename) - gsn_define_colormap(wks, "ViBlGrWhYeOrRe") - plot = new(nPhase, graphic) ; create graphic array - - txres = True - txres@txFontHeightF = 0.01 - txid = gsn_create_text(wks, pltSubTitle, txres) - - if (nSeason .eq. 1) then - resP@txString = input_file_info@dataset(idx_mod) + ": "\ - + input_file_info@start_year(idx_mod) + "-"\ - + input_file_info@end_year(idx_mod)\ - + ": May to Oct" - else - resP@txString = input_file_info@dataset(idx_mod) + ": "\ - + input_file_info@start_year(idx_mod) + "-"\ - + input_file_info@end_year(idx_mod)\ - + ": Nov to Apr" - end if - do n = 0, nPhase - 1 - ; All times where the following criteria are met - if (nSeason .eq. 1) then - nt = ind(mjo_indx .gt. 1.0 \ - .and.(imon .ge. 5 .and. imon .le. 10)\ - .and. ang .ge. angBnd(0, n)\ - .and. ang .lt. angBnd(1, n)) - else - nt = ind(mjo_indx .gt. 1.0\ - .and.(imon .ge. 11 .or. imon .le. 4)\ - .and. ang .ge. angBnd(0, n) \ - .and. ang .lt. angBnd(1, n)) - end if - if (.not. all(ismissing(nt))) then - xAvg = dim_avg_n_Wrap(x(nt, :, :), 0) - uAvg = dim_avg_n_Wrap(u(nt, :, :), 0) - vAvg = dim_avg_n_Wrap(v(nt, :, :), 0) - - nDays(n) = dimsizes(nt) - - res@tmXBLabelsOn = False ; do not draw lon labels - res@tmXBOn = False ; lon tickmarks - if (n .eq. (nPhase - 1)) then - res@tmXBLabelsOn = True ; draw lon labels - res@tmXBOn = True ; tickmarks - end if - - plot(n) = gsn_csm_vector_scalar_map_ce(wks, uAvg, vAvg, xAvg, res) - end if - delete(nt) ; will change next iteration - end do - - resP@gsnPanelFigureStrings = pLabel + nDays - gsn_panel(wks, plot, (/nPhase, 1/), resP) ; now draw as one plot - - delete(wks) - delete(plot) - end do - -end diff --git a/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl b/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl deleted file mode 100644 index 501e78c953..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl +++ /dev/null @@ -1,454 +0,0 @@ -; ############################################################################# -; GENERAL ROUTINES FOR MONSOON PANELLING -; ############################################################################# -; Please consider using or extending existing routines before adding new ones. -; Check the header of each routine for documentation. -; -; Contents: -; plot_precip_domain -; precip_domain -; -; ############################################################################# - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/data_handling.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -load "$diag_scripts/aux/SAMonsoon/SAMonsoon.ncl" -exact_panel_position_file = \ - "./diag_scripts/aux/SAMonsoon/exact_panel_positions_precip_world.ncl" -load "$diag_scripts/aux/SAMonsoon/SAMonsoon_panel_positions.ncl" -load "$diag_scripts/aux/SAMonsoon/exact_panel_positions_generic.ncl" -load "$diag_scripts/shared/plot/style.ncl" - -begin - loadscript(exact_panel_position_file) -end - -; ############################################################################# -undef("plot_precip_domain") -procedure plot_precip_domain(cols[*]:integer, - rows[*]:float, - curr_idx[1]:integer, - curr_page[1]:integer, - res[1]:logical, - storage_name[1]:string, - storage_vault[1]:logical, - wks[1]:graphic, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - debuginfo[1]:logical, - figures_per_page[*]:integer, - model_panel_placement[*]:integer, - figure_panel_placement[*]:integer, - plot_array[*]:graphic, - type_specifier[1]:string, - no_figures_on_this_page[1]:integer) -; -; Arguments -; cols: number of columns for this panel plot -; rows: number of rows for this panel plot -; curr_idx: current index -; curr_page: current page (may be more than one) -; res: valid ncl resources to apply to plot -; storage_name: name of first processed variable in the vault -; storage_vault: handle/pointer to vault with all models -; wks: workstation -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; debuginfo: info to put onto plot in debug mode -; figures_per_page: array with number of figures on each page -; model_panel_placement: where to place respective model -; figure_panel_placement: where to place respective figure on the page -; plot_array: plot handles/pointers -; type_specifier: kind of plot, 'mean' or 'stddev' -; no_figures_on_this_page: no of figures on this page -; -; Return value -; -; Description -; Multipanel plot, plots all models on the current page. Top left entry -; is always the reference model. Used for the global domain plots only. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local am_infobox_id, blank_plot, cn_levels_string, curr, curr_idx, debugbox, \ - diff_model_ref, dummy_array, idx_fig, idx_mod, lb_prefix, lbres, \ - main_title_prefix, main_title_suffix, plot, plot_ref, plottype_lbres, ref, \ - statistics, storage_record, txres -begin - - funcname = "plot_precip_domain" - scriptname = "plot_script/ncl/monsoon_domain_panels.ncl" - enter_msg(scriptname, funcname) - - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_mean", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - if (isatt(plot_settings, "default_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@default_palette - end if - - main_title_prefix = "" - main_title_suffix = "" - - storage_record = \ - str_join((/storage_name, \ - sprinti("%i", plot_settings@idx_ref)/), str_vault_sep) - ref = retrieve_from_vault(storage_vault, storage_record) - - ; Reference plot - plot_settings@idx = plot_settings@idx_ref - - ; Dummy array required for some plot routines - dummy_array = (/(/1e20, 1e20/), (/1e20, 1e20/)/) - dummy_array@_FillValue = 1e20 - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, ref, dummy_array) - - res = panel_n_by_cols(res, figure_panel_placement(curr_idx), rows, cols, \ - figures_per_page(curr_page)) - plot_ref = single_contour(wks, \ - ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - end if - - idx_fig = figure_panel_placement(curr_idx) - plot_array(idx_fig) = plot_ref - - ; Skip past the reference plot - curr_idx = curr_idx + 1 - - lbres = True - - if (plot_settings@type .eq. "diff") then - inset_top_text(wks, plot_ref, "REF", txres) - if (storage_name .eq. "intensity") then - inset_labelbar(wks, plot_ref, res, "REF", lbres) - end if - end if - - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + type_specifier, "-", "_") - res@cnLevels = di@$cn_levels_string$ - - if (isatt(plot_settings, "diff_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@diff_palette - end if - - ; ----------------------------- - ; Create the non-reference plots - ; ----------------------------- - do curr_fig = 1, figures_per_page(curr_page) - 1 - - main_title_prefix = "" - idx_mod = model_panel_placement(curr_idx) - idx_fig = figure_panel_placement(curr_idx) - - ; Update placement and labelbar colors - res = panel_n_by_cols(res, figure_panel_placement(curr_idx), rows, cols, \ - figures_per_page(curr_page)) - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - curr = retrieve_from_vault(storage_vault, storage_record) - if (plot_settings@type .eq. "diff") then - ; Plot mean of differences of first and second data set, first - ; interpolate to the reference data set grid (bilinear interpolation) - diff_model_ref = get_dataset_minus_ref(curr, ref) - delete(curr) - curr = diff_model_ref - delete(diff_model_ref) - main_title_suffix = " - REF" - else - main_title_suffix = "" - end if - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, curr, dummy_array) - - plot_settings@idx = idx_mod - plot = single_contour(wks, \ - curr, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - end if - - plot_array(idx_fig) = plot - delete(curr) - - ; Update index to point to next field - curr_idx = curr_idx + 1 - end do ; curr_fig=1, figures_per_page(curr_page) - 1 - - plottype_lbres = True - - ; Copy over any attributes with this prefix - lb_prefix = "lbres_" - plottype_lbres = filter_attrs(plot_settings, plottype_lbres, lb_prefix) - - ; Create an blank plot for shared labelbar placement - blank_plot = \ - add_blank_plot_title(wks, "Monsoon " + plot_settings@part_of_header, \ - rows, cols) - - ; Create shared labelbar - n_by_cols_labelbar(wks, \ - blank_plot, \ - plot_array(no_figures_on_this_page - 1), \ - rows, \ - cols, \ - plot_settings@lb_units,\ - plottype_lbres) - - if (debuginfo) then - drawNDCGrid(wks) - end if - draw(plot_array) - draw(blank_plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("precip_domain") -procedure precip_domain(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Determines how to place a number of contour plots in a grid across -; multiple pages. Loop over pages and call plot_multipanel(...) for -; each page to plot entries. Used for the domain plots only. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_filename_info, blank_plot, cn, cols, curr, curr_fig, \ - curr_figure_pos, curr_idx, curr_page, diag_script_base, dim_MOD, dim_VAR, \ - field_type0, figure_panel_placement, figures_per_page, fill_colors_string, \ - idx_fig, idx_mod, idx_ref, lbres, main_title_prefix, max_cols, \ - model_panel_placement, no_figures_on_this_page, output_dir, \ - output_filename, output_file_path, page_no, plot, plot_array, plot_ref, \ - plottype_lbres, ref, res, rows, storage_record, total_no_of_pages, txres, \ - type_specifier, var0, wks -begin - - funcname = "precip_domain" - scriptname = "plot_script/ncl/monsoon_domain_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - res@tiMainFontHeightF = 0.011 - - ; ------------------------------ - ; Static resources for this plot - ; ------------------------------ - res@mpFillOn = False - res@cnFillOn = True - res@cnLinesOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@lbLabelBarOn = False - res@gsnAddCyclic = True - - ; -------------------------------------- - ; Compute the layout of paneled figures - ; -------------------------------------- - figures_per_page = get_figures_per_page(dim_MOD, \ - max_figures_pp, \ - min_figures_pp) - - ; Which model goes where across all pages - model_panel_placement = new((/sum(figures_per_page)/), integer) - - ; Which model goes where on each page? - figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(input_file_info, \ - plot_settings@idx_ref, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement) - - type_specifier = "_" + plot_settings@type - - ; --------------------------- - ; Loop over all output pages - ; --------------------------- - curr_idx = 0 - curr_idx_debug = 0 - total_no_of_pages = dimsizes(figures_per_page) - - do curr_page = 0, total_no_of_pages - 1 - ; -------------------------- - ; Plot arrays for gsn_panels - ; -------------------------- - plot_array = new((/max_figures_pp/), graphic) - - no_figures_on_this_page = figures_per_page(curr_page) - - ; Create a string to add to the figure output\ - ; filename for mulitple pages - if (total_no_of_pages .gt. 1) then - page_no = "-page" + sprinti("%i", curr_page) - else - page_no = "" - end if - - ; ---------------------------------------- - ; Define output workstation for mean plots - ; ---------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = di@summer_season + "-" + storage_name + \ - type_specifier + page_no - output_filename = interface_get_figure_filename(diag_script_base, \ - var0, \ - field_type0, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - max_cols = 2 - cols = multipanel_get_no_cols(no_figures_on_this_page, max_cols) - rows = multipanel_get_no_rows(no_figures_on_this_page, max_cols) - - ; Update position, labelbar and title - curr_figure_pos = figure_panel_placement(curr_idx) - res = panel_n_by_cols(res, curr_figure_pos, rows, cols, \ - figures_per_page(curr_page)) - - plot_precip_domain(cols, \ - rows, \ - curr_idx, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks, \ - di, \ - plot_settings, \ - valid_statistics, \ - False, \ ; No debuginfo - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks) - - if (debuginfo) then - aux_filename_info = di@summer_season + "-" + storage_name + \ - type_specifier + page_no + "-debug" - output_filename = interface_get_figure_filename(diag_script_base, \ - var0, \ - field_type0, \ - aux_filename_info, \ - idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - - plot_precip_domain(cols, \ - rows, \ - curr_idx_debug, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks_debug, \ - di, \ - plot_settings, \ - valid_statistics, \ - debuginfo, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks_debug) - end if - - end do ; curr_page = 0, total_no_of_pages - 1 - - leave_msg(scriptname, funcname) - -end diff --git a/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl b/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl deleted file mode 100644 index bf65740463..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl +++ /dev/null @@ -1,3001 +0,0 @@ -; ############################################################################# -; GENERAL ROUTINES FOR MONSOON PANELLING -; ############################################################################# -; Please consider using or extending existing routines before adding new ones. -; Check the header of each routine for documentation. -; -; Contents: -; function get_title_suffix -; procedure remove_attrs -; procedure plot_two_by_one -; procedure plot_three_by_one_diff -; procedure two_by_one -; procedure three_by_one_diff -; procedure plot_three_by_one_vector -; procedure three_by_one_vector -; procedure plot_multipanel -; procedure multipanel -; procedure plot_multipanel_vector -; procedure multipanel_vector -; procedure seasonal_plot -; procedure xy_plot_wrapper -; procedure ts_line_wrapper -; procedure xy_line_overlap -; -; ############################################################################# - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/data_handling.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -begin - loadscript(exact_panel_position_file) -end - -load "$diag_scripts/aux/SAMonsoon/SAMonsoon.ncl" -load "$diag_scripts/aux/SAMonsoon/SAMonsoon_panel_positions.ncl" -load "$diag_scripts/aux/SAMonsoon/exact_panel_positions_generic.ncl" - -load "$diag_scripts/shared/plot/style.ncl" -load "$diag_scripts/shared/plot/xy_line.ncl" - -; ############################################################################# -undef("get_title_suffix") -function get_title_suffix(plot_settings[1]:logical) -; -; Arguments -; plot_settings: Logical with plot settings as attributes -; -; Return value -; main_title_suffix: Main title suffix -; -; Description -; Checks and returns the main title suffix attribute from -; plot_settings, empty string if missing -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local main_title_suffix -begin - - funcname = "get_title_suffix" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - if (isatt(plot_settings, "main_title_suffix")) then - main_title_suffix = plot_settings@main_title_suffix - else - main_title_suffix = "" - end if - - leave_msg(scriptname, funcname) - return(main_title_suffix) - -end - -; ############################################################################# -undef("remove_attrs") -procedure remove_attrs(p_settings[1]:logical, - attributes[*]:string) -; -; Arguments -; p_settings: Logical with plot settings as attributes -; attributes: array with attribute names -; -; Return value -; -; Description -; Removes supplied attributes if they are defined -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local idx, settings -begin - - funcname = "remove_attrs" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - do idx = 0, dimsizes(attributes) - 1 - if (isatt(p_settings, attributes(idx))) then - delete(p_settings@$attributes(idx)$) - end if - end do - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("plot_two_by_one") -procedure plot_two_by_one(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_name1[1]:string, - storage_name2[1]:string, - debuginfo[1]:logical, - storage_vault[1]:logical, - idx_mod[1]:integer) -; -; Arguments -; wks: workstation -; res: resources for plot -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; storage_name1: name of first processed variable in the vault -; storage_name2: name of second processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; storage_vault: handle/pointer to vault with all models -; idx_mod: index of current model -; -; Return value -; -; Description -; Plots two contour plots on top of each other -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local am_infobox_id, cn_levels_string, debugbox, dummy_array, lbtitle, lower, \ - main_title_prefix, main_title_suffix, plot1, plot2, statistics, \ - storage_record, txres, upper -begin - - funcname = "plot_two_by_one" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - remove_attrs(res, (/"cnLevels"/)) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name1 + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - remove_attrs(plot_settings, (/"idx"/)) - plot_settings@idx = plot_settings@idx_ref - - ; ----------------------------- - ; Plot model entry (first plot) - ; ----------------------------- - main_title_prefix = "" - main_title_suffix = plot_settings@part_of_header - res = panel_two_by_one(res, 0) ; Update resource for second plot - - storage_record = \ - str_join((/storage_name1, sprinti("%i", idx_mod)/), str_vault_sep) - upper = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - remove_attrs(plot_settings, (/"idx", "gsn_right_string"/)) - plot_settings@idx = idx_mod - plot_settings@gsn_right_string = upper@gsn_right_string - - statistics = True - statistics = \ - compute_stat((/"yrs", "refA", "lonB", "mean", "bob", "eio", "sahel", \ - "sa34", "en34"/), valid_statistics, upper, dummy_array) - - plot_settings@skip_default_title = False - plot1 = single_contour(wks, upper, main_title_prefix, main_title_suffix, \ - plot_settings, debuginfo, statistics, res) - delete(statistics) - - ; --------------------------------------- - ; Plot model entry (second plot) - ; --------------------------------------- - main_title_prefix = "" - main_title_suffix = "" - res = panel_two_by_one(res, 1) ; Update resource for second plot - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name2 + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - storage_record = \ - str_join((/storage_name2, sprinti("%i", idx_mod)/), str_vault_sep) - lower = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - statistics = True - statistics = compute_stat((/"yrs", "refA", "mean", "bob", "eio", "sahel", \ - "sa34", "en34"/), valid_statistics, lower, \ - dummy_array) - plot_settings@gsn_right_string = lower@gsn_right_string - plot_settings@skip_default_title = True - plot2 = single_contour(wks, lower, main_title_prefix, main_title_suffix, \ - plot_settings, debuginfo, statistics, res) - delete(statistics) - - txres = True - if (any(idx_mod .eq. plot_settings@idx_ref)) then - inset_top_text(wks, plot1, "Reference", txres) - inset_top_text(wks, plot2, "Reference", txres) - end if - two_by_one_labelbar(wks, plot2, plot_settings@lb_title) - - if (debuginfo) then - txres@txFuncCode = "~" - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot1) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot2) - drawNDCGrid(wks) - end if - draw(plot1) - draw(plot2) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("plot_three_by_one_diff") -procedure plot_three_by_one_diff(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_name[1]:string, - debuginfo[1]:logical, - storage_vault[1]:logical, - ref[*][*]:numeric, - idx_mod[1]:integer) -; -; Arguments -; wks: workstation -; res: resources for plot -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; storage_vault: handle/pointer to vault with all models/variables -; idx_mod: index of current model -; -; Return value -; -; Description -; Plots three contour plots, top: reference, middle model, -; bottom their difference -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local am_infobox_id, cn_levels_string, curr, debugbox, diff_model_ref, \ - dummy_array, header_prefix, main_title, main_title_suffix, plot, plot_diff, \ - plot_ref, res, statistics, storage_record, title_name, txres -begin - - funcname = "plot_three_by_one_diff" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - ; ------------------------------------- - ; Plot reference plot (top plot) - ; ------------------------------------- - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - ; Title string might be a substring of the variable name - ; used for storing the data in the vault - title_name = keep_only_n_cols(plot_settings, storage_name) - header_prefix = \ - empty_string_if_missing_attribute(plot_settings, "prefix_to_header") - - main_title_prefix = \ - "(1) " + header_prefix + di@season + "-" + title_name + " of " - main_title_suffix = get_title_suffix(plot_settings) - plot_settings@type = "ref" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - ; Possibly switch from default colormap for non-diff plot - if (isatt(plot_settings, "default_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@default_palette - end if - - statistics = True - statistics = compute_stat((/"yrs", "mean", "bob", "eio", "sahel", "sa34", \ - "en34"/), valid_statistics, ref, dummy_array) - plot_ref = single_contour(wks, ref, main_title_prefix, main_title_suffix, \ - plot_settings, debuginfo, statistics, res) - delete(statistics) - txres = True - inset_top_text(wks, plot_ref, "Reference", txres) - - three_by_one_labelbar(wks, plot_ref, plot_settings) - - ; ------------------------------------- - ; Plot model entry (middle plot) - ; ------------------------------------- - header_prefix = \ - empty_string_if_missing_attribute(plot_settings, "prefix_to_header") - - title_name = keep_only_n_cols(plot_settings, storage_name) - main_title_prefix = \ - "(2) " + header_prefix + di@season + "-" + title_name + " of " - res = panel_three_by_one(res, 1) ; Update resource for second plot - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - curr = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - statistics = True - statistics = compute_stat((/"yrs", "mean", "bob", "eio", "sahel", "sa34", \ - "en34"/), valid_statistics, curr, dummy_array) - statistics = compute_stat((/"corr"/), valid_statistics, curr, ref) - plot = single_contour(wks, curr, main_title_prefix, main_title_suffix, \ - plot_settings, debuginfo, statistics, res) - delete(statistics) - - ; --------------------------------------- - ; Plot reference model diff (bottom plot) - ; --------------------------------------- - main_title = "(2) - (1)" - main_title_suffix = "" - res = panel_three_by_one(res, 2) ; Update resource for third plot - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_diff_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - ; Plot mean of differences of first and second data set, first - ; interpolate to the reference data set grid (conservative interpolation) - diff_model_ref = get_dataset_minus_ref(curr, ref) - - plot_settings@type = "diff" - plot_settings@skip_default_title = True - - ; Possibly switch from default colormap for diff plot - if (isatt(plot_settings, "diff_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@diff_palette - end if - - statistics = True - statistics = \ - compute_stat((/"mean"/), valid_statistics, diff_model_ref, dummy_array) - statistics = compute_stat((/"rmse"/), valid_statistics, curr, ref) - plot_diff = single_contour(wks, diff_model_ref, main_title, \ - main_title_suffix, plot_settings, debuginfo, \ - statistics, res) - delete(statistics) - delete(diff_model_ref) - plot_settings@skip_default_title = False - - if (debuginfo) then - txres@txFuncCode = "~" - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_diff) - drawNDCGrid(wks) - end if - draw(plot_ref) - draw(plot_diff) - draw(plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("two_by_one") -procedure two_by_one(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name1[1]:string, - storage_name2[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; res: resources for plot -; storage_name1: name of first processed variable in the vault -; storage_name2: name of second processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Loops models in storage_vault and calls plot_two_by_one(..) -; for each model -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, dummy_array, field_type0, \ - lbtitle, main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, diff_model_ref, txres -begin - - funcname = "two_by_one" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - ; Handle the case when using two variables - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - - do idx_mod = 0, dim_MOD - 1 - - ; ---------------------------------------- - ; Define output workstation - ; ---------------------------------------- - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_name1 + "-" + storage_name2 - else - aux_title_info = di@season + "-" + storage_name1 + "-" + storage_name2 - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_two_by_one(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name1, \ - storage_name2, \ - False, \ - storage_vault, \ - idx_mod) - frame(wks) ; Workstation output - delete(wks) - - ; Debug version - if (debuginfo) then - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_name1 + "-" + storage_name2 + "-debug" - else - aux_title_info = di@season + "-" + storage_name1 + "-" + \ - storage_name2 + "-debug" - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_two_by_one(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name1, \ - storage_name2, \ - debuginfo, \ - storage_vault, \ - idx_mod) - frame(wks_debug) ; Workstation output - delete(wks_debug) - end if - - end do ; idx_mod = 0, dim_MOD - 1 - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("three_by_one_diff") -procedure three_by_one_diff(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; res: resources for plot -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Loops models in storage_vault and calls plot_three_by_one_diff(..) -; for each model -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, dummy_array, field_type0, \ - lbtitle, main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, diff_model_ref, txres -begin - - funcname = "three_by_one_diff" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - - ; Handle the case when using two variables - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - - storage_record = \ - str_join((/storage_name, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ref = retrieve_from_vault(storage_vault, storage_record) - - do idx_mod = 0, dim_MOD - 1 - if (any(idx_mod .eq. plot_settings@idx_ref)) then - continue - end if - - ; ---------------------------------------- - ; Define output workstation - ; ---------------------------------------- - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + storage_name - else - aux_title_info = di@season + "-" + storage_name - end if - aux_title_info = di@season + "-" + storage_name - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_diff(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - False, \ - storage_vault, \ - ref, \ - idx_mod) - frame(wks) ; Workstation output - delete(wks) - - ; Debug version - if (debuginfo) then - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_name + "-debug" - else - aux_title_info = di@season + "-" + storage_name + "-debug" - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_diff(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_name, \ - debuginfo, \ - storage_vault, \ - ref, \ - idx_mod) - frame(wks_debug) ; Workstation output - delete(wks_debug) - end if - - end do ; idx_mod = 0, dim_MOD - 1 - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("plot_three_by_one_vector") -procedure plot_three_by_one_vector(wks[1]:graphic, - res[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - storage_names[1]:logical, - debuginfo[1]:logical, - storage_vault[1]:logical, - ua_ref[*][*]:numeric, - va_ref[*][*]:numeric, - speed_ref[*][*]:numeric, - idx_mod[1]:integer) -; -; Arguments -; wks: workstation -; res: resources for plot -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; storage_vault: handle/pointer to vault with all models/variables -; ua_ref: ua wind reference model/obs -; va_ref: ua wind reference model/obs -; speed_ref: wind speed reference for model/obs -; idx_mod: index of current model -; -; Return value -; -; Description -; Plots three contour plots, top: reference, middle model, -; bottom their difference. On top of the contour the vector -; field is plotted -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; - -local am_infobox_id, cn_levels_string, debugbox, diff_model_ref, \ - diff_model_ua_ref, diff_model_va_ref, dummy_array, main_title, \ - main_title_prefix, main_title_suffix, max_speed_ref, plot, plot_diff, \ - plot_diff_v, plot_ref, plot_ref_v, plot_v, speed, statistics, \ - storage_record, txres, ua, va -begin - - funcname = "plot_three_by_one_vector" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - res = panel_three_by_one(res, 0) ; Update resource for first plot - res@cnLevelSelectionMode = "ExplicitLevels" - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - - ; ------------------------------ - ; Plot reference plot (top plot) - ; ------------------------------ - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_names@base_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = \ - "(1) " + di@season + "-" + storage_names@base_name + " of " - main_title_suffix = "" - plot_settings@type = "ref" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed_ref, dummy_array) - plot_ref = single_contour(wks, \ - speed_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - inset_top_text(wks, plot_ref, "Reference", txres) - - if (isatt(di, "max_speed_ref")) then - max_speed_ref = di@max_speed_ref - else - max_speed_ref = max(speed_ref) - end if - if (storage_names@base_name .ne. "stddev") then - plot_ref_v = single_vector(wks, \ - max_speed_ref, \ - speed_ref, \ - ua_ref, \ - va_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_ref, plot_ref_v) - end if - three_by_one_labelbar(wks, plot_ref, plot_settings) - - ; ------------------------------------- - ; Plot model entry plot (middle plot) - ; ------------------------------------- - main_title_prefix = \ - "(2) " + di@season + "-" + storage_names@base_name + " of " - res = panel_three_by_one(res, 1) ; Update resource for second plot - - storage_record = str_join((/storage_names@storage_x_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - ua = retrieve_from_vault(storage_vault, storage_record) - - storage_record = str_join((/storage_names@storage_y_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - va = retrieve_from_vault(storage_vault, storage_record) - - storage_record = str_join((/storage_names@storage_xy_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - speed = retrieve_from_vault(storage_vault, storage_record) - plot_settings@type = "mean" - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - ; Interpolate to reference grid for pattern correlation calculation - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed, dummy_array) - statistics = compute_stat((/"corr"/), valid_statistics, speed, speed_ref) - plot = single_contour(wks, \ - speed, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_names@base_name .ne. "stddev") then - plot_v = single_vector(wks, \ - max_speed_ref, \ - speed, \ - ua, \ - va, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot, plot_v) - end if - - ; -------------------------------------------- - ; Plot model reference diff plot (bottom plot) - ; -------------------------------------------- - ; Plot mean of differnces of first and second data set, first - ; interpolate to the reference data set grid (bilinear interpolation) - - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_dataset_minus_ref(ua, ua_ref) - diff_model_va_ref = get_dataset_minus_ref(va, va_ref) - - main_title = "(2) - (1)" - res = panel_three_by_one(res, 2) ; Update resource for third plot - delete(res@cnLevels) - cn_levels_string = str_sub_str("cn_levels_" + storage_names@base_name + \ - "_diff_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - plot_settings@type = "diff" - - statistics = True - statistics = \ - compute_stat((/"mean"/), valid_statistics, diff_model_ref, dummy_array) - statistics = compute_stat((/"rmse"/), valid_statistics, speed, speed_ref) - plot_diff = single_contour(wks, \ - diff_model_ref, \ - main_title, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (isatt(di, "max_speed_ref_diff")) then - max_speed_ref_diff = di@max_speed_ref_diff - else - max_speed_ref_diff = max(diff_model_ref) - end if - if (storage_names@base_name .ne. "stddev") then - plot_diff_v = single_vector(wks, \ - max_speed_ref, \ - diff_model_ref, \ - diff_model_ua_ref, \ - diff_model_va_ref, \ - main_title, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_diff, plot_diff_v) - end if - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_diff) - drawNDCGrid(wks) - end if - draw(plot_ref) - draw(plot_diff) - draw(plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("three_by_one_vector") -procedure three_by_one_vector(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_names[1]:logical, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Loops models in storage_vault and calls plot_three_by_one_vector(..) -; for each model producing a reference plot at the top (abs + vector) -; ditto for the model in the middle, and a diff at the bottom -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_title_info, cn_levels_string, curr, diag_description, \ - diag_script_base, dim_MOD, dim_VAR, idx_mod, field_type0, lbtitle, \ - main_title, main_title_prefix, output_dir, output_filename, \ - output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ - textres, var0, wks, wks_debug, txres -begin - - funcname = "three_by_one_vector" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - var1 = variables(1) - field_type0 = field_types(0) - field_type1 = field_types(1) - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@mpFillOn = False - res@cnFillOn = True - res@cnLinesOn = False - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@gsnAddCyclic = False - txres = True - txres@txFuncCode = "~" - - ; Fetch reference plot - storage_record = \ - str_join((/storage_names@storage_x_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ua_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_names@storage_y_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - va_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_names@storage_xy_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - speed_ref = retrieve_from_vault(storage_vault, storage_record) - - do idx_mod = 0, dim_MOD - 1 - if (idx_mod .eq. plot_settings@idx_ref) then - continue - end if - - ; ------------------------- - ; Define output workstation - ; ------------------------- - aux_title_info = di@season + "-" + storage_names@base_name - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_vector(wks, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_names, \ - False, \ - storage_vault, \ - ua_ref, \ - va_ref, \ - speed_ref, \ - idx_mod) - frame(wks) - delete(wks) - - ; Debug version - if (debuginfo) then - aux_title_info = di@season + "-" + storage_names@base_name + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - plot_three_by_one_vector(wks_debug, \ - res, \ - di, \ - plot_settings, \ - valid_statistics, \ - storage_names, \ - debuginfo, \ - storage_vault, \ - ua_ref, \ - va_ref, \ - speed_ref, \ - idx_mod) - frame(wks_debug) - delete(wks_debug) - end if - end do ; idx_mod = start_idx, dim_MOD - 1 - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("plot_multipanel") -procedure plot_multipanel(cols[*]:integer, - rows[*]:float, - curr_idx[1]:integer, - curr_page[1]:integer, - res[1]:logical, - storage_name[1]:string, - storage_vault[1]:logical, - wks[1]:graphic, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - debuginfo[1]:logical, - figures_per_page[*]:integer, - model_panel_placement[*]:integer, - figure_panel_placement[*]:integer, - plot_array[*]:graphic, - type_specifier[1]:string, - no_figures_on_this_page[1]:integer) -; -; Arguments -; cols: number of columns for this panel plot -; rows: number of rows for this panel plot -; curr_idx: current index -; curr_page: current page (may be more than one) -; res: valid ncl resources to apply to plot -; storage_name: name of first processed variable in the vault -; storage_vault: handle/pointer to vault with all models -; wks: workstation -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; debuginfo: info to put onto plot in debug mode -; figures_per_page: array with number of figures on each page -; model_panel_placement: where to place respective model -; figure_panel_placement: where to place respective figure on the page -; plot_array: plot handles/pointers -; type_specifier: kind of plot, 'mean' or 'stddev' -; no_figures_on_this_page: no of figures on this page -; -; Return value -; -; Description -; Multipanel plot, plots all models on the current page. Top left entry -; is always the reference model. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local am_infobox_id, blank_plot, cn_levels_string, curr, curr_figure_pos, \ - curr_idx, debugbox, diff_model_ref, dummy_array, header_prefix, idx_fig, \ - idx_mod, lbres, main_title_prefix, main_title_suffix, plot, plot_ref, \ - plottype_lbres, ref, res, statistics, storage_record, txres -begin - - funcname = "plot_multipanel" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - ; Update position, labelbar and title - curr_figure_pos = figure_panel_placement(curr_idx) - res = panel_n_by_cols(res, curr_figure_pos, rows, cols, \ - figures_per_page(curr_page)) - - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "" - main_title_suffix = "" - - ; Fetch reference plot - storage_record = \ - str_join((/storage_name, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ref = retrieve_from_vault(storage_vault, storage_record) - - ; Reference plot - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - ; Possibly switch from default colormap for non-diff plot - if (isatt(plot_settings, "default_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@default_palette - end if - - statistics = True - statistics = \ - compute_stat((/"yrs", "refA", "lonB", "mean", "bob", "eio", \ - "sahel", "sa34", "en34"/), valid_statistics, ref, dummy_array) - plot_ref = single_contour(wks, \ - ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - end if - - idx_fig = figure_panel_placement(curr_idx) - plot_array(idx_fig) = plot_ref - - ; Skip past the reference plot - curr_idx = curr_idx + 1 - lbres = True - - if (plot_settings@type .eq. "diff") then - inset_top_text(wks, plot_ref, "REF", txres) - inset_labelbar(wks, plot_ref, res, "REF", lbres) - main_title_suffix = " - REF" - - ; Possibly switch from default colormap for diff plot - if (isatt(plot_settings, "diff_palette")) then - if (isatt(res, "cnFillPalette")) then - delete(res@cnFillPalette) - end if - res@cnFillPalette = plot_settings@diff_palette - end if - else - inset_top_text(wks, plot_ref, "Reference", txres) - main_title_suffix = "" - end if - - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_name + type_specifier + \ - "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - ; ----------------------------- - ; Create the non-reference plots - ; ----------------------------- - do curr_fig = 1, figures_per_page(curr_page) - 1 - - main_title_prefix = "" - idx_mod = model_panel_placement(curr_idx) - idx_fig = figure_panel_placement(curr_idx) - - ; Skip reference models - if any((idx_mod .eq. plot_settings@idx_ref)) then - continue - end if - - ; Update placement and labelbar colors - res = panel_n_by_cols(res, \ - figure_panel_placement(curr_idx), \ - rows, \ - cols, \ - figures_per_page(curr_page)) - - storage_record = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - curr = retrieve_from_vault(storage_vault, storage_record) - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, curr, dummy_array) - if (plot_settings@type .eq. "diff") then - statistics = compute_stat((/"rmse"/), valid_statistics, curr, ref) - diff_model_ref = get_dataset_minus_ref(curr, ref) - delete(curr) - curr = diff_model_ref - delete(diff_model_ref) - else - statistics = compute_stat((/"corr"/), valid_statistics, curr, ref) - end if - statistics = \ - compute_stat((/"yrs", "mean", "bob", "eio", "sahel", "sa34", \ - "en34"/), valid_statistics, curr, dummy_array) - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - plot = single_contour(wks, \ - curr, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - end if - - plot_array(idx_fig) = plot - - ; Update index to point to next field - curr_idx = curr_idx + 1 - delete(curr) - delete(statistics) - - end do ; curr_fig=1, figures_per_page(curr_page) - 1 - - plottype_lbres = False - - ; --------------------------------------------------------- - ; Create an blank plot for shared labelbar placement (mean) - ; --------------------------------------------------------- - header_prefix = \ - empty_string_if_missing_attribute(plot_settings, "prefix_to_header") - title_name = keep_only_n_cols(plot_settings, storage_name) - blank_plot = \ - add_blank_plot_title(wks, header_prefix + di@season + "-" + title_name + \ - plot_settings@part_of_header, rows, cols) - ; Create shared labelbar - n_by_cols_labelbar(wks, blank_plot, \ - plot_array(no_figures_on_this_page - 1), rows, cols, \ - plot_settings@lb_units, plottype_lbres) - - ; -------------------- - ; Draw mean value plot - ; -------------------- - if (debuginfo) then - drawNDCGrid(wks) - end if - draw(plot_array) - draw(blank_plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("multipanel") -procedure multipanel(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Determines how to place a number of contour plots in a grid across -; multiple pages. Loop over pages and call plot_multipanel(...) for -; each page to plot entries. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_title_info, blank_plot, cn_levels_string, cols, curr, curr_fig, \ - curr_figure_pos, curr_idx, curr_idx_debug, curr_page, diag_script_base, \ - dim_MOD, dim_VAR, dummy_array, field_type0, figure_panel_placement, \ - figures_per_page, idx_fig, idx_mod, lbres, main_title_prefix, \ - model_panel_placement, no_figures_on_this_page, output_dir, \ - output_filename, output_file_path, page_no, plot, plot_array, \ - plot_mean_diff, plot_ref, plot_stddev, plot_stddev_diff, plottype_lbres, \ - ref, res, rows, storage_record, total_no_of_pages, txres, type_specifier, \ - var0, wks -begin - - funcname = "multipanel" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - ; No of models may differ from dimsizes(dim_MOD) if variables - ; from different models are combined (e.g., 'ts' from HadISST - ; and 'pr' from TRMM) - ref_no = 0 - stored_ref_name = "model" - dim_MOD = no_unique_vault_entries(storage_vault, stored_ref_name, ref_no) - - dim_VAR = dimsizes(variables) - - var0 = variables(0) - field_type0 = field_types(0) - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@cnFillOn = True - res@cnLinesOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@lbLabelBarOn = False - res@gsnAddCyclic = False - - ; -------------------------------------- - ; Compute the layout of paneled figures - ; -------------------------------------- - figures_per_page = \ - get_figures_per_page(dim_MOD, max_figures_pp, min_figures_pp) - - ; Which model goes where across all pages - model_panel_placement = new((/sum(figures_per_page)/), integer) - - ; Which model goes where on each page? - figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(input_file_info, plot_settings@idx_ref, \ - figures_per_page, model_panel_placement, \ - figure_panel_placement) - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - if (plot_settings@type .eq. "diff") then - type_specifier = "_diff" - else - type_specifier = "" - end if - - ; --------------------------- - ; Loop over all output pages - ; --------------------------- - curr_idx = 0 - curr_idx_debug = 0 - total_no_of_pages = dimsizes(figures_per_page) - - do curr_page = 0, total_no_of_pages - 1 - - ; -------------------------- - ; Plot arrays for gsn_panels - ; -------------------------- - plot_array = new((/max_figures_pp/), graphic) - - no_figures_on_this_page = figures_per_page(curr_page) - - ; Create a string to add to the figure output filename for mulitple pages - if (total_no_of_pages .gt. 1) then - page_no = "-page" + sprinti("%i", curr_page) - else - page_no = "" - end if - - ; ----------------------------------- - ; Define output workstation for plots - ; ----------------------------------- - idx_mod = -1 ; No specific model defined - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_name + type_specifier + page_no - else - aux_title_info = \ - di@season + "-" + storage_name + type_specifier + page_no - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - cols = multipanel_get_no_cols(no_figures_on_this_page, max_cols) - rows = multipanel_get_no_rows(no_figures_on_this_page, max_cols) - - plot_multipanel(cols, \ - rows, \ - curr_idx, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks, \ - di, \ - plot_settings, \ - valid_statistics, \ - False, \ ; No debuginfo - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks) - - if (debuginfo) then - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_name + type_specifier + page_no + "-debug" - else - aux_title_info = \ - di@season + "-" + storage_name + type_specifier + page_no + "-debug" - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - - plot_multipanel(cols, \ - rows, \ - curr_idx_debug, \ - curr_page, \ - res, \ - storage_name, \ - storage_vault, \ - wks_debug, \ - di, \ - plot_settings, \ - valid_statistics, \ - debuginfo, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks_debug) - end if - end do ; curr_fig = 1, figures_per_page(curr_page) - 1 - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("plot_multipanel_vector") -procedure plot_multipanel_vector(cols[*]:integer, - rows[*]:float, - curr_idx[1]:integer, - curr_page[1]:integer, - res[1]:logical, - storage_names[1]:logical, - storage_vault[1]:logical, - wks[1]:graphic, - di[1]:logical, - plot_settings[1]:logical, - valid_statistics[*]:string, - debuginfo[1]:logical, - figures_per_page[*]:integer, - model_panel_placement[*]:integer, - figure_panel_placement[*]:integer, - plot_array[*]:graphic, - type_specifier[1]:string, - no_figures_on_this_page[1]:integer) -; -; Arguments -; cols: number of columns for this panel plot -; rows: number of rows for this panel plot -; curr_idx: current index -; curr_page: current page (may be more than one) -; res: valid ncl resources to apply to plot -; storage_name: name of first processed variable in the vault -; storage_vault: handle/pointer to vault with all models -; wks: workstation -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; valid_statistics: valid statistics (to be computed if defined) -; debuginfo: info to put onto plot in debug mode -; figures_per_page: array with number of figures on each page -; model_panel_placement: where to place respective model -; figure_panel_placement: where to place respective figure on the page -; plot_array: plot handles/pointers -; type_specifier: kind of plot, 'mean' or 'stddev' -; no_figures_on_this_page: no of figures on this page -; -; Return value -; -; Description -; Multipanel plot for contour with vector overlay, plots all models -; on the current page. Top left entry is always the reference model. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local am_infobox_id, blank_plot, cn_levels_string, curr_figure_pos, curr_idx, \ - debugbox, diff_model_ref, diff_model_ua_ref, diff_model_va_ref, \ - dummy_array, header_prefix, idx_fig, idx_mod, lbres, main_title_prefix, \ - main_title_suffix, max_speed_ref, plot, plot_ref, plot_ref_v, plot_v, \ - plottype_lbres, res, speed, speed_ref, statistics, storage_record, txres, \ - ua, ua_ref, va, va_ref -begin - - funcname = "plot_multipanel_vector" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - ; Update position, labelbar and title - curr_figure_pos = figure_panel_placement(curr_idx) - res = panel_n_by_cols(res, curr_figure_pos, rows, cols, \ - figures_per_page(curr_page)) - - if (isatt(res, "cnLevels")) then - delete(res@cnLevels) - end if - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_names@base_name + "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - main_title_prefix = "" - main_title_suffix = "" - - ; Fetch reference plot - storage_record = \ - str_join((/storage_names@storage_x_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - ua_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_names@storage_y_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - va_ref = retrieve_from_vault(storage_vault, storage_record) - - storage_record = \ - str_join((/storage_names@storage_xy_component, \ - sprinti("%i", plot_settings@idx_ref(0))/), str_vault_sep) - speed_ref = retrieve_from_vault(storage_vault, storage_record) - if (isatt(di, "max_speed_ref")) then - max_speed_ref = di@max_speed_ref - else - max_speed_ref = max(speed_ref) - end if - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = plot_settings@idx_ref - - dummy_array = (/1e+20/) - dummy_array@_FillValue = 1e+20 - - statistics = True - statistics = \ - compute_stat((/"yrs", "mean"/), valid_statistics, speed_ref, dummy_array) - plot_ref = single_contour(wks, \ - speed_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - - delete(statistics) - if (storage_names@base_name .ne. "stddev") then - plot_ref_v = single_vector(wks, \ - max_speed_ref, \ - speed_ref, \ - ua_ref, \ - va_ref, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot_ref, plot_ref_v) - end if - - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot_ref) - end if - - delete(res@cnLevels) - cn_levels_string = \ - str_sub_str("cn_levels_" + storage_names@base_name + type_specifier + \ - "_basic", "-", "_") - res@cnLevels = di@$cn_levels_string$ - - idx_fig = figure_panel_placement(curr_idx) - plot_array(idx_fig) = plot_ref - - ; Skip past the reference plot - curr_idx = curr_idx + 1 - - lbres = True - txres = True - txres@txFuncCode = "~" - - if (plot_settings@type .eq. "diff") then - inset_top_text(wks, plot_ref, "REF", txres) - inset_labelbar(wks, plot_ref, res, "REF", lbres) - main_title_suffix = " - REF" - else - inset_top_text(wks, plot_ref, "Reference", txres) - main_title_suffix = "" - end if - - ; ------------------------------ - ; Create the non-reference plots - ; ------------------------------ - do curr_fig = 1, figures_per_page(curr_page) - 1 - - main_title_prefix = "" - idx_mod = model_panel_placement(curr_idx) - idx_fig = figure_panel_placement(curr_idx) - - ; Update placement and labelbar colors - res = panel_n_by_cols(res, figure_panel_placement(curr_idx), rows, cols, \ - figures_per_page(curr_page)) - - storage_record = str_join((/storage_names@storage_x_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - ua = retrieve_from_vault(storage_vault, storage_record) - - storage_record = str_join((/storage_names@storage_y_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - va = retrieve_from_vault(storage_vault, storage_record) - - storage_record = str_join((/storage_names@storage_xy_component, \ - sprinti("%i", idx_mod)/), str_vault_sep) - speed = retrieve_from_vault(storage_vault, storage_record) - - statistics = True - statistics = compute_stat((/"yrs"/), valid_statistics, speed, dummy_array) - if (plot_settings@type .eq. "diff") then - - ; Plot mean of differences of first and second data set, first - ; interpolate to the reference data set grid (bilinear interpolation) - statistics = compute_stat((/"rmse"/), valid_statistics, speed, speed_ref) - - ; ua/va/speed field interpolation - diff_model_ref = get_dataset_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_dataset_minus_ref(ua, ua_ref) - diff_model_va_ref = get_dataset_minus_ref(va, va_ref) - delete(speed) - speed = diff_model_ref - delete(ua) - ua = diff_model_ua_ref - delete(va) - va = diff_model_va_ref - - if (isatt(di, "max_speed_ref_diff")) then - max_speed_ref = di@max_speed_ref_diff - else - max_speed_ref = max(diff_model_ref) - end if - - delete(diff_model_ref) - delete(diff_model_ua_ref) - delete(diff_model_va_ref) - - else - statistics = compute_stat((/"corr"/), valid_statistics, speed, speed_ref) - end if - statistics = compute_stat((/"mean"/), valid_statistics, speed, dummy_array) - - if (isatt(plot_settings, "idx")) then - delete(plot_settings@idx) - end if - plot_settings@idx = idx_mod - - plot = single_contour(wks, \ - speed, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - statistics, \ - res) - delete(statistics) - if (storage_names@base_name .ne. "stddev") then - plot_v = single_vector(wks, \ - max_speed_ref, \ - speed, \ - ua, \ - va, \ - main_title_prefix, \ - main_title_suffix, \ - plot_settings, \ - debuginfo, \ - res) - overlay(plot, plot_v) - end if - - if (debuginfo) then - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, plot) - end if - - plot_array(idx_fig) = plot - - ; Update index to point to next field - curr_idx = curr_idx + 1 - delete(ua) - delete(va) - delete(speed) - - end do ; curr_fig=1, figures_per_page(curr_page) - 1 - - plottype_lbres = False - - ; --------------------------------------------------------- - ; Create an blank plot for shared labelbar placement (mean) - ; --------------------------------------------------------- - header_prefix = \ - empty_string_if_missing_attribute(plot_settings, "prefix_to_header") - blank_plot = add_blank_plot_title(wks, header_prefix + di@season + "-" + \ - plot_settings@type + \ - plot_settings@part_of_header, rows, cols) - ; Create shared labelbar - n_by_cols_labelbar(wks, \ - blank_plot, \ - plot_array(no_figures_on_this_page - 1), \ - rows, \ - cols, \ - plot_settings@lb_units, \ - plottype_lbres) - - ; -------------------- - ; Draw mean value plot - ; -------------------- - if (debuginfo) then - drawNDCGrid(wks) - end if - draw(plot_array) - draw(blank_plot) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("multipanel_vector") -procedure multipanel_vector(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_names[1]:logical, - debuginfo[1]:logical, - valid_statistics[*]:string, - res[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; valid_statistics: valid statistics (to be computed if defined) -; res: valid ncl resources to apply to plot -; -; Return value -; -; Description -; Determines how to place a number of contour plots in a grid across -; multiple pages. Loop over pages and call plot_multipanel(...) for -; each page to plot entries. -; -; Caveats -; -; References -; -; Modification history -; 20150702-A_eval_ma: written. -; -local aux_title_info, blank_plot, cn_levels_string, cols, curr_fig, \ - curr_figure_pos, curr_idx, curr_page, diag_script_base, dim_MOD, dim_VAR, \ - dummy_array, field_type0, field_type1, figure_panel_placement, \ - figures_per_page, idx_fig, idx_mod, lbres, main_title_prefix, \ - model_panel_placement, no_figures_on_this_page, output_dir, \ - output_filename, output_file_path, page_no, plot, plot_array, plot_ref, \ - plottype_lbres, res, rows, speed, speed_ref, storage_record, \ - total_no_of_pages, txres, type_specifier, ua, ua_ref, va, var0, var1, \ - va_ref, wks, plot_ref_v -begin - - funcname = "multipanel_vector" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dimsizes(variables) .gt. 1) then - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'output_file_type' if fetched from ncl.interface - if (.not. isdefined("output_file_type")) then - output_file_type = "ps" - end if - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(plot_settings@diag_script) - output_dir = config_user_info@plot_dir - - ; -------------------------------- - ; Static resources for these plots - ; -------------------------------- - res@mpFillOn = False - res@cnFillOn = True - res@cnLinesOn = False - res@cnLevelSelectionMode = "ExplicitLevels" - res@cnMissingValFillColor = "Background" - res@cnLineLabelsOn = False - res@gsnFrame = False - res@gsnDraw = False - res@lbLabelBarOn = False - res@gsnAddCyclic = False - - ; -------------------------------------- - ; Compute the layout of paneled figures - ; -------------------------------------- - figures_per_page = \ - get_figures_per_page(dim_MOD, max_figures_pp, min_figures_pp) - - ; Which model goes where across all pages - model_panel_placement = new((/sum(figures_per_page)/), integer) - - ; Which model goes where on each page? - figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(input_file_info, \ - plot_settings@idx_ref, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement) - - ; Output dir - ; 'plot_dir' is fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - if (plot_settings@type .eq. "diff") then - type_specifier = "_diff" - else - type_specifier = "" - end if - - ; --------------------------- - ; Loop over all output pages - ; --------------------------- - curr_idx = 0 - curr_idx_debug = 0 - total_no_of_pages = dimsizes(figures_per_page) - - do curr_page = 0, total_no_of_pages - 1 - - ; -------------------------- - ; Plot arrays for gsn_panels - ; -------------------------- - plot_array = new((/max_figures_pp/), graphic) - - no_figures_on_this_page = figures_per_page(curr_page) - - ; Create a string to add to the figure output\ - ; filename for mulitple pages - if (total_no_of_pages .gt. 1) then - page_no = "-page" + sprinti("%i", curr_page) - else - page_no = "" - end if - - ; ----------------------------------- - ; Define output workstation for plots - ; ----------------------------------- - idx_mod = -1 ; No specific model defined - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_names@base_name + type_specifier + page_no - else - aux_title_info = di@season + "-" + storage_names@base_name + \ - type_specifier + page_no - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - cols = multipanel_get_no_cols(no_figures_on_this_page, max_cols) - rows = multipanel_get_no_rows(no_figures_on_this_page, max_cols) - - plot_multipanel_vector(cols, \ - rows, \ - curr_idx, \ - curr_page, \ - res, \ - storage_names, \ - storage_vault, \ - wks, \ - di, \ - plot_settings, \ - valid_statistics, \ - False, \ ; No debuginfo - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks) - if (debuginfo) then - if (isatt(di, "filter_name")) then - aux_title_info = di@season + "-" + di@filter_name + "-" + \ - storage_names@base_name + type_specifier + page_no + "-debug" - else - aux_title_info = di@season + "-" + storage_names@base_name + \ - type_specifier + page_no + "-debug" - end if - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_title_info, idx_mod) - output_file_path = output_dir + output_filename - wks_debug = gsn_open_wks(output_file_type, output_file_path) - - plot_multipanel_vector(cols, \ - rows, \ - curr_idx_debug, \ - curr_page, \ - res, \ - storage_names, \ - storage_vault, \ - wks_debug, \ - di, \ - plot_settings, \ - valid_statistics, \ - debuginfo, \ - figures_per_page, \ - model_panel_placement, \ - figure_panel_placement, \ - plot_array, \ - type_specifier, \ - no_figures_on_this_page) - frame(wks_debug) - end if - end do - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("seasonal_plot") -procedure seasonal_plot(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; -; Return value -; -; Description -; Produces a bar plot for seasonal climatology or interannual -; variability. The various logcials carry switches for the -; -; Caveats -; -; References -; -; Modification history -; 20150703-A_eval_ma: written. -; -local am_infobox_id, am_labelbar_id, amres, debugbox, diag_script_base, \ - dim_VAR, field_type0, idx_mod, labelbar, labels, lbres, output_dir, \ - output_filename, output_file_path, plot_array, precip, \ - precip_seasonal_maxY, precip_seasonal_minY, precip_seasonal_spreadY, res, \ - storage_record, txres, var0, wks, xaxis, var1, field_type1 -begin - - funcname = "seasonal_plot" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - precip = retrieve_from_vault(storage_vault, storage_record) - units = precip@units - - precip_seasonal_maxY = max(precip) - precip_seasonal_minY = min(precip) - precip_seasonal_spreadY = precip_seasonal_maxY - precip_seasonal_minY - - ; Plot arrays for gsn_plots - plot_array = new((/dim_MOD/), graphic) - - ; ------------------------------ - ; General resources for all plot - ; ------------------------------ - res = True - res@gsnDraw = False - res@gsnFrame = False - res@gsnXYBarChart = True - res@gsnXYBarChartBarWidth = 0.15 ; change bar widths - res@gsnYRefLine = 0. ; reference line - - ; Specific plot resource for plot iii) - if (plot_settings@type .eq. "iav") then - res@tmXBFormat = "4f" - xaxis = di@years - else - ; Set months on x-axis for plots i) and ii) - res@tmXBMode = "Explicit" ; Define your own tick mark labels. - res@tmXBMinorOn = False ; No minor tick marks. - res@tmXBValues = ispan(0, 11, 1) ; Location to put tick mark labels - res@tmXBLabels = (/"Jan", "Feb", "Mar", "Apr", "May", "Jun", \ - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"/) - res@tmXBLabelFont = 25 ; Change font of labels. - res@tmXBLabelFontHeightF = 0.015 ; Change font height of labels. - - ; Add some margins - res@trXMinF = -1 - res@trXMaxF = 12 - - xaxis = fspan(0, 11, 12) - end if - - labels = new(dim_MOD, string) - - ; Output dir - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - ; ---------------------------------------------- - ; Define output workstation for seasonal anomaly - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - ; --------- - ; Plot loop - ; --------- - do idx_mod = 0, dim_MOD - 1 - labels(idx_mod) = input_file_info@dataset(idx_mod) - res@gsnXYBarChartColors = di@colors_seasonal(idx_mod) - - ; Shift plot to the right and draw/redraw - res@vpXF = 0.2 + idx_mod * 0.005 - res@trYMinF = precip_seasonal_minY - precip_seasonal_spreadY * 0.05 - res@trYMaxF = precip_seasonal_maxY + precip_seasonal_spreadY * 0.05 - - ; Set strings for titles and axis for plot i) and ii) - res@tiMainString = set_string_once(plot_settings@title_string, idx_mod) - res@tiYAxisString = set_string_once(plot_settings@yaxis_string, idx_mod) - res@gsnLeftString = \ - set_string_once(plot_settings@left_plot_subheader, idx_mod) - res@gsnRightString = set_string_once(units, idx_mod) - - if (isatt(plot_settings, "xaxis_string")) then - res@tiXAxisString = set_string_once(plot_settings@xaxis_string, idx_mod) - end if - - plot_array(idx_mod) = gsn_csm_xy(wks, xaxis, precip(idx_mod, :), res) - - ; Remove borders such that next plot only draws the actual "bars" - res = remove_figure_borders(res) - end do ; idx_mod = 0, dim_MOD - 1 - - ; Label bar resources - lbres = True ; labelbar only resources - lbres@vpWidthF = 0.30 ; labelbar width - lbres@vpHeightF = 0.024 * dim_MOD ; labelbar height - lbres@lbBoxMajorExtentF = 0.36 ; puts space between color boxes - lbres@lbFillColors = di@colors_seasonal - lbres@lbMonoFillPattern = True ; Solid fill pattern - lbres@lbLabelJust = "CenterLeft" ; left justify labels - lbres@lbPerimOn = True - lbres@lbPerimFill = 0 - lbres@lbPerimFillColor = "white" - lbres@lbPerimColor = "black" - labelbar = gsn_create_labelbar(wks, dim_MOD, labels, lbres) - - ; Place annotations - amres = True - amres@amZone = 3 - amres@amSide = "Right" - amres@amParallelPosF = 0.88 - amres@amOrthogonalPosF = -0.25 - am_labelbar_id = gsn_add_annotation(plot_array(dim_MOD - 1), labelbar, amres) - - ; If requested, add a text info box and/or debug info box to each plot - txres = True - txres@txFuncCode = "~" - if (debuginfo) then - debuginfo@years = di@years_string - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, \ - plot_array(dim_MOD - 1)) - drawNDCGrid(wks) - end if - - draw(wks) - if (debuginfo) then - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - frame(wks) - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("xy_plot_wrapper") -procedure xy_plot_wrapper(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; -; Return value -; -; Description -; Wrapper function for the plot script 'xy_line(...)' -; -; Caveats -; -; References -; -; Modification history -; 20150703-A_eval_ma: written. -; -local annots, annots_mmm, avgstd, avgstd_mmm, colors, colors_mmm, \ - dashes, dashes_mmm, diag_script_base, dim_VAR, field_type0, field_type1, i, \ - idx_mod, imon, output_dir, output_filename, output_file_path, res, \ - storage_record, temp, thicks, thicks_mmm, values, values_stddev, \ - values_stddev, var0, var1, wks, wks_debug, idx_th -begin - - funcname = "xy_plot_wrapper" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - values = retrieve_from_vault(storage_vault, storage_record) - units = values@units - - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - ; ---------------------------------------------- - ; Define output workstation for xy plot - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - aux_filename_info = plot_settings@aux_filename_info + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - if (debuginfo) then - wks_debug = gsn_open_wks(output_file_type, output_file_path) - end if - - values&month@units = "Multi-year monthly mean" - - ; Select colors and other plotting attributes - ; See ./diag_scripts/shared/plot/style.ncl - colors = project_style(diag_script_info, "colors") - dashes = project_style(diag_script_info, "dashes") - thicks = project_style(diag_script_info, "thicks") - annots = project_style(diag_script_info, "annots") - avgstd = project_style(diag_script_info, "avgstd") - - ; Select colors and other plotting attributes for multi-model mean - if (diag_script_info@multi_model_mean .eq. "y") then - ; project_style evaluates metadata of variable "models" - temp = models - - ; -> keep original "models" in "temp" and restore later - copy_VarMeta(models, temp) - delete(models) - - ; Use "models" to pass on attribute names - models = getvaratts(temp) - do i = 0, dimsizes(models) - 1 - ; Define all original attributes again, but empty - models@$models(i)$ = "" - end do - input_file_info@dataset = "model_mean" - - ; See ./diag_scripts/shared/plot/style.ncl - colors_mmm = project_style(diag_script_info, "colors") - dashes_mmm = project_style(diag_script_info, "dashes") - thicks_mmm = project_style(diag_script_info, "thicks") - annots_mmm = project_style(diag_script_info, "annots") - avgstd_mmm = project_style(diag_script_info, "avgstd") - delete(models) - models = temp ; Restore original "models" - copy_VarMeta(temp, models) - delete(temp) - end if - - ; Calculate standard deviation of models - if (di@multi_model_mean .ne. "y") then - ; define anyway, because fields are needed as parameters for xy_line - values_stddev = 0 - else - ; Mean, stddev, -1 * stddev, +1 * stddev - values_stddev = new((/4, 12/), float) - ; See ./diag_scripts/shared/plot/style.ncl for which data shall be - ; included in the statistics - temp = ind(avgstd .eq. 0) - do imon = 0, 11 - values_stddev(0, imon) = dim_avg_n_Wrap(values(temp, imon), (/0/)) - values_stddev(1, imon) = dim_stddev_n_Wrap(values(temp, imon), (/0/)) - values_stddev(2, imon) = values_stddev(0, imon) - values_stddev(1, imon) - values_stddev(3, imon) = values_stddev(0, imon) + values_stddev(1, imon) - end do - delete(temp) - end if - - ; Name of x-axis coordinate - x_axis_coord = "month" ; default - if (isatt(plot_settings, "x_axis_coord")) then - x_axis_coord = plot_settings@x_axis_coord - end if - - ; Min and max values on x-axis - res = True - res@tmXTOn = False - res@tmYROn = True - if (di@supporting_gridlines .eq. "y") then - res@tmXMajorGrid = True - res@gsnYRefLine = 0 - end if - res@trXMinF = min(values&$x_axis_coord$) - 0.05 * \ - (max(values&$x_axis_coord$) - min(values&$x_axis_coord$)) - res@trXMaxF = max(values&$x_axis_coord$) + 0.25 * \ - (max(values&$x_axis_coord$) - min(values&$x_axis_coord$)) - - res@tmXBMode = "Explicit" - res@tmXBValues = (/0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11/) - res@tmXBLabels = (/"J", "F", "M", "A", "M", "J", \ - "J", "A", "S", "O", "N", "D"/) - res@tiMainString = plot_settings@title_string - res@tiYAxisString = plot_settings@yaxis_string - res@gsnRightString = values@units - res@gsnRightStringFontHeightF = 16 - res@gsnLeftString = plot_settings@left_plot_subheader - res@gsnLeftStringFontHeightF = 16 - - ; Replace any CMIP5-style line thickness - if (diag_script_info@styleset .eq. "CMIP5") then - res@xyLineThicknesses = thicks - res@xyLineThicknesses(:) = 3 - end if - - xy_line(wks, values, values&month, values_stddev, res, False) - - if (debuginfo) then - xy_line(wks_debug, values, values&month, values_stddev, res, debuginfo) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("ts_line_wrapper") -procedure ts_line_wrapper(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -; -; Arguments -; storage_vault: handle/pointer to vault with all models -; di: logical with diagnostic script info -; plot_settings: logical with general plot_settings -; storage_name: name of first processed variable in the vault -; debuginfo: info to put onto plot in debug mode -; -; Return value -; -; Description -; Wrapper script for the plot script 'xy_line(..)' with a -; time series on the x-axis. -; -; Caveats -; -; References -; -; Modification history -; 20150703-A_eval_ma: written. -; -local annots, avgstd, diag_script_base, dim_VAR, field_type0, field_type1, \ - idx_mod, imonth, output_dir, output_filename, output_file_path, res, \ - storage_record, temp, val_area_stddev, values, values_stddev, var0, var1, \ - wks, wks_debug -begin - - funcname = "ts_line_wrapper" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@dataset) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - storage_record = storage_name - values = retrieve_from_vault(storage_vault, storage_record) - units = values@units - - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - ; ---------------------------------------------- - ; Define output workstation for xy plot - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - aux_filename_info = plot_settings@aux_filename_info + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - if (debuginfo) then - wks_debug = gsn_open_wks(output_file_type, output_file_path) - end if - - ; Determine time range - start_year = min(stringtoint(input_file_info@start_year)) - end_year = max(stringtoint(input_file_info@end_year)) - - ; Select attributes - annots = project_style(diag_script_info, "annots") - avgstd = project_style(diag_script_info, "avgstd") - - ; Prepare calculation of standard deviation of models - if (diag_script_info@multi_model_mean .eq. "y") then - values_stddev = new((/4, end_year - start_year + 1/), float) - val_area_stddev = new((/4, end_year - start_year + 1/), float) - else ; initialize anyway, because both are needed as parameters in xy_line - values_stddev = 0 - val_area_stddev = 0 - end if - - ; Calculate standard deviation of models - if (diag_script_info@multi_model_mean .eq. "y") then - ; See style_$project$.ncl for which data shall - ; be included in the statistics - temp = ind(avgstd .eq. 0) - do imonth = 0, dimsizes(values&years) - 1 - ; For extent - values_stddev(0, imonth) = \ - dim_avg_n_Wrap(values(temp, imonth), (/0/)) - values_stddev(1, imonth) = \ - dim_stddev_n_Wrap(values(temp, imonth), (/0/)) - values_stddev(2, imonth) = \ - values_stddev(0, imonth) - values_stddev(1, imonth) - values_stddev(3, imonth) = \ - values_stddev(0, imonth) + values_stddev(1, imonth) - end do - delete(temp) - end if - - res = True - res@tmXTOn = False - res@tmYROn = True - if (di@supporting_gridlines .eq. "y") then - res@tmXMajorGrid = True - res@gsnYRefLine = 0 - end if - res@tmXBFormat = "4f" - res@tiMainString = plot_settings@title_string - res@tiYAxisString = plot_settings@yaxis_string - res@tiXAxisString = plot_settings@xaxis_string - res@gsnRightString = values@units - res@gsnRightStringFontHeightF = 16 - res@gsnLeftString = plot_settings@left_plot_subheader - res@gsnLeftStringFontHeightF = 16 - res@trXMinF = min(di@years) - 0.05 * (max(di@years) - min(di@years)) - res@trXMaxF = max(di@years) + 0.25 * (max(di@years) - min(di@years)) - - ; See ./diag_scripts/shared/plot/style.ncl - colors = project_style(diag_script_info, "colors") - dashes = project_style(diag_script_info, "dashes") - thicks = project_style(diag_script_info, "thicks") - - ; Replace any CMIP5-style line thickness - if (diag_script_info@styleset .eq. "CMIP5") then - res@xyLineThicknesses = thicks - res@xyLineThicknesses(:) = 3 - end if - - xy_line(wks, values, values&years, values_stddev, res, False) - - if (debuginfo) then - xy_line(wks_debug, values, di@years, values_stddev, res, debuginfo) - end if - - leave_msg(scriptname, funcname) - -end - -; ############################################################################# -undef("xy_line_overlap") -procedure xy_line_overlap(storage_vault[1]:logical, - di[1]:logical, - plot_settings[1]:logical, - storage_name[1]:string, - debuginfo[1]:logical) -local annots, avgstd, diag_script_base, dim_VAR, field_type0, field_type1, \ - idx_mod, imonth, output_dir, output_filename, output_file_path, res, \ - storage_record, temp, val_area_stddev, values, values_stddev, var0, var1, \ - wks, wks_debug, res2, coord -begin - - funcname = "xy_line_overlap" - scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" - enter_msg(scriptname, funcname) - - dim_MOD = dimsizes(input_file_info@name) - dim_VAR = dimsizes(variables) - var0 = variables(0) - field_type0 = field_types(0) - if (dim_VAR .gt. 1) then ; Assume two variables? - var1 = variables(1) - field_type1 = field_types(1) - else - var1 = "" - field_type1 = "" - end if - - ; 'plot_dir' if fetched from ncl.interface - diag_script_base = basename(diag_script) - output_dir = config_user_info@plot_dir - - ; ---------------------------------------------- - ; Define output workstation for xy plot - ; ---------------------------------------------- - idx_mod = -1 ; No specific model defined - aux_filename_info = plot_settings@aux_filename_info - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - wks = gsn_open_wks(output_file_type, output_file_path) - - aux_filename_info = plot_settings@aux_filename_info + "-debug" - output_filename = \ - interface_get_figure_filename(diag_script_base, var0 + var1, \ - field_type0 + field_type1, \ - aux_filename_info, idx_mod) - output_file_path = output_dir + output_filename - if (debuginfo) then - wks_debug = gsn_open_wks(output_file_type, output_file_path) - end if - - plot = new((/dim_MOD/), graphic) - - ; Determine time range - start_year = min(stringtoint(input_file_info@start_year)) - end_year = max(stringtoint(input_file_info@end_year)) - - ; Select attributes - annots = project_style(diag_script_info, "annots") - avgstd = project_style(diag_script_info, "avgstd") - - res = True - res@tmXTOn = False - res@tmYROn = True - - ; Select colors and other plotting attributes - ; (see ./diag_scripts/shared/plot/style.ncl) - colors = project_style(di, "colors") - dashes = project_style(di, "dashes") - thicks = project_style(di, "thicks") - annots = project_style(di, "annots") - avgstd = project_style(di, "avgstd") - do idx_th = 0, dimsizes(thicks) - 1 - if (thicks(idx_th) .lt. 5) then - thicks(idx_th) = 5 - end if - end do - if (diag_script_info@multi_model_mean .eq. "y") then - ; Project_style evaluates metadata of variable "models" - temp = models - - ; -> keep original "models" in "temp" and restore later - copy_VarMeta(models, temp) - delete(models) - - ; Use "models" to pass on attribute names - models = getvaratts(temp) ; use "models" to pass on attribute names - do i = 0, dimsizes(models) - 1 - ; Define all original attributes again, but empty - input_file_info@$models(i)$ = "" - end do - input_file_info@dataset = "model_mean" - - ; See ./diag_scripts/shared/plot/style.ncl - colors_mmm = project_style(diag_script_info, "colors") - dashes_mmm = project_style(diag_script_info, "dashes") - thicks_mmm = project_style(diag_script_info, "thicks") - annots_mmm = project_style(diag_script_info, "annots") - avgstd_mmm = project_style(diag_script_info, "avgstd") - delete(models) - models = temp ; restore original "models" - copy_VarMeta(temp, models) - delete(temp) - end if - - res@gsnFrame = False ; don't advance frame. - res@xyMonoDashPattern = False - res@gsnDraw = False ; don't draw yet - res@gsnFrame = False ; don't advance frame yet - res@tiMainFontHeightF = .025 ; font height - res@gsnMaximize = True - res@tmYRBorderOn = True - res@tmYROn = True - - res@tmYLMajorOutwardLengthF = 0 ; draw tickmarks inward - res@tmYLMinorOutwardLengthF = 0 ; draw minor ticsk inward - - if (isatt(di, "minmax")) then - ymax = di@minmax(1) - ymin = di@minmax(0) - res@trYMaxF = ymax + 0.03 * (ymax - ymin) - res@trYMinF = ymin - 0.03 * (ymax - ymin) - else - if (.not.isatt(res, "trYMaxF")) then - ymax = di@minmax(1) - ymin = di@minmax(0) - res@trYMaxF = ymax + 0.03 * (ymax - ymin) - res@trYMinF = ymin - 0.03 * (ymax - ymin) - end if - end if - - if (di@x_gridlines .eq. "y") then - res@tmXMajorGrid = True - end if - if (di@y_gridlines .eq. "y") then - res@tmYMajorGrid = True - end if - res@tiMainString = plot_settings@title_string - res@tiYAxisString = plot_settings@yaxis_string - res@tiXAxisString = plot_settings@xaxis_string - res@gsnRightStringFontHeightF = 16 - res@gsnLeftString = plot_settings@left_plot_subheader - - is_cyclic = False - - ; Fetch first entry to check if we need hours or months on X-axis - storage_variable_name = \ - str_join((/storage_name, sprinti("%i", 0)/), str_vault_sep) - values = retrieve_from_vault(storage_vault, storage_variable_name) - - ; So far only two options (hours and latitudes), thus handled expclitily - ; here rather than in a config file.... - if (iscoord(values, "hour")) then - interp = fspan(0, 24, 9) - coord = "hour" - res@trXMinF = 0. - res@trXMaxF = 24. - else - interp = ispan(di@latrange(0), di@latrange(1), 1) - coord = "lat" - end if - interp_size = dimsizes(interp) - interp_mod = new((/interp_size, dim_MOD/), float) - delete(values) - - do idx_mod = 0, dim_MOD - 1 - storage_variable_name = \ - str_join((/storage_name, sprinti("%i", idx_mod)/), str_vault_sep) - values = retrieve_from_vault(storage_vault, storage_variable_name) - interp_mod(:, idx_mod) = \ - linint1(values&$coord$, values, is_cyclic, interp, 0) - res@gsnRightString = values@units - res@xyLineColors = colors(idx_mod) - res@xyLineThicknesses = thicks(idx_mod) - res@xyDashPatterns = dashes(idx_mod) - res@tmYLLabelDeltaF = -0.5 - res@tiMainString = set_string_once(plot_settings@title_string, idx_mod) - res@tiYAxisString = set_string_once(plot_settings@yaxis_string, idx_mod) - res@gsnLeftString = \ - set_string_once(plot_settings@left_plot_subheader, idx_mod) - res@gsnRightString = set_string_once(values@units, idx_mod) - - if (idx_mod .eq. 0) then - plot(idx_mod) = gsn_csm_xy(wks, values&$coord$, values, res) - getvalues plot(0) - "vpXF" : vpx - "vpYF" : vpy - "vpWidthF" : vpw - "vpHeightF" : vph - end getvalues - setvalues plot(0) - "vpWidthF" : vpw - 0.15 - end setvalues - res@vpWidthF = vpw - 0.15 - else - plot(idx_mod) = gsn_csm_xy(wks, values&$coord$, values, res) - overlay(plot(0), plot(idx_mod)) - end if - delete(values) - end do - - ; Add multi model mean and stddev - if (diag_script_info@multi_model_mean .eq. "y") then - is_model = ind(avgstd .eq. 0) - values_stddev = new((/4, interp_size/), float) - - ; See ./diag_scripts/shared/plot/style.ncl for which data shall be - ; included in the statistics - do idx_interp = 0, interp_size - 1 - values_stddev(0, idx_interp) = \ - dim_avg_n_Wrap(interp_mod(idx_interp, is_model), (/0/)) - values_stddev(1, idx_interp) = \ - dim_stddev_n_Wrap(interp_mod(idx_interp, is_model), (/0/)) - values_stddev(2, idx_interp) = \ - values_stddev(0, idx_interp) - values_stddev(1, idx_interp) - values_stddev(3, idx_interp) = \ - values_stddev(0, idx_interp) + values_stddev(1, idx_interp) - end do - - ; Stddev - res_stddev = True - copy_VarMeta(res, res_stddev) - res_stddev@gsnXYFillColors = "LightGrey" - delete(res_stddev@xyLineColors) - - ; We don't want the line, so make it transparent. - res_stddev@xyLineColor = -1 - shading_plot = gsn_csm_xy(wks, interp, values_stddev(2:3, :), res_stddev) - overlay(plot(0), shading_plot) - ; mmm - res2 = res - delete([/res2@xyLineThicknesses, res2@xyLineColors, res2@xyDashPatterns/]) - res2@xyLineThicknesses = thicks_mmm - res2@xyLineColors = colors_mmm - res2@xyDashPatterns = dashes_mmm - res2@gsnRightString = "" - mmm = gsn_csm_xy(wks, interp, values_stddev(0, :), res2) - overlay(plot(0), mmm) - end if - - if (debuginfo) then - xy_line(wks_debug, values, di@years, values_stddev, res, debuginfo) - end if - - ; Resources for a customized legend. - lgres = True - lgres@lgMonoLineThickness = False - lgres@lgLabelFontHeightF = .08 ; legend label font thickness - lgres@vpWidthF = 0.15 ; width of legend (NDC) - lgres@vpHeightF = vph ; height of legend (NDC) - lgres@lgPerimOn = True - lgres@lgPerimColor = 1 - lgres@lgMonoDashIndex = False - lgres@lgBoxBackground = 0 - lgres@lgPerimFill = 0 - lgres@lgPerimFillColor = 0 - lgres@lgBoxMajorExtentF = 1 - - if (diag_script_info@multi_model_mean .eq. "y") then - lgres@lgLineColors = array_append_record(colors, colors_mmm, 0) - lgres@lgDashIndexes = array_append_record(dashes, dashes_mmm, 0) - lgres@lgLineThicknesses = array_append_record(thicks, thicks_mmm, 0) - labels = array_append_record(annots, annots_mmm, 0) - else - lgres@lgLineColors = colors - lgres@lgDashIndexes = dashes - lgres@lgLineThicknesses = thicks - labels = annots - end if - nitems = dimsizes(labels) ; number of legend items - - ; Create legend - lbid = gsn_create_legend(wks, nitems, labels, lgres) - - ; Add legend at the correct position - ; Point (0, 0) is the dead center of the plot. Point (0, .5) is center, - ; flush bottom. Point (0.5, 0.5) is flush bottom, flush right. - amres = True - amres@amJust = "TopRight" ; reference corner of box - amres@amParallelPosF = 0.5 ; Move legend to +right, -left - amres@amOrthogonalPosF = -0.5 ; +down, -up - - ; Get plot size - getvalues plot(0) - "vpXF" : vpx - "vpYF" : vpy - "vpWidthF" : vpw - "vpHeightF" : vph - end getvalues - - bres = True - bres@gsnDraw = False - bres@gsnFrame = False - bres@tmXBOn = False - bres@tmYLOn = False - bres@tmXTOn = False - bres@tmYROn = False - bres@tmXBBorderOn = False - bres@tmXTBorderOn = False - bres@tmYLBorderOn = False - bres@tmYRBorderOn = False - - ; Create a blank plot with the same size as plot, attach legend - bres@vpXF = vpx - bres@vpYF = vpy - bres@vpWidthF = vpw + 0.15 - bres@vpHeightF = vph - blank_plot = gsn_csm_blank_plot(wks, bres) - ; Add legend to plot - annoid = gsn_add_annotation(blank_plot, lbid, amres) - - ; Create another blank plot to make sure plot border thickness is even - bres@tmXBBorderOn = True - bres@tmXTBorderOn = True - bres@tmYLBorderOn = True - bres@tmYRBorderOn = True - bres@tmBorderThicknessF = 3 - - blank_plot2 = gsn_csm_blank_plot(wks, bres) - - ; Draw first plot with the actual values (+ grid lines if - ; tmXMajorGrid/gsnYRefLine are set) - draw(plot(0)) - - ; Draw second plot with legend on top of previous plot. This - ; is, as far as I know, the only way to draw the legend on top - ; of the grid lines - draw(blank_plot) - - ; Redraw plot borders since the legend may (partially) cover some - ; of the borders drawn in the first 'plot' - draw(blank_plot2) - if (debuginfo) then - txres = True - txres@txFuncCode = "~" - debugbox = write_info(debuginfo) - am_infobox_id = place_debuginfo(wks, debugbox, txres, blank_plot2) - drawNDCGrid(wks) - place_description(wks, debuginfo@description, debuginfo@description_ycoord) - end if - - draw(plot(0)) - frame(wks) - - leave_msg(scriptname, funcname) - -end diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_03.rgb new file mode 100644 index 0000000000..a1e0a1b219 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +237 248 177 +127 205 187 +44 127 184 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_04.rgb new file mode 100644 index 0000000000..e2d3d4dd22 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +255 255 204 +161 218 180 +65 182 196 +34 94 168 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_05.rgb new file mode 100644 index 0000000000..868f792eb5 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_multiple_hue_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +255 255 204 +161 218 180 +65 182 196 +44 127 184 +37 52 148 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_03.rgb new file mode 100644 index 0000000000..1c67e7a9ab --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +222 253 247 +158 202 225 +49 130 189 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_04.rgb new file mode 100644 index 0000000000..3e316e6ae4 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +239 243 255 +189 215 231 +107 174 214 +33 113 181 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_05.rgb new file mode 100644 index 0000000000..9eda812237 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_blue_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +239 243 255 +189 215 231 +107 174 214 +49 130 189 +8 81 156 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_03.rgb new file mode 100644 index 0000000000..57e429b8e0 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +229 245 224 +161 217 155 +49 163 84 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_04.rgb new file mode 100644 index 0000000000..b39169004e --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +237 248 233 +186 228 179 +116 196 118 +35 139 69 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_05.rgb new file mode 100644 index 0000000000..7d6fb308b5 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_multiple_hue_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +237 248 233 +186 228 179 +116 196 118 +49 163 84 +0 109 44 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_03.rgb new file mode 100644 index 0000000000..57e429b8e0 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +229 245 224 +161 217 155 +49 163 84 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_04.rgb new file mode 100644 index 0000000000..b39169004e --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +237 248 233 +186 228 179 +116 196 118 +35 139 69 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_05.rgb new file mode 100644 index 0000000000..7d6fb308b5 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_green_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +237 248 233 +186 228 179 +116 196 118 +49 163 84 +0 109 44 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_01.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_01.rgb new file mode 100644 index 0000000000..39eda0da54 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_01.rgb @@ -0,0 +1,4 @@ +ncolors=1 + +#R G B +0 0 0 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_02.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_02.rgb new file mode 100644 index 0000000000..4ab63d21e7 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_02.rgb @@ -0,0 +1,5 @@ +ncolors=2 + +#R G B +0 0 0 +84 146 205 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_03.rgb new file mode 100644 index 0000000000..3bed0139fe --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_03.rgb @@ -0,0 +1,7 @@ +ncolors=3 + +#R G B +0 0 0 +84 146 205 +196 121 0 + diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_04.rgb new file mode 100644 index 0000000000..0008a53aa8 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_04.rgb @@ -0,0 +1,8 @@ +ncolors=4 + +#R G B +0 0 0 +84 146 205 +196 121 0 +128 128 128 + diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_05.rgb new file mode 100644 index 0000000000..f5196b1058 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +0 0 0 +84 146 205 +196 121 0 +128 128 128 +0 52 102 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_06.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_06.rgb new file mode 100644 index 0000000000..920e22ee31 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_06.rgb @@ -0,0 +1,9 @@ +ncolors=6 + +#R G B +0 0 0 +84 146 205 +196 121 0 +128 128 128 +0 52 102 +0 79 0 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_shading.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_shading.rgb new file mode 100644 index 0000000000..54d44b6ef7 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_line_shading.rgb @@ -0,0 +1,9 @@ +ncolors=6 + +#R G B +128 128 128 +146 197 222 +223 194 125 +191 191 191 +67 147 195 +169 208 142 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_05.rgb new file mode 100644 index 0000000000..90c77a31c1 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +166 67 26 +223 194 125 +245 245 245 +128 205 193 +1 133 113 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_06.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_06.rgb new file mode 100644 index 0000000000..244242dce4 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_06.rgb @@ -0,0 +1,9 @@ +ncolors=6 + +#R G B +140 81 10 +216 179 101 +246 232 195 +199 234 229 +90 180 172 +1 102 94 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_07.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_07.rgb new file mode 100644 index 0000000000..fffc8c501f --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_07.rgb @@ -0,0 +1,10 @@ +ncolors=7 + +#R G B +140 81 10 +216 179 101 +246 232 195 +245 245 245 +199 234 229 +90 180 172 +1 102 94 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_08.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_08.rgb new file mode 100644 index 0000000000..34b6382e48 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_08.rgb @@ -0,0 +1,11 @@ +ncolors=8 + +#R G B +140 81 10 +191 129 45 +223 194 125 +246 232 195 +199 234 229 +128 205 193 +53 151 143 +1 102 94 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_09.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_09.rgb new file mode 100644 index 0000000000..181c96bbf5 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_09.rgb @@ -0,0 +1,12 @@ +ncolors=9 + +#R G B +140 81 10 +191 129 45 +223 194 125 +246 232 195 +245 245 245 +199 234 229 +128 205 193 +53 151 143 +1 102 94 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_10.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_10.rgb new file mode 100644 index 0000000000..e7c70395f6 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_10.rgb @@ -0,0 +1,13 @@ +ncolors=10 + +#R G B +84 48 5 +140 81 10 +191 129 45 +223 194 125 +246 232 195 +199 234 229 +128 205 193 +53 151 143 +1 102 94 +0 60 48 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_11.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_11.rgb new file mode 100644 index 0000000000..6e4c8f8872 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_precipitation_11.rgb @@ -0,0 +1,14 @@ +ncolors=11 + +#R G B +84 48 5 +140 81 10 +191 129 45 +223 194 125 +246 232 195 +245 245 245 +199 234 229 +128 205 193 +53 151 143 +1 102 94 +0 60 48 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_03.rgb new file mode 100644 index 0000000000..3f57515271 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +224 236 244 +158 188 218 +136 86 167 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_04.rgb new file mode 100644 index 0000000000..6a461a0006 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +237 248 251 +179 205 227 +140 150 198 +136 65 157 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_05.rgb new file mode 100644 index 0000000000..6d557776a3 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_multiple_hue_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +237 248 251 +179 205 227 +140 150 198 +136 86 167 +129 15 124 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_03.rgb new file mode 100644 index 0000000000..29886e5a74 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +239 237 245 +188 189 220 +117 107 177 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_04.rgb new file mode 100644 index 0000000000..1a985069e4 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +242 240 247 +203 201 226 +158 154 200 +106 81 163 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_05.rgb new file mode 100644 index 0000000000..949e9ed9be --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_purple_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +242 240 247 +203 201 226 +158 154 200 +117 107 177 +84 39 143 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_line.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_line.rgb new file mode 100644 index 0000000000..fdf209dd44 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_line.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +153 0 2 +196 121 0 +84 146 205 +0 52 102 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_shading.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_shading.rgb new file mode 100644 index 0000000000..64d046797e --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_rcp_shading.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +252 209 197 +204 174 113 +146 197 222 +67 147 195 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_03.rgb new file mode 100644 index 0000000000..69e6f6f419 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +254 237 160 +254 178 76 +240 59 32 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_04.rgb new file mode 100644 index 0000000000..dde89be21d --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +255 255 178 +254 204 92 +253 141 60 +227 26 28 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_05.rgb new file mode 100644 index 0000000000..709c77877a --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_multiple_hue_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +255 255 178 +254 204 92 +253 141 60 +240 59 32 +189 0 38 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_03.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_03.rgb new file mode 100644 index 0000000000..b95002a551 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_03.rgb @@ -0,0 +1,6 @@ +ncolors=3 + +#R G B +254 224 210 +252 146 116 +222 45 38 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_04.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_04.rgb new file mode 100644 index 0000000000..432dce8cf0 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_04.rgb @@ -0,0 +1,7 @@ +ncolors=4 + +#R G B +254 229 217 +252 174 145 +251 106 74 +203 24 29 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_05.rgb new file mode 100644 index 0000000000..4405e2bf1c --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_red_non-diverging_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +254 229 217 +252 174 145 +251 106 74 +222 45 38 +165 15 21 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_05.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_05.rgb new file mode 100644 index 0000000000..26b59492df --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_05.rgb @@ -0,0 +1,8 @@ +ncolors=5 + +#R G B +202 0 32 +244 165 130 +247 247 247 +146 197 222 +5 113 176 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_06.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_06.rgb new file mode 100644 index 0000000000..7b5506c767 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_06.rgb @@ -0,0 +1,9 @@ +ncolors=6 + +#R G B +178 24 43 +239 138 98 +253 178 199 +209 229 240 +103 169 207 +33 102 172 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_07.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_07.rgb new file mode 100644 index 0000000000..3d55ff3526 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_07.rgb @@ -0,0 +1,11 @@ +ncolors=7 + +#R G B +178 24 43 +239 138 98 +253 219 199 +247 247 247 +209 229 240 +103 169 207 +33 102 172 + diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_08.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_08.rgb new file mode 100644 index 0000000000..4dd152962b --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_08.rgb @@ -0,0 +1,12 @@ +ncolors=8 + +#R G B +178 24 43 +214 96 77 +244 165 130 +253 178 199 +209 229 240 +146 197 222 +67 147 195 +33 102 172 + diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_09.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_09.rgb new file mode 100644 index 0000000000..9606a0152d --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_09.rgb @@ -0,0 +1,13 @@ +ncolors=9 + +#R G B +178 24 43 +214 96 77 +244 165 130 +253 178 199 +247 247 247 +209 229 240 +146 197 222 +67 147 195 +33 102 172 + diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_10.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_10.rgb new file mode 100644 index 0000000000..c5c034ad29 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_10.rgb @@ -0,0 +1,13 @@ +ncolors=10 + +#R G B +103 0 31 +178 24 43 +214 96 77 +244 165 130 +253 219 199 +209 229 240 +146 197 222 +67 147 195 +33 102 172 +5 48 97 diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_11.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_11.rgb new file mode 100644 index 0000000000..b8e9810478 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_temperature_11.rgb @@ -0,0 +1,15 @@ +ncolors = 11 + +# R G B +103 0 31 +178 24 43 +214 96 77 +244 165 130 +253 219 199 +247 247 247 +209 229 240 +146 197 222 +67 147 195 +33 102 172 +5 48 97 + diff --git a/esmvaltool/diag_scripts/shared/plot/taylor_diagram_less_hardcoded.ncl b/esmvaltool/diag_scripts/shared/plot/taylor_diagram_less_hardcoded.ncl deleted file mode 100644 index 94aab7ecc9..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/taylor_diagram_less_hardcoded.ncl +++ /dev/null @@ -1,677 +0,0 @@ -; This is a donated script. It has no guarnteed support from the NCL project. -; See further comments below. For more info, and any improvements or bugs, -; please contact Jatin Kala (Jatin.Kala.JK *AT* gmail.com) -; ============================================================================= -function taylor_diagram(wks:graphic, - legendwks:graphic, - RATIO[*][*]:numeric, - CC[*][*]:numeric, - rOpts:logical) - -local dimR, nCase, nVar, X, Y, nc, angle, xyMin, xyOne, ceil_max_val, xyMax, \ - xyMax_Panel, FontHeightF, rxy, tempo_values, tempo_values1, temp_string, \ - temp1_string, temp_string_y, temp_string_y1, npts, xx, yy, sLabels, \ - cLabels, rad, angC, taylor, rsrRes, dum0, dum1, dum2, nStnRad, rr, radC, \ - xC, yC, txRes, dum4, plRes, tmEnd, radTM, xTM, yTM, dum5, dum6, i, mTM, \ - angmTM, radmTM, dum7, angRL, rlRes, dum8, xRL, yRL, respl, dx, ncon, npts, \ - ang, dum9, dist_n, Markers, Colors, gsRes, ptRes, markerTxYOffset, dum10, \ - dum11, n, lgres, nModel, lbid, lbid2, amres, annoid1, nVar, \ - varLabelsFontHeightF, txres, delta_y, ys, dum12 -begin - - dimR = dimsizes(RATIO) - nCase = dimR(0) ; # of cases [models] - nVar = dimR(1) ; # of variables - - ; x/y coordinates for plotting - X = new((/nCase, nVar/), typeof(RATIO)) - Y = new((/nCase, nVar/), typeof(RATIO)) - - do nc = 0, nCase - 1 - angle = acos(CC(nc, :)) - X(nc, :) = RATIO(nc, :) * cos(angle) - Y(nc, :) = RATIO(nc, :) * sin(angle) - end do - - ; fix to nearest x.5 - xyMin = 0. - xyOne = 1.00 - rmax = ceil(max(RATIO)) - if (rmax.lt.1.5) then - rmax = 1.5 - end if - if (rmax.gt.3.0) then - rmax = 3.0 - end if - xyMax = rmax + 0.1 - xyMax_Panel = xyMax + 0.10 - - if (rOpts .and. isatt(rOpts, "txFontHeightF")) then - FontHeightF = rOpts@txFontHeightF - else - FontHeightF = 0.0175 - end if - -; ---------------------------------------------------------------- -; Part 1: -; base plot: Based upon request of Mark Stevens -; basic x-y and draw the 1.0 observed and the outer curve at 1.65 -; ---------------------------------------------------------------- - - rxy = True - rxy@gsnDraw = False - rxy@gsnFrame = False - rxy@vpHeightF = 0.65 - rxy@vpWidthF = 0.65 - if (rOpts .and. isatt(rOpts, "plotSize")) then - rxy@vpHeightF = rOpts@plotSize - rxy@vpWidthF = rOpts@plotSize - rxy@vpXF = 0.125 - rxy@vpYF = 0.825 - end if - rxy@tmYLBorderOn = False - rxy@tmXBBorderOn = False - - rxy@tiYAxisString = "Standardized Deviations (Normalized)" - rxy@tiYAxisFontHeightF = FontHeightF - - rxy@tmXBMode = "Explicit" - delta = 0.5 - if (rmax.le.1.5) then - delta = 0.25 - end if - tempo_values = \ - decimalPlaces(fspan(0.0, rmax, toint(rmax / delta) + 1), 2, True) - tempo_values1 = tempo_values(ind(tempo_values .lt. xyMax)) - delete(tempo_values) - rxy@tmXBValues = tempo_values1 - delete(tempo_values1) - temp_string = tostring(sprintf("%4.2f", rxy@tmXBValues)) - temp_string(0) = " " - temp1_string = where(temp_string .eq. "1.00", "REF", temp_string) - rxy@tmXBLabels = temp1_string - if (rOpts .and. isatt(rOpts, "OneX")) then - rxy@tmXBLabels = temp_string - end if - delete(temp_string) - delete(temp1_string) - - rxy@tmXBMajorLengthF = 0.015 - rxy@tmXBLabelFontHeightF = FontHeightF - rxy@tmXBMinorOn = False - rxy@trXMaxF = xyMax_Panel - rxy@tmYLMode = "Manual" - rxy@tmYLMinorOn = False - rxy@tmYLMajorLengthF = rxy@tmXBMajorLengthF - rxy@tmYLLabelFontHeightF = FontHeightF - rxy@tmYLMode = "Explicit" - rxy@tmYLValues = rxy@tmXBValues - temp_string_y = rxy@tmXBLabels - temp_string_y(0) = "0.00" - temp_string_y1 = where(temp_string_y .eq. "REF", "1.00", temp_string_y) - delete(temp_string_y) - rxy@tmYLLabels = temp_string_y1 - delete(temp_string_y1) - rxy@trYMaxF = xyMax_Panel - - rxy@tmYRBorderOn = False - rxy@tmYROn = False - rxy@tmXTBorderOn = False - rxy@tmXTOn = False - rxy@xyDashPatterns = (/0 /) - rxy@xyLineThicknesses = (/2./) - rxy@gsnFrame = False - npts = 100 ; arbitrary - xx = fspan(xyMin, xyMax, npts) - yy = sqrt(xyMax ^ 2 - xx ^ 2) ; outer correlation line (xyMax) - sLabels = (/"0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", \ - "0.7", "0.8", "0.9", "0.95", "0.99", "1.0" /) - cLabels = stringtofloat(sLabels) - rad = 4. * atan(1.0) / 180. - angC = acos(cLabels) / rad ; angles: correlation labels - if (rOpts .and. isatt(rOpts, "tiMainString")) then - rxy@tiMainString = rOpts@tiMainString - if (isatt(rOpts, "tiMainFontHeightF")) then - rxy@tiMainFontHeightF = rOpts@tiMainFontHeightF - else - rxy@tiMainFontHeightF = 0.0225 - end if - end if - - taylor = gsn_xy(wks, xx, yy, rxy) - -; -------------------------------------------------------------- -; draw observational uncertainties given as normalized RMS error -; around the observational reference point at (1, 0) -; -------------------------------------------------------------- - - if (rOpts .and. isatt(rOpts, "rmsobs")) then - npts = 100 ; arbitrary - rmsobj = new(2, graphic) - - respl0 = True - respl0@gsLineThicknessF = 4.0 - respl0@gsLineDashPattern = 0 - respl0@gsLineColor = (/0.50, 0.95, 0.47/) - respl0@gsFillColor = (/0.85, 1.00, 0.80/) - rr = rOpts@rmsobs - - ; uncertainty circle covers whole plotting area - if (rr.ge.xyMax) then - ang = fspan(180, 360, npts) * rad - xx = 0.995 * xyMax * cos(ang) - yy = fabs(0.995 * xyMax * sin(ang)) - rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) - rmsobj(1) = gsn_add_polygon(wks, taylor, xx, yy, respl0) - else ; uncertainty circle covers only part of the plotting area - dist = rr + 1.0 - ; uncertainty circle has to be cropped - ; need to find intersection between uncertainty circule and outer arc -; if (dist .gt. max(rxy@tmXBValues)) then - if (dist .gt. xyMax) then - xtmp = (xyMax ^ 2 - rr ^ 2 + 1.0) / 2.0 - ytmp = sqrt(xyMax ^ 2 - xtmp ^ 2) - xtmp = xtmp - 1.0 - if (xtmp.eq.0.0) then - phitmp = 3.1415927 - else if (xtmp.gt.0.0) then - phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) - else - phitmp = 3.1415927 + atan(ytmp / xtmp) - end if - end if - ang = fspan(3.1415927, phitmp, npts) - xx1 = 1.0 + rr * cos(ang) - yy1 = fabs(rr * sin(ang)) - - xtmp = xx1(npts - 1) - ytmp = yy1(npts - 1) - if (xtmp.eq.0.0) then - phitmp = 3.1415927 - else if (xtmp.gt.0.0) then - phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) - else - phitmp = 3.1415927 + atan(ytmp / xtmp) - end if - end if - - ang2 = fspan(phitmp, 0.0, npts) - - xx2 = 0.995 * xyMax * cos(ang2) - yy2 = 0.995 * fabs(xyMax * sin(ang2)) - - if (isvar("xx")) then - delete(xx) - end if - if (isvar("yy")) then - delete(yy) - end if - xx = array_append_record(xx1, xx2, 0) - yy = array_append_record(yy1, yy2, 0) - rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) - rmsobj(1) = gsn_add_polyline(wks, taylor, xx1, yy1, respl0) - delete(xx1) - delete(xx2) - delete(yy1) - delete(yy2) - delete(ang2) - else ; uncertainty circle does not need any adjustments - ang = fspan(180, 360, npts) * rad - xx = 1.0 + rr * cos(ang) - yy = fabs(rr * sin(ang)) - rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) - rmsobj(1) = gsn_add_polyline(wks, taylor, xx, yy, respl0) - end if ; if uncertainty circle has to be cropped - - delete(ang) - delete(xx) - delete(yy) - - end if ; if uncertainty circle covers whole plotting area - end if ; if an uncertainty estimate is available - - rsrRes = True - rsrRes@gsLineThicknessF = rxy@xyLineThicknesses(0) - rsrRes@gsLineDashPattern = 0 - dum0 = gsn_add_polyline(wks, taylor, (/0., 0. /), (/0., xyMax/), rsrRes) - dum1 = gsn_add_polyline(wks, taylor, (/0., xyMax/), (/0., 0. /), rsrRes) - - xx = fspan(xyMin, xyOne, npts) - yy = sqrt(xyOne - xx ^ 2) - rsrRes@gsLineDashPattern = 1 - rsrRes@gsLineThicknessF = rxy@xyLineThicknesses(0) - dum2 = gsn_add_polyline(wks, taylor, xx, yy, rsrRes) - delete(xx) - delete(yy) - - if (rOpts .and. isatt(rOpts, "stnRad")) then - rsrRes@gsLineThicknessF = 1 - nStnRad = dimsizes(rOpts@stnRad) - - dum3 = new(nStnRad, graphic) - do n = 0, nStnRad - 1 - rr = rOpts@stnRad(n) - if (rr.gt.rmax) then - continue - end if - xx = fspan(xyMin, rr, npts) - yy = sqrt(rr ^ 2 - xx ^ 2) - dum3(n) = gsn_add_polyline(wks, taylor, xx, yy, rsrRes) - end do - taylor@$unique_string("dum")$ = dum3 - - delete(xx) - delete(yy) - end if - - getvalues taylor - "tmYLLabelFont" : tmYLLabelFont - "tmYLLabelFontHeightF" : tmYLLabelFontHeightF - end getvalues - -; ---------------------------------------------------------------- -; Part 2: -; Correlation labels -; ---------------------------------------------------------------- - radC = 1.02 * xyMax - xC = radC * cos(angC * rad) - yC = radC * sin(angC * rad) - - txRes = True - txRes@txFontHeightF = FontHeightF - txRes@tmYLLabelFont = tmYLLabelFont - txRes@txAngleF = -45. - if (.not.isatt(rOpts, "drawCorLabel") .or. rOpts@drawCorLabel) then - xdum = 1.15 * xyMax * cos(45.0 * rad) - ydum = 1.15 * xyMax * sin(45.0 * rad) - dum4 = gsn_add_text(wks, taylor, "Correlation", xdum, ydum, txRes) - taylor@$unique_string("dum")$ = dum4 - end if - txRes@txAngleF = 0.0 - txRes@txFontHeightF = FontHeightF * 0.50 - - plRes = True - plRes@gsLineThicknessF = 2. - txRes@txFontHeightF = FontHeightF - - tmEnd = 0.975 - radTM = xyMax * tmEnd - xTM = new(2, "float") - yTM = new(2, "float") - - dum5 = new(dimsizes(sLabels), graphic) - dum6 = dum5 - - do i = 0, dimsizes(sLabels) - 1 - txRes@txAngleF = angC(i) - if (angC(i).le.45.0) then - txRes@txJust = "CenterLeft" - else - txRes@txJust = "BottomCenter" - end if - dum5(i) = \ - gsn_add_text(wks, taylor, sLabels(i), xC(i), yC(i), txRes) - xTM(0) = xyMax * cos(angC(i) * rad) - yTM(0) = xyMax * sin(angC(i) * rad) - xTM(1) = radTM * cos(angC(i) * rad) - yTM(1) = radTM * sin(angC(i) * rad) - dum6(i) = gsn_add_polyline(wks, taylor, xTM, yTM, plRes) - end do - mTM = (/0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, \ - 0.75, 0.85, 0.91, 0.92, 0.93, 0.94, 0.96, 0.97, 0.98/) - angmTM = acos(mTM) / rad - radmTM = xyMax * (1. - (1. - tmEnd) * 0.5) - - dum7 = new(dimsizes(mTM), graphic) - - do i = 0, dimsizes(mTM) - 1 - xTM(0) = xyMax * cos(angmTM(i) * rad) - yTM(0) = xyMax * sin(angmTM(i) * rad) - xTM(1) = radmTM * cos(angmTM(i) * rad) - yTM(1) = radmTM * sin(angmTM(i) * rad) - dum7(i) = gsn_add_polyline(wks, taylor, xTM, yTM, plRes) - end do - - if (rOpts .and. isatt(rOpts, "ccRays")) then - angRL = acos(rOpts@ccRays) / rad - rlRes = True - rlRes@gsLineDashPattern = 2 - rlRes@gsLineThicknessF = 1 - if (isatt(rOpts, "ccRays_color")) then - rlRes@gsLineColor = rOpts@ccRays_color - end if - - dum8 = new(dimsizes(angRL), graphic) - do i = 0, dimsizes(angRL) - 1 - xRL = xyMax * cos(angRL(i) * rad) - yRL = xyMax * sin(angRL(i) * rad) - dum8(i) = gsn_add_polyline(wks, taylor, (/0, xRL/), (/0, yRL/), rlRes) - end do - taylor@$unique_string("dum")$ = dum8 - end if - -; ---------------------------------------------------------------- -; Part 3: -; Concentric about 1.0 on XB axis -; ---------------------------------------------------------------- - if (rOpts .and. isatt(rOpts, "centerDiffRMS") .and. rOpts@centerDiffRMS) then - respl = True - respl@gsLineThicknessF = 2.0 - respl@gsLineColor = "Black" - if (isatt(rOpts, "centerDiffRMS_color")) then - respl@gsLineColor = rOpts@centerDiffRMS_color - end if - - dx = delta - ncon = 4 - npts = 100 ; arbitrary - ang = fspan(180, 360, npts) * rad - dum9 = new(ncon, graphic) - - do n = 1, ncon - rr = n * dx ; radius from 1.0 [OBS] abscissa - xx = 1. + rr * cos(ang) - yy = fabs(rr * sin(ang)) - dist_n = dx * n + 1.0 - if (dist_n .gt. max(rxy@tmXBValues)) then - xtmp = (xyMax ^ 2 - rr ^ 2 + 1.0) / 2.0 - ytmp = sqrt(xyMax ^ 2 - xtmp ^ 2) - xtmp = xtmp - 1.0 - if (xtmp.eq.0.0) then - phitmp = 3.1415927 - else if (xtmp.gt.0.0) then - phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) - else - phitmp = 3.1415927 + atan(ytmp / xtmp) - end if - end if - ang2 = fspan(3.1415927, phitmp, npts) - xx2 = 1.0 + rr * cos(ang2) - yy2 = fabs(rr * sin(ang2)) - dum9(n - 1) = gsn_add_polyline(wks, taylor, xx2, yy2, respl) - delete(ang2) - delete(xx2) - delete(yy2) - else - dum9(n - 1) = gsn_add_polyline(wks, taylor, xx, yy, respl) - end if - delete(dist_n) - - end do - delete(ang) - delete(xx) - delete(yy) - taylor@$unique_string("dum")$ = dum9 - - end if - - ; draw filled black circle at (1, 0) to mark the reference point - if (rOpts .and. isatt(rOpts, "gsMarkerSizeF")) then - gsMarkerSizeF = rOpts@gsMarkerSizeF - else - gsMarkerSizeF = 0.0085 - end if - gsRes = True - gsRes@gsMarkerIndex = 16 - gsRes@gsMarkerColor = "Black" - gsRes@gsMarkerSizeF = gsMarkerSizeF - getvalues taylor - "vpXF" : vpx - "vpYF" : vpy - "vpWidthF" : vpw - "vpHeightF" : vph - end getvalues - dotx = vpx + 1.0 / xyMax_Panel * vpw - doty = vpy - vph - gsn_polymarker_ndc(wks, dotx, doty, gsRes) - dotobj = new(1, graphic) - dotobj = gsn_add_polymarker(wks, taylor, 1.0, 0.0, gsRes) - - -; --------------------------------------------------------------- -; Part 4: -; generic resources that will be applied to all users data points -; of course, these can be changed -; http://www.ncl.ucar.edu/Document/Graphics/Resources/gs.shtml -; --------------------------------------------------------------- - if (rOpts .and. isatt(rOpts, "Markers")) then - Markers = rOpts@Markers - else - Markers = (/4, 6, 8, 0, 9, 12, 7, 2, 11, 16/) - end if - - if (rOpts .and. isatt(rOpts, "Colors")) then - Colors = rOpts@Colors - else - Colors = (/"red", "blue", "green", "cyan", "orange", \ - "torquoise", "brown", "yellow", "purple", "black"/) - end if - - if (rOpts .and. isatt(rOpts, "gsMarkerThicknessF")) then - gsMarkerThicknessF = rOpts@gsMarkerThicknessF - else - gsMarkerThicknessF = 2.0 - end if - - if (rOpts .and. isatt(rOpts, "gsMarkerSizeF")) then - gsMarkerSizeF = rOpts@gsMarkerSizeF - else - gsMarkerSizeF = 0.0085 - end if - - gsRes = True - gsRes@gsMarkerThicknessF = gsMarkerThicknessF - gsRes@gsMarkerSizeF = gsMarkerSizeF - - ptRes = True - ptRes@txJust = "BottomCenter" - ptRes@txFontThicknessF = 1.2 - ptRes@txFontHeightF = 0.0125 - if (rOpts .and. isatt(rOpts, "txFontHeightF")) then - ptRes@txFontHeightF = rOpts@txFontHeightF - end if - - markerTxYOffset = 0.0175 - if (rOpts .and. isatt(rOpts, "markerTxYOffset")) then - markerTxYOffset = rOpts@markerTxYOffset - end if - - dum10 = new((nCase*nVar), graphic) - dum11 = dum10 - - do n = 0, nCase - 1 - gsRes@gsMarkerIndex = Markers(n) - gsRes@gsMarkerColor = Colors(n) - ptRes@txFontColor = gsRes@gsMarkerColor - do i = 0, nVar - 1 - dum10(n * nVar + i) = \ - gsn_add_polymarker(wks, taylor, X(n, i), Y(n, i), gsRes) - printdl = True - if (rOpts .and. isatt(rOpts, "printDataLabels")) then - if (.not.rOpts@printDataLabels) then - printdl = False - end if - end if - if (printdl) then - dum11(n * nVar + i) = \ - gsn_add_text(wks, taylor, (i + 1), X(n, i), \ - Y(n, i) + markerTxYOffset, ptRes) - end if - end do - end do - -; --------------------------------------------------------------- -; Part 5: ; add case legend and variable labels -; --------------------------------------------------------------- - - extrafile = False - - if (rOpts .and. isatt(rOpts, "legendExtraFile")) then - if (rOpts@legendExtraFile) then - extrafile = True - end if - end if - - if (rOpts .and. isatt(rOpts, "caseLabels")) then - - if (isatt(rOpts, "caseLabelsFontHeightF")) then - caseLabelsFontHeightF = rOpts@caseLabelsFontHeightF - else - caseLabelsFontHeightF = 0.05 - end if - - lgres = True - lgres@lgMarkerColors = Colors - lgres@lgMarkerIndexes = Markers - lgres@lgMarkerSizeF = gsMarkerSizeF - lgres@lgItemType = "Markers" - lgres@lgLabelFontHeightF = caseLabelsFontHeightF - - nModel = dimsizes(rOpts@caseLabels) - if (isatt(rOpts, "legendWidth")) then - lgres@vpWidthF = rOpts@legendWidth - else - lgres@vpWidthF = 0.15 - end if - - if (nModel.gt.20) then - lgres@vpWidthF = lgres@vpWidthF * 0.5 - lgres@lgMarkerSizeF = lgres@lgMarkerSizeF * 0.75 - end if - - lgres@lgPerimOn = False - if (isatt(rOpts, "legendBox")) then - if (rOpts@legendBox) then - lgres@lgPerimOn = True - lgres@lgRightMarginF = 0.1 - end if - end if - - if (nModel.le.20) then - if (isatt(rOpts, "reverseOrder")) then - if (rOpts@reverseOrder) then - lgres@lgItemOrder = ispan(nModel - 1, 0, 1) - end if - end if - if (isatt(rOpts, "legendHeight")) then - lgres@vpHeightF = rOpts@legendHeight - else - lgres@vpHeightF = 0.030 * nCase - end if - lbid = gsn_create_legend(legendwks, nModel, rOpts@caseLabels, lgres) - amres = True - if (isatt(rOpts, "legendXpos")) then - amres@amParallelPosF = rOpts@legendXpos - amres@amJust = "TopLeft" - else - amres@amParallelPosF = 0.35 - end if - if (isatt(rOpts, "legendYpos")) then - amres@amOrthogonalPosF = rOpts@legendYpos - amres@amJust = "TopLeft" - else - amres@amOrthogonalPosF = -0.35 - end if - if (extrafile) then - gsn_legend_ndc(legendwks, nModel, rOpts@caseLabels(0:nModel - 1), \ - 0.78, 0.75, lgres) - else - annoid1 = gsn_add_annotation(taylor, lbid, amres) - end if - else - if (isatt(rOpts, "modelsperrow")) then - modelsperrow = rOpts@modelsperrow - else - modelsperrow = (nModel + 1) / 2 - end if - do lr = 0, nModel / modelsperrow - ix0 = lr * modelsperrow - if (ix0.ge.nCase) then - break - end if - ix1 = min((/nCase - 1, ix0 + modelsperrow - 1/)) - dumdelta = ix1 - ix0 + 1 - - if (isatt(rOpts, "reverseOrder")) then - if (rOpts@reverseOrder) then - if (isatt(lgres, "lgItemOrder")) then - delete(lgres@lgItemOrder) - end if - lgres@lgItemOrder = ispan(dumdelta - 1, 0, 1) - end if - end if - - lgres@vpHeightF = 0.026 * dumdelta - - delete(lgres@lgMarkerColors) - delete(lgres@lgMarkerIndexes) - lgres@lgMarkerColors = Colors(ix0:ix1) - lgres@lgMarkerIndexes = Markers(ix0:ix1) - lgres@lgPerimOn = False - - if (extrafile) then - legend_x = 0.05 + 0.11 * lr - else - legend_x = 0.78 + 0.11 * lr - end if - - gsn_legend_ndc(legendwks, dumdelta, rOpts@caseLabels(ix0:ix1), \ - legend_x, 0.75, lgres) - end do - end if - end if - - if (rOpts .and. isatt(rOpts, "varLabels")) then - nVar = dimsizes(rOpts@varLabels) - - if (isatt(rOpts, "varLabelsFontHeightF")) then - varLabelsFontHeightF = rOpts@varLabelsFontHeightF - else - varLabelsFontHeightF = 0.013 - end if - - txres = True - txres@txFontHeightF = varLabelsFontHeightF - txres@txJust = "CenterLeft" - - delta_y = 0.06 - if (rOpts .and. isatt(rOpts, "varLabelsYloc")) then - ys = rOpts@varLabelsYloc - else - ys = max((/nVar * delta_y, 0.30/)) - end if - - do i = 1, nVar - if (i.eq.1) then - dum12 = new(nVar, graphic) - end if - - dum12(i - 1) = \ - gsn_add_text(wks, taylor, i + " - " + rOpts@varLabels(i - 1), \ - 0.125, ys, txres) - ys = ys - delta_y - end do - - taylor@$unique_string("dum")$ = dum12 - end if - - taylor@$unique_string("dum")$ = dum0 - taylor@$unique_string("dum")$ = dum1 - taylor@$unique_string("dum")$ = dum2 - taylor@$unique_string("dum")$ = dum5 - taylor@$unique_string("dum")$ = dum6 - taylor@$unique_string("dum")$ = dum7 - taylor@$unique_string("dum")$ = dum10 - taylor@$unique_string("dum")$ = dum11 - - if (.not.isatt(rOpts, "taylorDraw") .or. \ - (isatt(rOpts, "taylorDraw") .and. rOpts@taylorDraw)) then - draw(taylor) - end if - if (.not.isatt(rOpts, "taylorFrame") .or. \ - (isatt(rOpts, "taylorFrame") .and. rOpts@taylorFrame)) then - frame(wks) - end if - - return(taylor) -end diff --git a/esmvaltool/diag_scripts/shared/plot/taylor_plot.ncl b/esmvaltool/diag_scripts/shared/plot/taylor_plot.ncl index c01851840d..204c5c6f23 100644 --- a/esmvaltool/diag_scripts/shared/plot/taylor_plot.ncl +++ b/esmvaltool/diag_scripts/shared/plot/taylor_plot.ncl @@ -7,6 +7,7 @@ ; Contents: ; ; function taylor_plot +; function taylor_diagram ; ; ############################################################################# @@ -17,9 +18,7 @@ load "$diag_scripts/shared/set_operators.ncl" load "$diag_scripts/shared/plot/aux_plotting.ncl" - ; ############################################################################# - undef("taylor_plot") function taylor_plot(wks_in[1], source, @@ -444,3 +443,691 @@ begin return(taylor) end + +; ############################################################################# +function taylor_diagram(wks:graphic, + legendwks:graphic, + RATIO[*][*]:numeric, + CC[*][*]:numeric, + rOpts:logical) +; +; Arguments +; wks: workstation. +; legendwks: workstation for the legend. +; RATIO: ratio of the standard deviations. +; CC: correlation. +; rOpts: graphical resources. +; +; Return value: +; A graphic variable. +; +; Caveats +; +; Modification history: +; 20190605-A_righ_ma: ported from v1. +; +local dimR, nCase, nVar, X, Y, nc, angle, xyMin, xyOne, ceil_max_val, xyMax, \ + xyMax_Panel, FontHeightF, rxy, tempo_values, tempo_values1, temp_string, \ + temp1_string, temp_string_y, temp_string_y1, npts, xx, yy, sLabels, \ + cLabels, rad, angC, taylor, rsrRes, dum0, dum1, dum2, nStnRad, rr, radC, \ + xC, yC, txRes, dum4, plRes, tmEnd, radTM, xTM, yTM, dum5, dum6, i, mTM, \ + angmTM, radmTM, dum7, angRL, rlRes, dum8, xRL, yRL, respl, dx, ncon, npts, \ + ang, dum9, dist_n, Markers, Colors, gsRes, ptRes, markerTxYOffset, dum10, \ + dum11, n, lgres, nModel, lbid, lbid2, amres, annoid1, nVar, \ + varLabelsFontHeightF, txres, delta_y, ys, dum12 +begin + + dimR = dimsizes(RATIO) + nCase = dimR(0) ; # of cases [models] + nVar = dimR(1) ; # of variables + + ; x/y coordinates for plotting + X = new((/nCase, nVar/), typeof(RATIO)) + Y = new((/nCase, nVar/), typeof(RATIO)) + + do nc = 0, nCase - 1 + angle = acos(CC(nc, :)) + X(nc, :) = RATIO(nc, :) * cos(angle) + Y(nc, :) = RATIO(nc, :) * sin(angle) + end do + + ; fix to nearest x.5 + xyMin = 0. + xyOne = 1.00 + rmax = ceil(max(RATIO)) + if (rmax.lt.1.5) then + rmax = 1.5 + end if + if (rmax.gt.3.0) then + rmax = 3.0 + end if + xyMax = rmax + 0.1 + xyMax_Panel = xyMax + 0.10 + + if (rOpts .and. isatt(rOpts, "txFontHeightF")) then + FontHeightF = rOpts@txFontHeightF + else + FontHeightF = 0.0175 + end if + + ; ---------------------------------------------------------------- + ; Part 1: + ; base plot: Based upon request of Mark Stevens + ; basic x-y and draw the 1.0 observed and the outer curve at 1.65 + ; ---------------------------------------------------------------- + + rxy = True + rxy@gsnDraw = False + rxy@gsnFrame = False + rxy@vpHeightF = 0.65 + rxy@vpWidthF = 0.65 + if (rOpts .and. isatt(rOpts, "plotSize")) then + rxy@vpHeightF = rOpts@plotSize + rxy@vpWidthF = rOpts@plotSize + rxy@vpXF = 0.125 + rxy@vpYF = 0.825 + end if + rxy@tmYLBorderOn = False + rxy@tmXBBorderOn = False + + rxy@tiYAxisString = "Standardized Deviations (Normalized)" + rxy@tiYAxisFontHeightF = FontHeightF + + rxy@tmXBMode = "Explicit" + delta = 0.5 + if (rmax.le.1.5) then + delta = 0.25 + end if + tempo_values = \ + decimalPlaces(fspan(0.0, rmax, toint(rmax / delta) + 1), 2, True) + tempo_values1 = tempo_values(ind(tempo_values .lt. xyMax)) + delete(tempo_values) + rxy@tmXBValues = tempo_values1 + delete(tempo_values1) + temp_string = tostring(sprintf("%4.2f", rxy@tmXBValues)) + temp_string(0) = " " + temp1_string = where(temp_string .eq. "1.00", "REF", temp_string) + rxy@tmXBLabels = temp1_string + if (rOpts .and. isatt(rOpts, "OneX")) then + rxy@tmXBLabels = temp_string + end if + delete(temp_string) + delete(temp1_string) + + rxy@tmXBMajorLengthF = 0.015 + rxy@tmXBLabelFontHeightF = FontHeightF + rxy@tmXBMinorOn = False + rxy@trXMaxF = xyMax_Panel + rxy@tmYLMode = "Manual" + rxy@tmYLMinorOn = False + rxy@tmYLMajorLengthF = rxy@tmXBMajorLengthF + rxy@tmYLLabelFontHeightF = FontHeightF + rxy@tmYLMode = "Explicit" + rxy@tmYLValues = rxy@tmXBValues + temp_string_y = rxy@tmXBLabels + temp_string_y(0) = "0.00" + temp_string_y1 = where(temp_string_y .eq. "REF", "1.00", temp_string_y) + delete(temp_string_y) + rxy@tmYLLabels = temp_string_y1 + delete(temp_string_y1) + rxy@trYMaxF = xyMax_Panel + + rxy@tmYRBorderOn = False + rxy@tmYROn = False + rxy@tmXTBorderOn = False + rxy@tmXTOn = False + rxy@xyDashPatterns = (/0 /) + rxy@xyLineThicknesses = (/2./) + rxy@gsnFrame = False + npts = 100 ; arbitrary + xx = fspan(xyMin, xyMax, npts) + yy = sqrt(xyMax ^ 2 - xx ^ 2) ; outer correlation line (xyMax) + sLabels = (/"0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", \ + "0.7", "0.8", "0.9", "0.95", "0.99", "1.0" /) + cLabels = stringtofloat(sLabels) + rad = 4. * atan(1.0) / 180. + angC = acos(cLabels) / rad ; angles: correlation labels + if (rOpts .and. isatt(rOpts, "tiMainString")) then + rxy@tiMainString = rOpts@tiMainString + if (isatt(rOpts, "tiMainFontHeightF")) then + rxy@tiMainFontHeightF = rOpts@tiMainFontHeightF + else + rxy@tiMainFontHeightF = 0.0225 + end if + end if + + taylor = gsn_xy(wks, xx, yy, rxy) + + ; -------------------------------------------------------------- + ; draw observational uncertainties given as normalized RMS error + ; around the observational reference point at (1, 0) + ; -------------------------------------------------------------- + + if (rOpts .and. isatt(rOpts, "rmsobs")) then + npts = 100 ; arbitrary + rmsobj = new(2, graphic) + + respl0 = True + respl0@gsLineThicknessF = 4.0 + respl0@gsLineDashPattern = 0 + respl0@gsLineColor = (/0.50, 0.95, 0.47/) + respl0@gsFillColor = (/0.85, 1.00, 0.80/) + rr = rOpts@rmsobs + + ; uncertainty circle covers whole plotting area + if (rr.ge.xyMax) then + ang = fspan(180, 360, npts) * rad + xx = 0.995 * xyMax * cos(ang) + yy = fabs(0.995 * xyMax * sin(ang)) + rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) + rmsobj(1) = gsn_add_polygon(wks, taylor, xx, yy, respl0) + else ; uncertainty circle covers only part of the plotting area + dist = rr + 1.0 + ; uncertainty circle has to be cropped + ; need to find intersection between uncertainty circule and outer arc + if (dist .gt. xyMax) then + xtmp = (xyMax ^ 2 - rr ^ 2 + 1.0) / 2.0 + ytmp = sqrt(xyMax ^ 2 - xtmp ^ 2) + xtmp = xtmp - 1.0 + if (xtmp.eq.0.0) then + phitmp = 3.1415927 + else if (xtmp.gt.0.0) then + phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) + else + phitmp = 3.1415927 + atan(ytmp / xtmp) + end if + end if + ang = fspan(3.1415927, phitmp, npts) + xx1 = 1.0 + rr * cos(ang) + yy1 = fabs(rr * sin(ang)) + + xtmp = xx1(npts - 1) + ytmp = yy1(npts - 1) + if (xtmp.eq.0.0) then + phitmp = 3.1415927 + else if (xtmp.gt.0.0) then + phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) + else + phitmp = 3.1415927 + atan(ytmp / xtmp) + end if + end if + + ang2 = fspan(phitmp, 0.0, npts) + + xx2 = 0.995 * xyMax * cos(ang2) + yy2 = 0.995 * fabs(xyMax * sin(ang2)) + + if (isvar("xx")) then + delete(xx) + end if + if (isvar("yy")) then + delete(yy) + end if + xx = array_append_record(xx1, xx2, 0) + yy = array_append_record(yy1, yy2, 0) + rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) + rmsobj(1) = gsn_add_polyline(wks, taylor, xx1, yy1, respl0) + delete(xx1) + delete(xx2) + delete(yy1) + delete(yy2) + delete(ang2) + else ; uncertainty circle does not need any adjustments + ang = fspan(180, 360, npts) * rad + xx = 1.0 + rr * cos(ang) + yy = fabs(rr * sin(ang)) + rmsobj(0) = gsn_add_polygon(wks, taylor, xx, yy, respl0) + rmsobj(1) = gsn_add_polyline(wks, taylor, xx, yy, respl0) + end if ; if uncertainty circle has to be cropped + + delete(ang) + delete(xx) + delete(yy) + + end if ; if uncertainty circle covers whole plotting area + end if ; if an uncertainty estimate is available + + rsrRes = True + rsrRes@gsLineThicknessF = rxy@xyLineThicknesses(0) + rsrRes@gsLineDashPattern = 0 + dum0 = gsn_add_polyline(wks, taylor, (/0., 0. /), (/0., xyMax/), rsrRes) + dum1 = gsn_add_polyline(wks, taylor, (/0., xyMax/), (/0., 0. /), rsrRes) + + xx = fspan(xyMin, xyOne, npts) + yy = sqrt(xyOne - xx ^ 2) + rsrRes@gsLineDashPattern = 1 + rsrRes@gsLineThicknessF = rxy@xyLineThicknesses(0) + dum2 = gsn_add_polyline(wks, taylor, xx, yy, rsrRes) + delete(xx) + delete(yy) + + if (rOpts .and. isatt(rOpts, "stnRad")) then + rsrRes@gsLineThicknessF = 1 + nStnRad = dimsizes(rOpts@stnRad) + + dum3 = new(nStnRad, graphic) + do n = 0, nStnRad - 1 + rr = rOpts@stnRad(n) + if (rr.gt.rmax) then + continue + end if + xx = fspan(xyMin, rr, npts) + yy = sqrt(rr ^ 2 - xx ^ 2) + dum3(n) = gsn_add_polyline(wks, taylor, xx, yy, rsrRes) + end do + taylor@$unique_string("dum")$ = dum3 + + delete(xx) + delete(yy) + end if + + getvalues taylor + "tmYLLabelFont" : tmYLLabelFont + "tmYLLabelFontHeightF" : tmYLLabelFontHeightF + end getvalues + + ; ---------------------------------------------------------------- + ; Part 2: + ; Correlation labels + ; ---------------------------------------------------------------- + radC = 1.02 * xyMax + xC = radC * cos(angC * rad) + yC = radC * sin(angC * rad) + + txRes = True + txRes@txFontHeightF = FontHeightF + txRes@tmYLLabelFont = tmYLLabelFont + txRes@txAngleF = -45. + if (.not.isatt(rOpts, "drawCorLabel") .or. rOpts@drawCorLabel) then + xdum = 1.15 * xyMax * cos(45.0 * rad) + ydum = 1.15 * xyMax * sin(45.0 * rad) + dum4 = gsn_add_text(wks, taylor, "Correlation", xdum, ydum, txRes) + taylor@$unique_string("dum")$ = dum4 + end if + txRes@txAngleF = 0.0 + txRes@txFontHeightF = FontHeightF * 0.50 + + plRes = True + plRes@gsLineThicknessF = 2. + txRes@txFontHeightF = FontHeightF + + tmEnd = 0.975 + radTM = xyMax * tmEnd + xTM = new(2, "float") + yTM = new(2, "float") + + dum5 = new(dimsizes(sLabels), graphic) + dum6 = dum5 + + do i = 0, dimsizes(sLabels) - 1 + txRes@txAngleF = angC(i) + if (angC(i).le.45.0) then + txRes@txJust = "CenterLeft" + else + txRes@txJust = "BottomCenter" + end if + dum5(i) = \ + gsn_add_text(wks, taylor, sLabels(i), xC(i), yC(i), txRes) + xTM(0) = xyMax * cos(angC(i) * rad) + yTM(0) = xyMax * sin(angC(i) * rad) + xTM(1) = radTM * cos(angC(i) * rad) + yTM(1) = radTM * sin(angC(i) * rad) + dum6(i) = gsn_add_polyline(wks, taylor, xTM, yTM, plRes) + end do + mTM = (/0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, \ + 0.75, 0.85, 0.91, 0.92, 0.93, 0.94, 0.96, 0.97, 0.98/) + angmTM = acos(mTM) / rad + radmTM = xyMax * (1. - (1. - tmEnd) * 0.5) + + dum7 = new(dimsizes(mTM), graphic) + + do i = 0, dimsizes(mTM) - 1 + xTM(0) = xyMax * cos(angmTM(i) * rad) + yTM(0) = xyMax * sin(angmTM(i) * rad) + xTM(1) = radmTM * cos(angmTM(i) * rad) + yTM(1) = radmTM * sin(angmTM(i) * rad) + dum7(i) = gsn_add_polyline(wks, taylor, xTM, yTM, plRes) + end do + + if (rOpts .and. isatt(rOpts, "ccRays")) then + angRL = acos(rOpts@ccRays) / rad + rlRes = True + rlRes@gsLineDashPattern = 2 + rlRes@gsLineThicknessF = 1 + if (isatt(rOpts, "ccRays_color")) then + rlRes@gsLineColor = rOpts@ccRays_color + end if + + dum8 = new(dimsizes(angRL), graphic) + do i = 0, dimsizes(angRL) - 1 + xRL = xyMax * cos(angRL(i) * rad) + yRL = xyMax * sin(angRL(i) * rad) + dum8(i) = gsn_add_polyline(wks, taylor, (/0, xRL/), (/0, yRL/), rlRes) + end do + taylor@$unique_string("dum")$ = dum8 + end if + + ; ---------------------------------------------------------------- + ; Part 3: + ; Concentric about 1.0 on XB axis + ; ---------------------------------------------------------------- + if (rOpts .and. isatt(rOpts, "centerDiffRMS") .and. rOpts@centerDiffRMS) then + respl = True + respl@gsLineThicknessF = 2.0 + respl@gsLineColor = "Black" + if (isatt(rOpts, "centerDiffRMS_color")) then + respl@gsLineColor = rOpts@centerDiffRMS_color + end if + + dx = delta + ncon = 4 + npts = 100 ; arbitrary + ang = fspan(180, 360, npts) * rad + dum9 = new(ncon, graphic) + + do n = 1, ncon + rr = n * dx ; radius from 1.0 [OBS] abscissa + xx = 1. + rr * cos(ang) + yy = fabs(rr * sin(ang)) + dist_n = dx * n + 1.0 + if (dist_n .gt. max(rxy@tmXBValues)) then + xtmp = (xyMax ^ 2 - rr ^ 2 + 1.0) / 2.0 + ytmp = sqrt(xyMax ^ 2 - xtmp ^ 2) + xtmp = xtmp - 1.0 + if (xtmp.eq.0.0) then + phitmp = 3.1415927 + else if (xtmp.gt.0.0) then + phitmp = 2.0 * 3.1415927 - atan(ytmp / xtmp) + else + phitmp = 3.1415927 + atan(ytmp / xtmp) + end if + end if + ang2 = fspan(3.1415927, phitmp, npts) + xx2 = 1.0 + rr * cos(ang2) + yy2 = fabs(rr * sin(ang2)) + dum9(n - 1) = gsn_add_polyline(wks, taylor, xx2, yy2, respl) + delete(ang2) + delete(xx2) + delete(yy2) + else + dum9(n - 1) = gsn_add_polyline(wks, taylor, xx, yy, respl) + end if + delete(dist_n) + + end do + delete(ang) + delete(xx) + delete(yy) + taylor@$unique_string("dum")$ = dum9 + + end if + + ; draw filled black circle at (1, 0) to mark the reference point + if (rOpts .and. isatt(rOpts, "gsMarkerSizeF")) then + gsMarkerSizeF = rOpts@gsMarkerSizeF + else + gsMarkerSizeF = 0.0085 + end if + gsRes = True + gsRes@gsMarkerIndex = 16 + gsRes@gsMarkerColor = "Black" + gsRes@gsMarkerSizeF = gsMarkerSizeF + getvalues taylor + "vpXF" : vpx + "vpYF" : vpy + "vpWidthF" : vpw + "vpHeightF" : vph + end getvalues + dotx = vpx + 1.0 / xyMax_Panel * vpw + doty = vpy - vph + gsn_polymarker_ndc(wks, dotx, doty, gsRes) + dotobj = new(1, graphic) + dotobj = gsn_add_polymarker(wks, taylor, 1.0, 0.0, gsRes) + + ; --------------------------------------------------------------- + ; Part 4: + ; generic resources that will be applied to all users data points + ; of course, these can be changed + ; http://www.ncl.ucar.edu/Document/Graphics/Resources/gs.shtml + ; --------------------------------------------------------------- + if (rOpts .and. isatt(rOpts, "Markers")) then + Markers = rOpts@Markers + else + Markers = (/4, 6, 8, 0, 9, 12, 7, 2, 11, 16/) + end if + + if (rOpts .and. isatt(rOpts, "Colors")) then + Colors = rOpts@Colors + else + Colors = (/"red", "blue", "green", "cyan", "orange", \ + "torquoise", "brown", "yellow", "purple", "black"/) + end if + + if (rOpts .and. isatt(rOpts, "gsMarkerThicknessF")) then + gsMarkerThicknessF = rOpts@gsMarkerThicknessF + else + gsMarkerThicknessF = 2.0 + end if + + if (rOpts .and. isatt(rOpts, "gsMarkerSizeF")) then + gsMarkerSizeF = rOpts@gsMarkerSizeF + else + gsMarkerSizeF = 0.0085 + end if + + gsRes = True + gsRes@gsMarkerThicknessF = gsMarkerThicknessF + gsRes@gsMarkerSizeF = gsMarkerSizeF + + ptRes = True + ptRes@txJust = "BottomCenter" + ptRes@txFontThicknessF = 1.2 + ptRes@txFontHeightF = 0.0125 + if (rOpts .and. isatt(rOpts, "txFontHeightF")) then + ptRes@txFontHeightF = rOpts@txFontHeightF + end if + + markerTxYOffset = 0.0175 + if (rOpts .and. isatt(rOpts, "markerTxYOffset")) then + markerTxYOffset = rOpts@markerTxYOffset + end if + + dum10 = new((nCase*nVar), graphic) + dum11 = dum10 + + do n = 0, nCase - 1 + gsRes@gsMarkerIndex = Markers(n) + gsRes@gsMarkerColor = Colors(n) + ptRes@txFontColor = gsRes@gsMarkerColor + do i = 0, nVar - 1 + dum10(n * nVar + i) = \ + gsn_add_polymarker(wks, taylor, X(n, i), Y(n, i), gsRes) + printdl = True + if (rOpts .and. isatt(rOpts, "printDataLabels")) then + if (.not.rOpts@printDataLabels) then + printdl = False + end if + end if + if (printdl) then + dum11(n * nVar + i) = \ + gsn_add_text(wks, taylor, (i + 1), X(n, i), \ + Y(n, i) + markerTxYOffset, ptRes) + end if + end do + end do + + ; --------------------------------------------------------------- + ; Part 5: ; add case legend and variable labels + ; --------------------------------------------------------------- + extrafile = False + + if (rOpts .and. isatt(rOpts, "legendExtraFile")) then + if (rOpts@legendExtraFile) then + extrafile = True + end if + end if + + if (rOpts .and. isatt(rOpts, "caseLabels")) then + + if (isatt(rOpts, "caseLabelsFontHeightF")) then + caseLabelsFontHeightF = rOpts@caseLabelsFontHeightF + else + caseLabelsFontHeightF = 0.05 + end if + + lgres = True + lgres@lgMarkerColors = Colors + lgres@lgMarkerIndexes = Markers + lgres@lgMarkerSizeF = gsMarkerSizeF + lgres@lgItemType = "Markers" + lgres@lgLabelFontHeightF = caseLabelsFontHeightF + + nModel = dimsizes(rOpts@caseLabels) + if (isatt(rOpts, "legendWidth")) then + lgres@vpWidthF = rOpts@legendWidth + else + lgres@vpWidthF = 0.15 + end if + + if (nModel.gt.20) then + lgres@vpWidthF = lgres@vpWidthF * 0.5 + lgres@lgMarkerSizeF = lgres@lgMarkerSizeF * 0.75 + end if + + lgres@lgPerimOn = False + if (isatt(rOpts, "legendBox")) then + if (rOpts@legendBox) then + lgres@lgPerimOn = True + lgres@lgRightMarginF = 0.1 + end if + end if + + if (nModel.le.20) then + if (isatt(rOpts, "reverseOrder")) then + if (rOpts@reverseOrder) then + lgres@lgItemOrder = ispan(nModel - 1, 0, 1) + end if + end if + if (isatt(rOpts, "legendHeight")) then + lgres@vpHeightF = rOpts@legendHeight + else + lgres@vpHeightF = 0.030 * nCase + end if + lbid = gsn_create_legend(legendwks, nModel, rOpts@caseLabels, lgres) + amres = True + if (isatt(rOpts, "legendXpos")) then + amres@amParallelPosF = rOpts@legendXpos + amres@amJust = "TopLeft" + else + amres@amParallelPosF = 0.35 + end if + if (isatt(rOpts, "legendYpos")) then + amres@amOrthogonalPosF = rOpts@legendYpos + amres@amJust = "TopLeft" + else + amres@amOrthogonalPosF = -0.35 + end if + if (extrafile) then + gsn_legend_ndc(legendwks, nModel, rOpts@caseLabels(0:nModel - 1), \ + 0.78, 0.75, lgres) + else + annoid1 = gsn_add_annotation(taylor, lbid, amres) + end if + else + if (isatt(rOpts, "modelsperrow")) then + modelsperrow = rOpts@modelsperrow + else + modelsperrow = (nModel + 1) / 2 + end if + do lr = 0, nModel / modelsperrow + ix0 = lr * modelsperrow + if (ix0.ge.nCase) then + break + end if + ix1 = min((/nCase - 1, ix0 + modelsperrow - 1/)) + dumdelta = ix1 - ix0 + 1 + + if (isatt(rOpts, "reverseOrder")) then + if (rOpts@reverseOrder) then + if (isatt(lgres, "lgItemOrder")) then + delete(lgres@lgItemOrder) + end if + lgres@lgItemOrder = ispan(dumdelta - 1, 0, 1) + end if + end if + + lgres@vpHeightF = 0.026 * dumdelta + + delete(lgres@lgMarkerColors) + delete(lgres@lgMarkerIndexes) + lgres@lgMarkerColors = Colors(ix0:ix1) + lgres@lgMarkerIndexes = Markers(ix0:ix1) + lgres@lgPerimOn = False + + if (extrafile) then + legend_x = 0.05 + 0.11 * lr + else + legend_x = 0.78 + 0.11 * lr + end if + + gsn_legend_ndc(legendwks, dumdelta, rOpts@caseLabels(ix0:ix1), \ + legend_x, 0.75, lgres) + end do + end if + end if + + if (rOpts .and. isatt(rOpts, "varLabels")) then + nVar = dimsizes(rOpts@varLabels) + + if (isatt(rOpts, "varLabelsFontHeightF")) then + varLabelsFontHeightF = rOpts@varLabelsFontHeightF + else + varLabelsFontHeightF = 0.013 + end if + + txres = True + txres@txFontHeightF = varLabelsFontHeightF + txres@txJust = "CenterLeft" + + delta_y = 0.06 + if (rOpts .and. isatt(rOpts, "varLabelsYloc")) then + ys = rOpts@varLabelsYloc + else + ys = max((/nVar * delta_y, 0.30/)) + end if + + do i = 1, nVar + if (i.eq.1) then + dum12 = new(nVar, graphic) + end if + + dum12(i - 1) = \ + gsn_add_text(wks, taylor, i + " - " + rOpts@varLabels(i - 1), \ + 0.125, ys, txres) + ys = ys - delta_y + end do + + taylor@$unique_string("dum")$ = dum12 + end if + + taylor@$unique_string("dum")$ = dum0 + taylor@$unique_string("dum")$ = dum1 + taylor@$unique_string("dum")$ = dum2 + taylor@$unique_string("dum")$ = dum5 + taylor@$unique_string("dum")$ = dum6 + taylor@$unique_string("dum")$ = dum7 + taylor@$unique_string("dum")$ = dum10 + taylor@$unique_string("dum")$ = dum11 + + if (.not.isatt(rOpts, "taylorDraw") .or. \ + (isatt(rOpts, "taylorDraw") .and. rOpts@taylorDraw)) then + draw(taylor) + end if + if (.not.isatt(rOpts, "taylorFrame") .or. \ + (isatt(rOpts, "taylorFrame") .and. rOpts@taylorFrame)) then + frame(wks) + end if + + return(taylor) + +end diff --git a/esmvaltool/diag_scripts/shared/plot/vector_scalar_map_polar.ncl b/esmvaltool/diag_scripts/shared/plot/vector_scalar_map_polar.ncl deleted file mode 100644 index c3635568c6..0000000000 --- a/esmvaltool/diag_scripts/shared/plot/vector_scalar_map_polar.ncl +++ /dev/null @@ -1,135 +0,0 @@ -; ############################################################################# -; CONTOURS AND VECTORS ON A POLARSTEREOGRAPHIC MAP # -; ############################################################################# -; Please consider using or extending existing routines before adding new ones. -; Check the header of each routine for documentation. -; -; function vector_scalar_map_polar: wrapper for -; gsn_csm_vector_scalar_map_polar -; -; ############################################################################# - -load "$diag_scripts/../interface_scripts/auxiliary.ncl" -load "$diag_scripts/../interface_scripts/logging.ncl" - -load "$diag_scripts/shared/plot/aux_plotting.ncl" - -; ############################################################################# -undef("vector_scalar_map_polar") -function vector_scalar_map_polar(wks_in[1], - sourceu, - sourcev, - sourcec, - res : logical, - varnameu[1] : string, - varnamev[1] : string, - varnamec[1] : string) -; -; Arguments -; wks : workstation, must be passed - no default used. -; sourceu : u vector data to be plotted. -; sourcev : v vector data to be plotted. -; sourcec : contour data to be plotted. -; res : diag_script-specific resources passed from diag_script. -; varnameu: u vector variable name in the file. -; varnamev: v vector variable name in the file. -; varnamec: contour vector variable name in the file. -; -; Source prototype -; source[*,*] -; source!0 = lat -; source!1 = lon -; -; Return value -; A graphic variable. -; -; Description -; Wrapper for gsn_csm_vector_scalar_map_polar (http://www.ncl.ucar.edu/ -; Document/Graphics/Interfaces/gsn_csm_vector_scalar_map_polar.shtml) -; Combines local resources and accepts diag_script-specific resources -; Creates plot, according to wks & res -; -; Caveats -; Selection of defaults for res almost arbitrary -; Please check results of all scripts that use this routine if modifying -; the defaults! -; -; Modification history -; 20141016-A_vanu_be: adapted from contour_map_polar.ncl. -; -local areaplot, datac, datau, datav, funcname, scriptname, sourcec, sourceu, \ - sourcev, res, loc_res, varnamec, varnameu, varnamev, wks_in -begin - - funcname = "vector_scalar_map_polar" - scriptname = "diag_scripts/shared/plot/vector_scalar_map_polar.ncl" - enter_msg(scriptname, funcname) - - ; Get data, either directly or via netCDF file - if (typeof(sourceu) .eq. "string") then - datau = ncdf_read(sourceu, varnameu) - else - datau = sourceu - copy_VarMeta(sourceu, datau) - end if - if (typeof(sourcev) .eq. "string") then - datav = ncdf_read(sourcev, varnamev) - else - datav = sourcev - copy_VarMeta(sourcev, datav) - end if - if (typeof(sourcec) .eq. "string") then - datac = ncdf_read(sourcec, varnamec) - else - datac = sourcec - copy_VarMeta(sourcec, datac) - end if - - ; additional plot resources to be added to res from diag_script - loc_res = True - loc_res = res - loc_res@gsnDraw = False - loc_res@gsnFrame = False ; Don't advance frame. - loc_res@gsnLeftStringOrthogonalPosF = 0.1 ; shift the string up a bit - loc_res@cnFillOn = True ; Turn on color - loc_res@lbLabelBarOn = False ; Turn on later in panel - loc_res@vcVectorDrawOrder = "PostDraw" ; draw vectors last - - ; specify the hemisphere - if (diag_script_info@region .eq. "Antarctic") then - loc_res@gsnPolar = "SH" - if (isatt(diag_script_info, "max_lat")) then - loc_res@mpMaxLatF = diag_script_info@max_lat - else - loc_res@mpMaxLatF = 0.0 - end if - else if (diag_script_info@region .eq. "Arctic") - loc_res@gsnPolarNH = True - if (isatt(diag_script_info, "min_lat")) then - loc_res@mpMinLatF = diag_script_info@min_lat - else - loc_res@mpMinLatF = 0.0 - end if - else - error_msg("f", "vector_scalar_map_polar.ncl", funcname, \ - "no (valid) region selection: " + \ - diag_script_info@region) - end if - end if - - ; Draw plot - areaplot = \ - gsn_csm_vector_scalar_map_polar(wks_in, datau, datav, datac, loc_res) - - ; outfile name - if (isatt(wks_in, "fullname")) then - outfile = wks_in@fullname - else - outfile = wks_in@name - end if - log_info(" Wrote " + outfile) - - leave_msg(scriptname, funcname) - return(areaplot) - -end diff --git a/esmvaltool/diag_scripts/validation.py b/esmvaltool/diag_scripts/validation.py index aad9f53742..db2ac40b48 100644 --- a/esmvaltool/diag_scripts/validation.py +++ b/esmvaltool/diag_scripts/validation.py @@ -20,7 +20,7 @@ from esmvaltool.diag_scripts.shared import (apply_supermeans, get_control_exper_obs, group_metadata, run_diagnostic) -from esmvaltool.preprocessor import extract_region, extract_season +from esmvalcore.preprocessor import extract_region, extract_season logger = logging.getLogger(os.path.basename(__file__)) diff --git a/esmvaltool/preprocessor/__init__.py b/esmvaltool/preprocessor/__init__.py deleted file mode 100644 index 2f7d53f6f8..0000000000 --- a/esmvaltool/preprocessor/__init__.py +++ /dev/null @@ -1,416 +0,0 @@ -"""Preprocessor module.""" -import copy -import inspect -import logging - -import six -from iris.cube import Cube, CubeList - -from .._provenance import TrackedFile -from .._task import BaseTask -from ._area import (average_region, extract_named_regions, extract_region, - zonal_means) -from ._derive import derive -from ._download import download -from ._io import (_get_debug_filename, cleanup, concatenate, load, save, - write_metadata) -from ._mask import (mask_above_threshold, mask_below_threshold, - mask_fillvalues, mask_inside_range, mask_landsea, - mask_landseaice, mask_outside_range) -from ._multimodel import multi_model_statistics -from ._reformat import (cmor_check_data, cmor_check_metadata, fix_data, - fix_file, fix_metadata) -from ._regrid import extract_levels, regrid -from ._time import (annual_mean, extract_month, extract_season, extract_time, - regrid_time, seasonal_mean, time_average) -from ._volume import (average_volume, depth_integration, extract_trajectory, - extract_transect, extract_volume) - -logger = logging.getLogger(__name__) - -__all__ = [ - 'download', - # File reformatting/CMORization - 'fix_file', - # Load cubes from file - 'load', - # Derive variable - 'derive', - # Metadata reformatting/CMORization - 'fix_metadata', - # Concatenate all cubes in one - 'concatenate', - 'cmor_check_metadata', - # Time extraction - 'extract_time', - 'extract_season', - 'extract_month', - # Data reformatting/CMORization - 'fix_data', - # Level extraction - 'extract_levels', - # Mask landsea (fx or Natural Earth) - 'mask_landsea', - # Mask landseaice, sftgif only - 'mask_landseaice', - # Regridding - 'regrid', - # Masking missing values - 'mask_fillvalues', - 'mask_above_threshold', - 'mask_below_threshold', - 'mask_inside_range', - 'mask_outside_range', - # Region selection - 'extract_region', - 'extract_volume', - 'extract_trajectory', - 'extract_transect', - # 'average_zone': average_zone, - # 'cross_section': cross_section, - 'multi_model_statistics', - # Grid-point operations - 'extract_named_regions', - 'depth_integration', - 'average_region', - 'average_volume', - # Time operations - # 'annual_cycle': annual_cycle, - # 'diurnal_cycle': diurnal_cycle, - 'zonal_means', - 'annual_mean', - 'seasonal_mean', - 'time_average', - 'regrid_time', - 'cmor_check_data', - # Save to file - 'save', - 'cleanup', -] - -DEFAULT_ORDER = tuple(__all__) - -# The order of intial and final steps cannot be configured -INITIAL_STEPS = DEFAULT_ORDER[:DEFAULT_ORDER.index('fix_data') + 1] -FINAL_STEPS = DEFAULT_ORDER[DEFAULT_ORDER.index('cmor_check_data'):] - -MULTI_MODEL_FUNCTIONS = { - 'multi_model_statistics', - 'mask_fillvalues', -} - - -def _get_itype(step): - """Get the input type of a preprocessor function.""" - function = globals()[step] - itype = inspect.getargspec(function).args[0] - return itype - - -def check_preprocessor_settings(settings): - """Check preprocessor settings.""" - # The inspect functions getargspec and getcallargs are deprecated - # in Python 3, but their replacements are not available in Python 2. - # TODO: Use the new Python 3 inspect API - for step in settings: - if step not in DEFAULT_ORDER: - raise ValueError( - "Unknown preprocessor function '{}', choose from: {}".format( - step, ', '.join(DEFAULT_ORDER))) - - function = function = globals()[step] - argspec = inspect.getargspec(function) - args = argspec.args[1:] - # Check for invalid arguments - invalid_args = set(settings[step]) - set(args) - if invalid_args: - raise ValueError( - "Invalid argument(s): {} encountered for preprocessor " - "function {}. \nValid arguments are: [{}]".format( - ', '.join(invalid_args), step, ', '.join(args))) - - # Check for missing arguments - defaults = argspec.defaults - end = None if defaults is None else -len(defaults) - missing_args = set(args[:end]) - set(settings[step]) - if missing_args: - raise ValueError( - "Missing required argument(s) {} for preprocessor " - "function {}".format(missing_args, step)) - # Final sanity check in case the above fails to catch a mistake - try: - inspect.getcallargs(function, None, **settings[step]) - except TypeError: - logger.error( - "Wrong preprocessor function arguments in " - "function '%s'", step) - raise - - -def _check_multi_model_settings(products): - """Check that multi dataset settings are identical for all products.""" - multi_model_steps = (step for step in MULTI_MODEL_FUNCTIONS - if any(step in p.settings for p in products)) - for step in multi_model_steps: - reference = None - for product in products: - settings = product.settings.get(step) - if settings is None: - continue - elif reference is None: - reference = product - elif reference.settings[step] != settings: - raise ValueError( - "Unable to combine differing multi-dataset settings for " - "{} and {}, {} and {}".format( - reference.filename, product.filename, - reference.settings[step], settings)) - - -def _get_multi_model_settings(products, step): - """Select settings for multi model step""" - _check_multi_model_settings(products) - settings = {} - exclude = set() - for product in products: - if step in product.settings: - settings = product.settings[step] - else: - exclude.add(product) - return settings, exclude - - -def _run_preproc_function(function, items, kwargs): - """Run preprocessor function.""" - msg = "{}({}, {})".format(function.__name__, items, kwargs) - logger.debug("Running %s", msg) - try: - return function(items, **kwargs) - except Exception: - logger.error("Failed to run %s", msg) - raise - - -def preprocess(items, step, **settings): - """Run preprocessor""" - logger.debug("Running preprocessor step %s", step) - function = globals()[step] - itype = _get_itype(step) - - result = [] - if itype.endswith('s'): - result.append(_run_preproc_function(function, items, settings)) - else: - for item in items: - result.append(_run_preproc_function(function, item, settings)) - - items = [] - for item in result: - if isinstance(item, - (PreprocessorFile, Cube, six.string_types)): - items.append(item) - else: - items.extend(item) - - return items - - -def get_step_blocks(steps, order): - """Group steps into execution blocks.""" - blocks = [] - prev_step_type = None - for step in order[order.index('load') + 1:order.index('save')]: - if step in steps: - step_type = step in MULTI_MODEL_FUNCTIONS - if step_type is not prev_step_type: - block = [] - blocks.append(block) - prev_step_type = step_type - block.append(step) - return blocks - - -class PreprocessorFile(TrackedFile): - """Preprocessor output file.""" - - def __init__(self, attributes, settings, ancestors=None): - super(PreprocessorFile, self).__init__(attributes['filename'], - attributes, ancestors) - - self.settings = copy.deepcopy(settings) - if 'save' not in self.settings: - self.settings['save'] = {} - self.settings['save']['filename'] = self.filename - - self.files = [a.filename for a in ancestors or ()] - - self._cubes = None - self._prepared = False - - def check(self): - """Check preprocessor settings.""" - check_preprocessor_settings(self.settings) - - def apply(self, step, debug=False): - """Apply preprocessor step to product.""" - if step not in self.settings: - raise ValueError( - "PreprocessorFile {} has no settings for step {}".format( - self, step)) - self.cubes = preprocess(self.cubes, step, **self.settings[step]) - if debug: - logger.debug("Result %s", self.cubes) - filename = _get_debug_filename(self.filename, step) - save(self.cubes, filename) - - def prepare(self): - """Apply preliminary file operations on product.""" - if not self._prepared: - for step in DEFAULT_ORDER[:DEFAULT_ORDER.index('load')]: - if step in self.settings: - self.files = preprocess(self.files, step, - **self.settings[step]) - self._prepared = True - - @property - def cubes(self): - """Cubes.""" - if self.is_closed: - self.prepare() - self._cubes = preprocess(self.files, 'load', - **self.settings.get('load', {})) - return self._cubes - - @cubes.setter - def cubes(self, value): - self._cubes = value - - def save(self): - """Save cubes to disk.""" - if self._cubes is not None: - self.files = preprocess(self._cubes, 'save', - **self.settings['save']) - self.files = preprocess(self.files, 'cleanup', - **self.settings.get('cleanup', {})) - - def close(self): - """Close the file.""" - self.save() - self._cubes = None - - @property - def is_closed(self): - """Check if the file is closed.""" - return self._cubes is None - - def _initialize_entity(self): - """Initialize the entity representing the file.""" - super(PreprocessorFile, self)._initialize_entity() - settings = { - 'preprocessor:' + k: str(v) - for k, v in self.settings.items() - } - self.entity.add_attributes(settings) - - -# TODO: use a custom ProductSet that raises an exception if you try to -# add the same Product twice - - -def _apply_multimodel(products, step, debug): - """Apply multi model step to products.""" - settings, exclude = _get_multi_model_settings(products, step) - - logger.debug("Applying %s to\n%s", step, '\n'.join( - str(p) for p in products - exclude)) - result = preprocess(products - exclude, step, **settings) - products = set(result) | exclude - - if debug: - for product in products: - logger.debug("Result %s", product.filename) - if not product.is_closed: - for cube in product.cubes: - logger.debug("with cube %s", cube) - - return products - - -class PreprocessingTask(BaseTask): - """Task for running the preprocessor""" - - def __init__( - self, - products, - ancestors=None, - name='', - order=DEFAULT_ORDER, - debug=None, - write_ncl_interface=False, - ): - """Initialize""" - super(PreprocessingTask, self).__init__(ancestors=ancestors, name=name) - _check_multi_model_settings(products) - self.products = set(products) - self.order = list(order) - self.debug = debug - self.write_ncl_interface = write_ncl_interface - - def _intialize_product_provenance(self): - """Initialize product provenance.""" - for product in self.products: - product.initialize_provenance(self.activity) - - # Hacky way to initialize the multi model products as well. - step = 'multi_model_statistics' - input_products = [p for p in self.products if step in p.settings] - if input_products: - statistic_products = input_products[0].settings[step].get( - 'output_products', {}).values() - for product in statistic_products: - product.initialize_provenance(self.activity) - - def _run(self, _): - """Run the preprocessor.""" - self._intialize_product_provenance() - - steps = { - step - for product in self.products for step in product.settings - } - blocks = get_step_blocks(steps, self.order) - for block in blocks: - logger.debug("Running block %s", block) - if block[0] in MULTI_MODEL_FUNCTIONS: - for step in block: - self.products = _apply_multimodel(self.products, step, - self.debug) - else: - for product in self.products: - logger.debug("Applying single-model steps to %s", product) - for step in block: - if step in product.settings: - product.apply(step, self.debug) - if block == blocks[-1]: - product.close() - - for product in self.products: - product.close() - metadata_files = write_metadata(self.products, - self.write_ncl_interface) - return metadata_files - - def __str__(self): - """Get human readable description.""" - order = [ - step for step in self.order - if any(step in product.settings for product in self.products) - ] - products = '\n\n'.join(str(p) for p in self.products) - txt = "{}:\norder: {}\n{}\n{}".format( - self.__class__.__name__, - order, - products, - super(PreprocessingTask, self).str(), - ) - return txt diff --git a/esmvaltool/preprocessor/_area.py b/esmvaltool/preprocessor/_area.py deleted file mode 100644 index 9c7eb3589b..0000000000 --- a/esmvaltool/preprocessor/_area.py +++ /dev/null @@ -1,294 +0,0 @@ -""" -Area operations on data cubes. - -Allows for selecting data subsets using certain latitude and longitude bounds; -selecting geographical regions; constructing area averages; etc. -""" -import logging - -import iris -import numpy as np - - -logger = logging.getLogger(__name__) - - -# guess bounds tool -def _guess_bounds(cube, coords): - """Guess bounds of a cube, or not.""" - # check for bounds just in case - for coord in coords: - if not cube.coord(coord).has_bounds(): - cube.coord(coord).guess_bounds() - return cube - - -# slice cube over a restricted area (box) -def extract_region(cube, start_longitude, end_longitude, start_latitude, - end_latitude): - """ - Extract a region from a cube. - - Function that subsets a cube on a box (start_longitude, end_longitude, - start_latitude, end_latitude) - This function is a restriction of masked_cube_lonlat(). - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - start_longitude: float - Western boundary longitude. - - end_longitude: float - Eastern boundary longitude. - - start_latitude: float - Southern Boundary latitude. - - end_latitude: float - Northern Boundary Latitude. - - Returns - ------- - iris.cube.Cube - smaller cube. - """ - # Converts Negative longitudes to 0 -> 360. standard - start_longitude = float(start_longitude) - end_longitude = float(end_longitude) - start_latitude = float(start_latitude) - end_latitude = float(end_latitude) - - if cube.coord('latitude').ndim == 1: - region_subset = cube.intersection( - longitude=(start_longitude, end_longitude), - latitude=(start_latitude, end_latitude)) - region_subset = region_subset.intersection(longitude=(0., 360.)) - return region_subset - # irregular grids - lats = cube.coord('latitude').points - lons = cube.coord('longitude').points - mask = np.ma.array(cube.data).mask - mask += np.ma.masked_where(lats < start_latitude, lats).mask - mask += np.ma.masked_where(lats > end_latitude, lats).mask - mask += np.ma.masked_where(lons > start_longitude, lons).mask - mask += np.ma.masked_where(lons > end_longitude, lons).mask - cube.data = np.ma.masked_where(mask, cube.data) - return cube - - -def get_iris_analysis_operation(operator): - """ - Determine the iris analysis operator from a string. - - Arguments - --------- - operator: string - A named operator. - Returns - ------- - function: A function from iris.analysis - """ - operators = ['mean', 'median', 'std_dev', 'variance', 'min', 'max'] - operator = operator.lower() - if operator not in operators: - raise ValueError("operator {} not recognised. " - "Accepted values are: {}." - "".format(operator, ', '.join(operators))) - operation = getattr(iris.analysis, operator.upper()) - return operation - - -def zonal_means(cube, coordinate, mean_type): - """ - Get zonal means. - - Function that returns zonal means along a coordinate `coordinate`; - the type of mean is controlled by mean_type variable (string):: - - 'mean' -> MEAN - 'median' -> MEDIAN - 'std_dev' -> STD_DEV - 'variance' -> VARIANCE - 'min' -> MIN - 'max' -> MAX - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - coordinate: str - name of coordinate to make mean - - mean_type: str - Type of analysis to use, from iris.analysis. - - Returns - ------- - iris.cube.Cube - Returns a cube - """ - operation = get_iris_analysis_operation(mean_type) - return cube.collapsed(coordinate, operation) - - -def tile_grid_areas(cube, fx_files): - """ - Tile the grid area data to match the dataset cube. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - fx_files: dictionary - dictionary of field:filename for the fx_files - - Returns - ------- - iris.cube.Cube - Freshly tiled grid areas cube. - """ - grid_areas = np.empty(0) - if fx_files: - for key, fx_file in fx_files.items(): - if fx_file is None: - continue - logger.info('Attempting to load %s from file: %s', key, fx_file) - fx_cube = iris.load_cube(fx_file) - - grid_areas = fx_cube.data - cube_shape = cube.data.shape - if cube.data.ndim == 4 and grid_areas.ndim == 2: - grid_areas = np.tile(grid_areas, - [cube_shape[0], cube_shape[1], 1, 1]) - elif cube.data.ndim == 4 and grid_areas.ndim == 3: - grid_areas = np.tile(grid_areas, - [cube_shape[0], 1, 1, 1]) - elif cube.data.ndim == 3 and grid_areas.ndim == 2: - grid_areas = np.tile(grid_areas, - [cube_shape[0], 1, 1]) - else: - raise ValueError('Grid and dataset number of dimensions not ' - 'recognised: {} and {}.' - ''.format(cube.data.ndim, grid_areas.ndim)) - return grid_areas - - -# get the area average -def average_region(cube, coord1, coord2, operator='mean', fx_files=None): - """ - Determine the area average. - - The average in the horizontal direction requires the coord1 and coord2 - arguments. These strings are usually 'longitude' and 'latitude' but - may depends on the cube. - - While this function is named `average_region`, it can be used to apply - several different operations in the horizonal plane: mean, standard - deviation, median variance, minimum and maximum. These options are - specified using the `operator` argument and the following key word - arguments: - - +------------+--------------------------------------------------+ - | `mean` | Area weighted mean. | - +------------+--------------------------------------------------+ - | `median` | Median (not area weighted) | - +------------+--------------------------------------------------+ - | `std_dev` | Standard Deviation (not area weighted) | - +------------+--------------------------------------------------+ - | `variance` | Variance (not area weighted) | - +------------+--------------------------------------------------+ - | `min`: | Minimum value | - +------------+--------------------------------------------------+ - | `max` | Maximum value | - +------------+--------------------------------------------------+ - - - Arguments - --------- - cube: iris.cube.Cube - input cube. - coord1: str - Name of the firct coordinate dimension - coord2: str - Name of the second coordinate dimension - operator: str - Name of the operation to apply (default: mean) - fx_files: dictionary - dictionary of field:filename for the fx_files - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - grid_areas = tile_grid_areas(cube, fx_files) - - if not fx_files and cube.coord('latitude').points.ndim == 2: - logger.error('average_region ERROR: fx_file needed to calculate grid ' - 'cell area for irregular grids.') - raise iris.exceptions.CoordinateMultiDimError(cube.coord('latitude')) - - if not grid_areas.any(): - cube = _guess_bounds(cube, [coord1, coord2]) - grid_areas = iris.analysis.cartography.area_weights(cube) - logger.info('Calculated grid area:{}'.format(grid_areas.shape)) - - if cube.data.shape != grid_areas.shape: - raise ValueError('Cube shape ({}) doesn`t match grid area shape ' - '({})'.format(cube.data.shape, grid_areas.shape)) - - operation = get_iris_analysis_operation(operator) - - # TODO: implement weighted stdev, median, and var when available in iris. - # See iris issue: https://github.com/SciTools/iris/issues/3208 - - if operator in ['mean', ]: - return cube.collapsed([coord1, coord2], - operation, - weights=grid_areas) - - # Many IRIS analysis functions do not accept weights arguments. - return cube.collapsed([coord1, coord2], operation) - - -def extract_named_regions(cube, regions): - """ - Extract a specific named region. - - The region coordinate exist in certain CMIP datasets. - This preprocessor allows a specific named regions to be extracted. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - regions: str, list - A region or list of regions to extract. - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - # Make sure regions is a list of strings - if isinstance(regions, str): - regions = [regions, ] - - if not isinstance(regions, (list, tuple, set)): - raise ValueError('Regions "{}" is not an acceptable format.' - ''.format(regions)) - - available_regions = set(cube.coord('region').points) - invalid_regions = set(regions) - available_regions - if invalid_regions: - raise ValueError('Region(s) "{}" not in cube region(s): ' - '{}'.format(invalid_regions, available_regions)) - - constraints = iris.Constraint(region=lambda r: r in regions) - cube = cube.extract(constraint=constraints) - return cube diff --git a/esmvaltool/preprocessor/_derive/__init__.py b/esmvaltool/preprocessor/_derive/__init__.py deleted file mode 100644 index 8268a36a70..0000000000 --- a/esmvaltool/preprocessor/_derive/__init__.py +++ /dev/null @@ -1,122 +0,0 @@ -"""Automatically derive variables.""" - -import importlib -import logging -from copy import deepcopy -from pathlib import Path - -import iris - -logger = logging.getLogger(__name__) - - -def _get_all_derived_variables(): - """Get all possible derived variables. - - Returns - ------- - dict - All derived variables with `short_name` (keys) and the associated - python classes (values). - - """ - derivers = {} - for path in Path(__file__).parent.glob('[a-z]*.py'): - short_name = path.stem - module = importlib.import_module( - f'esmvaltool.preprocessor._derive.{short_name}') - derivers[short_name] = getattr(module, 'DerivedVariable') - return derivers - - -ALL_DERIVED_VARIABLES = _get_all_derived_variables() - -__all__ = list(ALL_DERIVED_VARIABLES) - - -def get_required(short_name): - """Return all required variables for derivation. - - Get all information (at least `short_name`) required for derivation and - optionally a list of needed fx files. - - Parameters - ---------- - short_name : str - `short_name` of the variable to derive. - - Returns - ------- - list - List of dictionaries (including at least the key `short_name`) - and occasionally mip or fx_files. - - """ - DerivedVariable = ALL_DERIVED_VARIABLES[short_name] - variables = deepcopy(DerivedVariable().required) - return variables - - -def derive(cubes, - short_name, - long_name, - units, - standard_name=None, - fx_files=None): - """Derive variable. - - Parameters - ---------- - cubes: iris.cube.CubeList - Includes all the needed variables for derivation defined in - :func:`get_required`. - short_name: str - short_name - long_name: str - long_name - units: str - units - standard_name: str, optional - standard_name - fx_files: dict, optional - If required, dictionary containing fx files with `short_name` - (keys) and path (values) of the fx variable. - - Returns - ------- - iris.cube.Cube - The new derived variable. - - """ - if short_name == cubes[0].var_name: - return cubes[0] - - cubes = iris.cube.CubeList(cubes) - # Preprare input cubes and add fx files if necessary - if fx_files: - for (fx_var, fx_path) in fx_files.items(): - if fx_path is not None: - fx_cube = iris.load_cube( - fx_path, - constraint=iris.Constraint( - cube_func=lambda c, var=fx_var: c.var_name == var)) - cubes.append(fx_cube) - else: - logger.debug( - "Requested fx variable '%s' for derivation of " - "'%s' not found", fx_var, short_name) - - # Derive variable - DerivedVariable = ALL_DERIVED_VARIABLES[short_name] - cube = DerivedVariable().calculate(cubes) - - # Set standard attributes - cube.var_name = short_name - cube.standard_name = standard_name if standard_name else None - cube.long_name = long_name - cube.units = units - for temp in cubes: - if 'source_file' in temp.attributes: - cube.attributes['source_file'] = temp.attributes['source_file'] - - return cube diff --git a/esmvaltool/preprocessor/_derive/_baseclass.py b/esmvaltool/preprocessor/_derive/_baseclass.py deleted file mode 100644 index 58844d9763..0000000000 --- a/esmvaltool/preprocessor/_derive/_baseclass.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Contains the base class for derived variables.""" -from abc import abstractmethod - - -class DerivedVariableBase: - """Base class for derived variables.""" - - @property - @staticmethod - @abstractmethod - def required(): - """List of required variables for derivation.""" - - @staticmethod - @abstractmethod - def calculate(cubes): - """Compute desired derived variable. - - This method needs to be overridden in the child class belonging to the - desired variable to derive. - - Parameters - ---------- - cubes : iris.cube.CubeList - Includes all the needed variables (incl. fx variables) for - derivation defined in the static class variable - `_required_variables`. - - Returns - ------- - iris.cube.Cube - New derived variable. - - Raises - ------ - NotImplementedError - If the desired variable derivation is not implemented, i.e. if this - method is called from this base class and not a child class. - - """ diff --git a/esmvaltool/preprocessor/_derive/_shared.py b/esmvaltool/preprocessor/_derive/_shared.py deleted file mode 100644 index 63ebc08aad..0000000000 --- a/esmvaltool/preprocessor/_derive/_shared.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Auxiliary derivation functions used for multiple variables.""" - -import logging - -import iris -from iris import Constraint - -logger = logging.getLogger(__name__) - - -def _get_land_fraction(cubes, standard_name, derive_from_ocean_fraction=False): - """Extract land fraction as :mod:`dask.array`.""" - cube = cubes.extract_strict(Constraint(name=standard_name)) - if derive_from_ocean_fraction: - fx_vars = ['sftof', 'sftlf'] - else: - fx_vars = ['sftlf'] - land_fraction = None - for fx_var in fx_vars: - if land_fraction is not None: - break - try: - fx_cube = cubes.extract_strict(_var_name_constraint(fx_var)) - except iris.exceptions.ConstraintMismatchError: - logger.debug( - "Cannot correct cube '%s' with '%s', fx file not found", - standard_name, fx_var) - else: - if not _shape_is_broadcastable(fx_cube.shape, cube.shape): - logger.debug("Cannot broadcast fx cube '%s' to cube '%s'", - fx_var, standard_name) - else: - if fx_var == 'sftof': - land_fraction = 1.0 - fx_cube.core_data() / 100.0 - else: - land_fraction = fx_cube.core_data() / 100.0 - logger.debug("Using fx cube '%s' to fix '%s'", fx_var, - standard_name) - return land_fraction - - -def _shape_is_broadcastable(shape_1, shape_2): - """Check if two :mod:`numpy.array' shapes are broadcastable.""" - return all((m == n) or (m == 1) or (n == 1) - for (m, n) in zip(shape_1[::-1], shape_2[::-1])) - - -def _var_name_constraint(var_name): - """:mod:`iris.Constraint` using `var_name` of a :mod:`iris.cube.Cube`.""" - return Constraint(cube_func=lambda c: c.var_name == var_name) - - -def cloud_area_fraction(cubes, tau_constraint, plev_constraint): - """Calculate cloud area fraction for different parameters.""" - clisccp_cube = cubes.extract_strict( - iris.Constraint(name='isccp_cloud_area_fraction')) - new_cube = clisccp_cube - new_cube = new_cube.extract(tau_constraint & plev_constraint) - coord_names = [ - coord.standard_name for coord in new_cube.coords() - if len(coord.points) > 1 - ] - if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: - new_cube = new_cube.collapsed( - 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) - if 'air_pressure' in coord_names: - new_cube = new_cube.collapsed('air_pressure', iris.analysis.SUM) - - return new_cube - - -def grid_area_correction(cubes, standard_name, ocean_var=False): - """Correct (flux) variable defined relative to land/sea area.""" - cube = cubes.extract_strict(Constraint(name=standard_name)) - core_data = cube.core_data() - land_fraction = _get_land_fraction( - cubes, standard_name, derive_from_ocean_fraction=ocean_var) - if land_fraction is not None: - if ocean_var: - land_fraction = 1.0 - land_fraction - cube.data = core_data * land_fraction - return cube diff --git a/esmvaltool/preprocessor/_derive/alb.py b/esmvaltool/preprocessor/_derive/alb.py deleted file mode 100644 index 5cea242c5d..0000000000 --- a/esmvaltool/preprocessor/_derive/alb.py +++ /dev/null @@ -1,36 +0,0 @@ -"""Derivation of variable `alb`. - -authors: - - crez_ba - -""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `alb`.""" - - # Required variables - required = [ - { - 'short_name': 'rsds' - }, - { - 'short_name': 'rsus' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute surface albedo.""" - rsds_cube = cubes.extract_strict( - Constraint(name='surface_downwelling_shortwave_flux_in_air')) - rsus_cube = cubes.extract_strict( - Constraint(name='surface_upwelling_shortwave_flux_in_air')) - - rsns_cube = rsus_cube / rsds_cube - - return rsns_cube diff --git a/esmvaltool/preprocessor/_derive/amoc.py b/esmvaltool/preprocessor/_derive/amoc.py deleted file mode 100644 index 5095f74dde..0000000000 --- a/esmvaltool/preprocessor/_derive/amoc.py +++ /dev/null @@ -1,54 +0,0 @@ -"""Derivation of variable `amoc`.""" -import iris -import numpy as np - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `amoc`.""" - - # Required variables - required = [{'short_name': 'msftmyz', 'mip': 'Omon'}] - - @staticmethod - def calculate(cubes): - """Compute Atlantic meriodinal overturning circulation. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - Returns - --------- - iris.cube.Cube - Output AMOC cube. - """ - # 0. Load the msftmyz cube. - cube = cubes.extract_strict( - iris.Constraint( - name='ocean_meridional_overturning_mass_streamfunction')) - - # 1: find the relevant region - atlantic_region = 'atlantic_arctic_ocean' - atl_constraint = iris.Constraint(region=atlantic_region) - cube = cube.extract(constraint=atl_constraint) - - # 2: Remove the shallowest 500m to avoid wind driven mixed layer. - depth_constraint = iris.Constraint(depth=lambda d: d >= 500.) - cube = cube.extract(constraint=depth_constraint) - - # 3: Find the latitude closest to 26N - rapid_location = 26.5 - lats = cube.coord('latitude').points - rapid_index = np.argmin(np.abs(lats - rapid_location)) - rapid_constraint = iris.Constraint(latitude=lats[rapid_index]) - cube = cube.extract(constraint=rapid_constraint) - - # 4: find the maximum in the water column along the time axis. - cube = cube.collapsed( - ['depth', 'region'], - iris.analysis.MAX, - ) - return cube diff --git a/esmvaltool/preprocessor/_derive/clhmtisccp.py b/esmvaltool/preprocessor/_derive/clhmtisccp.py deleted file mode 100644 index 8eb9dd2358..0000000000 --- a/esmvaltool/preprocessor/_derive/clhmtisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `clhmtisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `clhmtisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP high level medium-thickness cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) - plev = Constraint(air_pressure=lambda p: p <= 44000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/clhtkisccp.py b/esmvaltool/preprocessor/_derive/clhtkisccp.py deleted file mode 100644 index 3f73c8ff13..0000000000 --- a/esmvaltool/preprocessor/_derive/clhtkisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `clhtkisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `clhtkisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP high level thick cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) - plev = Constraint(air_pressure=lambda p: p <= 44000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/cllmtisccp.py b/esmvaltool/preprocessor/_derive/cllmtisccp.py deleted file mode 100644 index e6564142b5..0000000000 --- a/esmvaltool/preprocessor/_derive/cllmtisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `cllmtisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `cllmtisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP low level medium-thickness cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) - plev = Constraint(air_pressure=lambda p: p > 68000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/clltkisccp.py b/esmvaltool/preprocessor/_derive/clltkisccp.py deleted file mode 100644 index 79da0ee280..0000000000 --- a/esmvaltool/preprocessor/_derive/clltkisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `clltkisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `clltkisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP low level thick cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) - plev = Constraint(air_pressure=lambda p: p > 68000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/clmmtisccp.py b/esmvaltool/preprocessor/_derive/clmmtisccp.py deleted file mode 100644 index fc70859c4d..0000000000 --- a/esmvaltool/preprocessor/_derive/clmmtisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `clmmtisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `clmmtisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP middle level medium-thickness cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) - plev = Constraint(air_pressure=lambda p: 44000. < p <= 68000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/clmtkisccp.py b/esmvaltool/preprocessor/_derive/clmtkisccp.py deleted file mode 100644 index eb6ef501a7..0000000000 --- a/esmvaltool/preprocessor/_derive/clmtkisccp.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Derivation of variable `clmtkisccp`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase -from ._shared import cloud_area_fraction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `clmtkisccp`.""" - - # Required variables - required = [{'short_name': 'clisccp'}] - - @staticmethod - def calculate(cubes): - """Compute ISCCP middle level thick cloud area fraction.""" - tau = Constraint( - atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) - plev = Constraint(air_pressure=lambda p: 44000. < p <= 68000.) - - return cloud_area_fraction(cubes, tau, plev) diff --git a/esmvaltool/preprocessor/_derive/fgco2_grid.py b/esmvaltool/preprocessor/_derive/fgco2_grid.py deleted file mode 100644 index 49a2290abe..0000000000 --- a/esmvaltool/preprocessor/_derive/fgco2_grid.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `fgco2_grid`.""" -from ._baseclass import DerivedVariableBase -from ._shared import grid_area_correction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `fgco2_grid`.""" - - # Required variables - required = [{ - 'short_name': 'fgco2', - 'fx_files': ['sftof', 'sftlf'], - }] - - @staticmethod - def calculate(cubes): - """Compute gas exchange flux of CO2 relative to grid cell area. - - Note - ---- - By default, `fgco2` is defined relative to sea area. For spatial - integration, the original quantity is multiplied by the sea area - fraction (`sftof`), so that the resuting derived variable is defined - relative to the grid cell area. This correction is only relevant for - coastal regions. - - """ - return grid_area_correction( - cubes, - 'surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon', - ocean_var=True) diff --git a/esmvaltool/preprocessor/_derive/gtfgco2.py b/esmvaltool/preprocessor/_derive/gtfgco2.py deleted file mode 100644 index f8295c8c6e..0000000000 --- a/esmvaltool/preprocessor/_derive/gtfgco2.py +++ /dev/null @@ -1,81 +0,0 @@ -"""Derivation of variable `gtfgco2`.""" -import iris -import numpy as np - -from ._baseclass import DerivedVariableBase - - -def calculate_total_flux(fgco2_cube, cube_area): - """ - Calculate the area of unmasked cube cells. - - Requires a cube with two spacial dimensions. (no depth coordinate). - - Parameters - ---------- - cube: iris.cube.Cube - Data Cube - cube_area: iris.cube.Cube - Cell area Cube - - Returns - ------- - numpy.array: - An numpy array containing the total flux of CO2. - - """ - data = [] - times = fgco2_cube.coord('time') - - fgco2_cube.data = np.ma.array(fgco2_cube.data) - for time_itr in np.arange(len(times.points)): - - total_flux = fgco2_cube[time_itr].data * cube_area.data - - total_flux = np.ma.masked_where(fgco2_cube[time_itr].data.mask, - total_flux) - data.append(total_flux.sum()) - - ###### - # Create a small dummy output array - data = np.array(data) - return data - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `gtfgco2`.""" - - # Required variables - required = [ - { - 'short_name': 'fgco2', - 'mip': 'Omon', - 'fx_files': [ - 'areacello', - ], - }, - ] - - @staticmethod - def calculate(cubes): - """Compute longwave cloud radiative effect.""" - fgco2_cube = cubes.extract_strict( - iris.Constraint(name='surface_downward_mass_flux_of_carbon_dioxide' - '_expressed_as_carbon')) - - try: - cube_area = cubes.extract_strict(iris.Constraint(name='cell_area')) - except iris.exceptions.ConstraintMismatchError: - pass - - total_flux = calculate_total_flux(fgco2_cube, cube_area) - - # Dummy result cube - result = fgco2_cube.collapsed( - ['latitude', 'longitude'], - iris.analysis.MEAN, - ) - result.units = fgco2_cube.units * cube_area.units - - result.data = total_flux - return result diff --git a/esmvaltool/preprocessor/_derive/lwcre.py b/esmvaltool/preprocessor/_derive/lwcre.py deleted file mode 100644 index 3526562fec..0000000000 --- a/esmvaltool/preprocessor/_derive/lwcre.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Derivation of variable `lwcre`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `lwcre`.""" - - # Required variables - required = [ - { - 'short_name': 'rlut' - }, - { - 'short_name': 'rlutcs' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute longwave cloud radiative effect.""" - rlut_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_longwave_flux')) - rlutcs_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_longwave_flux_assuming_clear_sky')) - - lwcre_cube = rlutcs_cube - rlut_cube - lwcre_cube.units = rlut_cube.units - - return lwcre_cube diff --git a/esmvaltool/preprocessor/_derive/lwp.py b/esmvaltool/preprocessor/_derive/lwp.py deleted file mode 100644 index 6b795c5665..0000000000 --- a/esmvaltool/preprocessor/_derive/lwp.py +++ /dev/null @@ -1,72 +0,0 @@ -"""Derivation of variable `lwp`.""" - -import logging - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - -logger = logging.getLogger(__name__) - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `lwp`.""" - - # Required variables - required = [ - { - 'short_name': 'clwvi' - }, - { - 'short_name': 'clivi' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute liquid water path. - - Note - ---- - Some datasets output the variable `clwvi` which only contains `lwp`. In - these cases, the input `clwvi` cube is just returned. - - """ - clwvi_cube = cubes.extract_strict( - Constraint(name='atmosphere_cloud_condensed_water_content')) - clivi_cube = cubes.extract_strict( - Constraint(name='atmosphere_cloud_ice_content')) - - dataset = clwvi_cube.attributes.get('model_id') - project = clwvi_cube.attributes.get('project_id') - # Should we check that the model_id/project_id are the same on both - # cubes? - - bad_datasets = [ - 'CESM1-CAM5-1-FV2', - 'CESM1-CAM5', - 'CMCC-CESM', - 'CMCC-CM', - 'CMCC-CMS', - 'IPSL-CM5A-MR', - 'IPSL-CM5A-LR', - 'IPSL-CM5B-LR', - 'CCSM4', - 'IPSL-CM5A-MR', - 'MIROC-ESM', - 'MIROC-ESM-CHEM', - 'MIROC-ESM', - 'CSIRO-Mk3-6-0', - 'MPI-ESM-MR', - 'MPI-ESM-LR', - 'MPI-ESM-P', - ] - if (project in ["CMIP5", "CMIP5_ETHZ"] and dataset in bad_datasets): - logger.info( - "Assuming that variable clwvi from %s dataset %s " - "contains only liquid water", project, dataset) - lwp_cube = clwvi_cube - else: - lwp_cube = clwvi_cube - clivi_cube - - return lwp_cube diff --git a/esmvaltool/preprocessor/_derive/nbp_grid.py b/esmvaltool/preprocessor/_derive/nbp_grid.py deleted file mode 100644 index 54a6b95ce6..0000000000 --- a/esmvaltool/preprocessor/_derive/nbp_grid.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `nbp_grid`.""" -from ._baseclass import DerivedVariableBase -from ._shared import grid_area_correction - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `nbp_grid`.""" - - # Required variables - required = [{ - 'short_name': 'nbp', - 'fx_files': ['sftlf'], - }] - - @staticmethod - def calculate(cubes): - """Compute net biome production relative to grid cell area. - - Note - ---- - By default, `nbp` is defined relative to land area. For spatial - integration, the original quantity is multiplied by the land area - fraction (`sftlf`), so that the resuting derived variable is defined - relative to the grid cell area. This correction is only relevant for - coastal regions. - - """ - return grid_area_correction( - cubes, - 'surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_' - 'carbon_due_to_all_land_processes') diff --git a/esmvaltool/preprocessor/_derive/netcre.py b/esmvaltool/preprocessor/_derive/netcre.py deleted file mode 100644 index 7ee9a496a8..0000000000 --- a/esmvaltool/preprocessor/_derive/netcre.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Derivation of variable `netcre`.""" - -from ._baseclass import DerivedVariableBase -from .lwcre import DerivedVariable as Lwcre -from .swcre import DerivedVariable as Swcre - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `netcre`.""" - - # Required variables - required = [ - { - 'short_name': 'rlut' - }, - { - 'short_name': 'rlutcs' - }, - { - 'short_name': 'rsut' - }, - { - 'short_name': 'rsutcs' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute net cloud radiative effect. - - Note - ---- - Calculate net cloud radiative effect as sum of longwave and shortwave - cloud radiative effects. - """ - lwcre_var = Lwcre() - swcre_var = Swcre() - lwcre_cube = lwcre_var.calculate(cubes) - swcre_cube = swcre_var.calculate(cubes) - - netcre_cube = lwcre_cube + swcre_cube - netcre_cube.units = lwcre_cube.units - - return netcre_cube diff --git a/esmvaltool/preprocessor/_derive/rlns.py b/esmvaltool/preprocessor/_derive/rlns.py deleted file mode 100644 index 2a80e6386a..0000000000 --- a/esmvaltool/preprocessor/_derive/rlns.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `rlns`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `rlns`.""" - - # Required variables - required = [ - { - 'short_name': 'rlds' - }, - { - 'short_name': 'rlus' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute surface net downward longwave radiation.""" - rlds_cube = cubes.extract_strict( - Constraint(name='surface_downwelling_longwave_flux_in_air')) - rlus_cube = cubes.extract_strict( - Constraint(name='surface_upwelling_longwave_flux_in_air')) - - rlns_cube = rlds_cube - rlus_cube - - return rlns_cube diff --git a/esmvaltool/preprocessor/_derive/rsns.py b/esmvaltool/preprocessor/_derive/rsns.py deleted file mode 100644 index 31a6bad867..0000000000 --- a/esmvaltool/preprocessor/_derive/rsns.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `rsns`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `rsns`.""" - - # Required variables - required = [ - { - 'short_name': 'rsds' - }, - { - 'short_name': 'rsus' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute surface net downward shortwave radiation.""" - rsds_cube = cubes.extract_strict( - Constraint(name='surface_downwelling_shortwave_flux_in_air')) - rsus_cube = cubes.extract_strict( - Constraint(name='surface_upwelling_shortwave_flux_in_air')) - - rsns_cube = rsds_cube - rsus_cube - - return rsns_cube diff --git a/esmvaltool/preprocessor/_derive/rsnt.py b/esmvaltool/preprocessor/_derive/rsnt.py deleted file mode 100644 index 1a71035e3b..0000000000 --- a/esmvaltool/preprocessor/_derive/rsnt.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `rsnt`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `rsnt`.""" - - # Required variables - required = [ - { - 'short_name': 'rsdt' - }, - { - 'short_name': 'rsut' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute toa net downward shortwave radiation.""" - rsdt_cube = cubes.extract_strict( - Constraint(name='toa_incoming_shortwave_flux')) - rsut_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_shortwave_flux')) - - rsnt_cube = rsdt_cube - rsut_cube - - return rsnt_cube diff --git a/esmvaltool/preprocessor/_derive/rtnt.py b/esmvaltool/preprocessor/_derive/rtnt.py deleted file mode 100644 index 590b296e58..0000000000 --- a/esmvaltool/preprocessor/_derive/rtnt.py +++ /dev/null @@ -1,36 +0,0 @@ -"""Derivation of variable `rtnt`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `rtnt`.""" - - # Required variables - required = [ - { - 'short_name': 'rsdt' - }, - { - 'short_name': 'rsut' - }, - { - 'short_name': 'rlut' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute toa net downward total radiation.""" - rsdt_cube = cubes.extract_strict( - Constraint(name='toa_incoming_shortwave_flux')) - rsut_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_shortwave_flux')) - rlut_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_longwave_flux')) - - rtnt_cube = rsdt_cube - rsut_cube - rlut_cube - - return rtnt_cube diff --git a/esmvaltool/preprocessor/_derive/sm.py b/esmvaltool/preprocessor/_derive/sm.py deleted file mode 100644 index be69f13803..0000000000 --- a/esmvaltool/preprocessor/_derive/sm.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Derivation of variable `sm`.""" - -import cf_units -import numpy as np -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `sm`.""" - - # Required variables - required = [{'short_name': 'mrsos'}] - - @staticmethod - def calculate(cubes): - """Compute soil moisture. - - Note - ---- - Convert moisture content of soil layer (kg/m2) into volumetric soil - moisture (m3/m3), assuming density of water 998.2 kg/m2 (at temperature - 20 deg C). - - """ - mrsos_cube = cubes.extract_strict( - Constraint(name='moisture_content_of_soil_layer')) - - depth = mrsos_cube.coord('depth').bounds - layer_thickness = depth[..., 1] - depth[..., 0] - - sm_cube = mrsos_cube / layer_thickness / 998.2 - sm_cube.units = cf_units.Unit('m3 m^-3') - sm_cube.data = np.ma.array(sm_cube.data, dtype=np.dtype('float32')) - - return sm_cube diff --git a/esmvaltool/preprocessor/_derive/swcre.py b/esmvaltool/preprocessor/_derive/swcre.py deleted file mode 100644 index ae89777547..0000000000 --- a/esmvaltool/preprocessor/_derive/swcre.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Derivation of variable `swcre`.""" - -from iris import Constraint - -from ._baseclass import DerivedVariableBase - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `swcre`.""" - - # Required variables - required = [ - { - 'short_name': 'rsut' - }, - { - 'short_name': 'rsutcs' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute shortwave cloud radiative effect.""" - rsut_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_shortwave_flux')) - rsutcs_cube = cubes.extract_strict( - Constraint(name='toa_outgoing_shortwave_flux_assuming_clear_sky')) - - swcre_cube = rsutcs_cube - rsut_cube - - return swcre_cube diff --git a/esmvaltool/preprocessor/_derive/toz.py b/esmvaltool/preprocessor/_derive/toz.py deleted file mode 100644 index b3d101389a..0000000000 --- a/esmvaltool/preprocessor/_derive/toz.py +++ /dev/null @@ -1,192 +0,0 @@ -"""Derivation of variable `toz`.""" - -import cf_units -import iris -import numba -import numpy as np -from scipy import constants - -from ._baseclass import DerivedVariableBase - -# Constants -AVOGADRO_CONST = constants.value('Avogadro constant') -AVOGADRO_CONST_UNIT = constants.unit('Avogadro constant') -STANDARD_GRAVITY = 9.81 -STANDARD_GRAVITY_UNIT = cf_units.Unit('m s^-2') -MW_AIR = 29 -MW_AIR_UNIT = cf_units.Unit('g mol^-1') -MW_O3 = 48 -MW_O3_UNIT = cf_units.Unit('g mol^-1') -DOBSON_UNIT = cf_units.Unit('2.69e20 m^-2') - - -class DerivedVariable(DerivedVariableBase): - """Derivation of variable `toz`.""" - - # Required variables - required = [ - { - 'short_name': 'tro3' - }, - { - 'short_name': 'ps' - }, - ] - - @staticmethod - def calculate(cubes): - """Compute total column ozone. - - Note - ---- - The surface pressure is used as a lower integration bound. A fixed - upper integration bound of 0 Pa is used. - - """ - tro3_cube = cubes.extract_strict( - iris.Constraint(name='mole_fraction_of_ozone_in_air')) - ps_cube = cubes.extract_strict( - iris.Constraint(name='surface_air_pressure')) - - p_layer_widths = _pressure_level_widths( - tro3_cube, ps_cube, top_limit=0.0) - toz_cube = ( - tro3_cube * p_layer_widths / STANDARD_GRAVITY * MW_O3 / MW_AIR) - toz_cube = toz_cube.collapsed('air_pressure', iris.analysis.SUM) - toz_cube.units = (tro3_cube.units * p_layer_widths.units / - STANDARD_GRAVITY_UNIT * MW_O3_UNIT / MW_AIR_UNIT) - - # Convert from kg m^-2 to Dobson unit (2.69e20 m^-2 ) - toz_cube = toz_cube / MW_O3 * AVOGADRO_CONST - toz_cube.units = toz_cube.units / MW_O3_UNIT * AVOGADRO_CONST_UNIT - toz_cube.convert_units(DOBSON_UNIT) - toz_cube.data = np.ma.array(toz_cube.data, dtype=np.dtype('float32')) - - return toz_cube - - -# Helper functions -def _pressure_level_widths(tro3_cube, ps_cube, top_limit=0.0): - """Create a cube with pressure level widths. - - This is done by taking a 2D surface pressure field as lower bound. - - Parameters - ---------- - tro3_cube : iris.cube.Cube - `Cube` containing `mole_fraction_of_ozone_in_air`. - ps_cube : iris.cube.Cube - `Cube` containing `surface_air_pressure`. - top_limit : double - Pressure in Pa. - - Returns - ------- - iris.cube.Cube - `Cube` of same shape as `tro3_cube` containing pressure level widths. - - """ - pressure_array = _create_pressure_array(tro3_cube, ps_cube, top_limit) - - data = _apply_pressure_level_widths(pressure_array) - p_level_widths_cube = tro3_cube.copy(data=data) - p_level_widths_cube.rename('pressure level widths') - p_level_widths_cube.units = ps_cube.units - - return p_level_widths_cube - - -def _create_pressure_array(tro3_cube, ps_cube, top_limit): - """Create an array filled with the `air_pressure` coord values. - - The array is created from the `tro3_cube` with the same dimensions - as `tro3_cube`. This array is then sandwiched with a 2D array - containing the surface pressure and a 2D array containing the top - pressure limit. - """ - # Create 4D array filled with pressure level values - p_levels = tro3_cube.coord('air_pressure').points - p_4d_array = iris.util.broadcast_to_shape(p_levels, tro3_cube.shape, [1]) - - # Create 4d array filled with surface pressure values - shape = tro3_cube.shape - ps_4d_array = iris.util.broadcast_to_shape(ps_cube.data, shape, [0, 2, 3]) - - # Set pressure levels below the surface pressure to NaN - pressure_4d = np.where((ps_4d_array - p_4d_array) < 0, np.NaN, p_4d_array) - - # Make top_limit last pressure level - top_limit_array = np.ones(ps_cube.shape) * top_limit - data = top_limit_array[:, np.newaxis, :, :] - pressure_4d = np.concatenate((pressure_4d, data), axis=1) - - # Make surface pressure the first pressure level - data = ps_cube.data[:, np.newaxis, :, :] - pressure_4d = np.concatenate((data, pressure_4d), axis=1) - - return pressure_4d - - -def _apply_pressure_level_widths(array, air_pressure_axis=1): - """Compute pressure level widths. - - For a 1D array with pressure level columns, return a 1D array with - pressure level widths. - """ - return np.apply_along_axis(_p_level_widths, air_pressure_axis, array) - - -@numba.jit() # ~10x faster -def _p_level_widths(array): - """Create pressure level widths. - - The array with pressure levels is assumed to be monotonic and the - values are decreasing. - - The first element is the lower boundary (surface pressure), the last - value is the upper boundary. Thicknesses are only calculated for the - values between these boundaries, the returned array, therefore, - contains two elements less. - - >>> _p_level_widths(np.array([1020, 1000, 700, 500, 5])) - array([170., 250., 595.]) - - >>> _p_level_widths(np.array([990, np.NaN, 700, 500, 5])) - array([ 0., 390., 595.]) - """ - surface_pressure = array[0] - top_limit = array[-1] - array = array[1:-1] - - p_level_widths = np.ones(array.shape) * np.NAN - - last_pressure_level = len(array) - 1 - for i, val in enumerate(array): - # numba would otherwise initialize it to 0 and - # hide bugs that would occur in raw Python - bounds_width = np.NAN - if np.isnan(val): - bounds_width = 0 - else: - # Distance to lower bound - if i == 0 or np.isnan(array[i - 1]): - # First pressure level with value - dist_to_lower_bound = surface_pressure - val - else: - dist_to_lower_bound = 0.5 * (array[i - 1] - val) - - # Distance to upper bound - if i == last_pressure_level: # last pressure level - dist_to_upper_bound = val - top_limit - else: - dist_to_upper_bound = 0.5 * (val - array[i + 1]) - - # Check monotonicity - all distances must be >= 0 - if dist_to_lower_bound < 0.0 or dist_to_upper_bound < 0.0: - raise ValueError("Pressure level value increased with " - "height.") - - bounds_width = dist_to_lower_bound + dist_to_upper_bound - - p_level_widths[i] = bounds_width - return p_level_widths diff --git a/esmvaltool/preprocessor/_download.py b/esmvaltool/preprocessor/_download.py deleted file mode 100644 index d1272f86e7..0000000000 --- a/esmvaltool/preprocessor/_download.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Functions for downloading climate data files""" -import logging -import os -import subprocess - -from .._data_finder import get_start_end_year, select_files - -logger = logging.getLogger(__name__) - - -def synda_search(variable): - """Search files using synda.""" - query = { - 'model': variable.get('dataset'), - 'project': variable.get('project'), - 'cmor_table': variable.get('mip'), - 'ensemble': variable.get('ensemble'), - 'experiment': variable.get('exp'), - 'variable': variable.get('short_name'), - } - - query = {facet: value for facet, value in query.items() if value} - - query = ("{}='{}'".format(facet, value) for facet, value in query.items()) - - cmd = ['synda', 'search', '--file'] - cmd.extend(query) - cmd = ' '.join(cmd) - logger.debug("Running: %s", cmd) - result = subprocess.check_output(cmd, shell=True, universal_newlines=True) - logger.debug('Result:\n%s', result.strip()) - - files = (l.split()[-1] for l in result.split('\n') if l.startswith('new')) - files = select_files(files, variable['start_year'], variable['end_year']) - - # filter partially overlapping files - intervals = {get_start_end_year(name): name for name in files} - files = [] - for (start, end), filename in intervals.items(): - for _start, _end in intervals: - if start == _start and end == _end: - continue - if start >= _start and end <= _end: - break - else: - files.append(filename) - - logger.debug("Selected files:\n%s", '\n'.join(files)) - - return files - - -def synda_download(synda_name, dest_folder): - """Download file using synda.""" - filename = '.'.join(synda_name.split('.')[-2:]) - local_file = os.path.join(dest_folder, filename) - - if not os.path.exists(local_file): - cmd = [ - 'synda', 'get', '--dest_folder={}'.format(dest_folder), - '--verify_checksum', synda_name - ] - cmd = ' '.join(cmd) - logger.debug("Running: %s", cmd) - subprocess.check_call(cmd, shell=True) - - return local_file - - -def download(files, dest_folder): - """Download files that are not available locally""" - os.makedirs(dest_folder, exist_ok=True) - - local_files = [] - for name in files: - local_file = synda_download(synda_name=name, dest_folder=dest_folder) - local_files.append(local_file) - - return local_files diff --git a/esmvaltool/preprocessor/_io.py b/esmvaltool/preprocessor/_io.py deleted file mode 100644 index 71e7144058..0000000000 --- a/esmvaltool/preprocessor/_io.py +++ /dev/null @@ -1,267 +0,0 @@ -"""Functions for loading and saving cubes.""" -import copy -import logging -import os -import shutil -from collections import OrderedDict -from itertools import groupby - -import numpy as np -import iris -import iris.exceptions -import yaml - -from .._config import use_legacy_iris -from .._task import write_ncl_settings - -logger = logging.getLogger(__name__) - -GLOBAL_FILL_VALUE = 1e+20 - -DATASET_KEYS = { - 'mip', -} -VARIABLE_KEYS = { - 'reference_dataset', - 'alternative_dataset', -} - - -def _get_attr_from_field_coord(ncfield, coord_name, attr): - if coord_name is not None: - attrs = ncfield.cf_group[coord_name].cf_attrs() - attr_val = [value for (key, value) in attrs if key == attr] - if attr_val: - return attr_val[0] - return None - - -def concatenate_callback(raw_cube, field, _): - """Use this callback to fix anything Iris tries to break.""" - # Remove attributes that cause issues with merging and concatenation - for attr in ['creation_date', 'tracking_id', 'history']: - if attr in raw_cube.attributes: - del raw_cube.attributes[attr] - for coord in raw_cube.coords(): - # Iris chooses to change longitude and latitude units to degrees - # regardless of value in file, so reinstating file value - if coord.standard_name in ['longitude', 'latitude']: - units = _get_attr_from_field_coord(field, coord.var_name, 'units') - if units is not None: - coord.units = units - - -def load(file, callback=None): - """Load iris cubes from files.""" - logger.debug("Loading:\n%s", file) - raw_cubes = iris.load_raw(file, callback=callback) - if not raw_cubes: - raise Exception('Can not load cubes from {0}'.format(file)) - for cube in raw_cubes: - cube.attributes['source_file'] = file - return raw_cubes - - -def _fix_cube_attributes(cubes): - """Unify attributes of different cubes to allow concatenation.""" - attributes = {} - for cube in cubes: - for (attr, val) in cube.attributes.items(): - if attr not in attributes: - attributes[attr] = val - else: - if not np.array_equal(val, attributes[attr]): - attributes[attr] = '{};{}'.format( - str(attributes[attr]), str(val)) - for cube in cubes: - cube.attributes = attributes - - -def concatenate(cubes): - """Concatenate all cubes after fixing metadata.""" - _fix_cube_attributes(cubes) - try: - cube = iris.cube.CubeList(cubes).concatenate_cube() - return cube - except iris.exceptions.ConcatenateError as ex: - logger.error('Can not concatenate cubes: %s', ex) - logger.error('Cubes:') - for cube in cubes: - logger.error(cube) - raise ex - - -def save(cubes, filename, optimize_access='', compress=False, **kwargs): - """ - Save iris cubes to file. - - Parameters - ---------- - cubes: iterable of iris.cube.Cube - Data cubes to be saved - - filename: str - Name of target file - - optimize_access: str - Set internal NetCDF chunking to favour a reading scheme - - Values can be map or timeseries, which improve performance when - reading the file one map or time series at a time. - Users can also provide a coordinate or a list of coordinates. In that - case the better performance will be avhieved by loading all the values - in that coordinate at a time - - compress: bool, optional - Use NetCDF internal compression. - - Returns - ------- - str - filename - - """ - # Rename some arguments - kwargs['target'] = filename - kwargs['zlib'] = compress - - dirname = os.path.dirname(filename) - if not os.path.exists(dirname): - os.makedirs(dirname) - - if (os.path.exists(filename) - and all(cube.has_lazy_data() for cube in cubes)): - logger.debug( - "Not saving cubes %s to %s to avoid data loss. " - "The cube is probably unchanged.", cubes, filename) - return filename - - logger.debug("Saving cubes %s to %s", cubes, filename) - if optimize_access: - cube = cubes[0] - if optimize_access == 'map': - dims = set( - cube.coord_dims('latitude') + cube.coord_dims('longitude')) - elif optimize_access == 'timeseries': - dims = set(cube.coord_dims('time')) - else: - dims = tuple() - for coord_dims in (cube.coord_dims(dimension) - for dimension in optimize_access.split(' ')): - dims += coord_dims - dims = set(dims) - - kwargs['chunksizes'] = tuple( - length if index in dims else 1 - for index, length in enumerate(cube.shape)) - - if not use_legacy_iris(): - kwargs['fill_value'] = GLOBAL_FILL_VALUE - - iris.save(cubes, **kwargs) - - return filename - - -def _get_debug_filename(filename, step): - """Get a filename for debugging the preprocessor.""" - dirname = os.path.splitext(filename)[0] - if os.path.exists(dirname) and os.listdir(dirname): - num = int(sorted(os.listdir(dirname)).pop()[:2]) + 1 - else: - num = 0 - filename = os.path.join(dirname, '{:02}_{}.nc'.format(num, step)) - return filename - - -def cleanup(files, remove=None): - """Clean up after running the preprocessor.""" - if remove is None: - remove = [] - - for path in remove: - if os.path.isdir(path): - shutil.rmtree(path) - elif os.path.isfile(path): - os.remove(path) - - return files - - -def _ordered_safe_dump(data, stream): - """Write data containing OrderedDicts to yaml file.""" - - class _OrderedDumper(yaml.SafeDumper): - pass - - def _dict_representer(dumper, data): - return dumper.represent_mapping( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items()) - - _OrderedDumper.add_representer(OrderedDict, _dict_representer) - return yaml.dump(data, stream, _OrderedDumper) - - -def write_metadata(products, write_ncl=False): - """Write product metadata to file.""" - output_files = [] - for output_dir, prods in groupby(products, - lambda p: os.path.dirname(p.filename)): - sorted_products = sorted( - prods, - key=lambda p: ( - p.attributes.get('recipe_dataset_index', 1e6), - p.attributes.get('dataset', ''), - ), - ) - metadata = OrderedDict() - for product in sorted_products: - if isinstance(product.attributes.get('exp'), (list, tuple)): - product.attributes = dict(product.attributes) - product.attributes['exp'] = '-'.join(product.attributes['exp']) - metadata[product.filename] = product.attributes - - output_filename = os.path.join(output_dir, 'metadata.yml') - output_files.append(output_filename) - with open(output_filename, 'w') as file: - _ordered_safe_dump(metadata, file) - if write_ncl: - output_files.append(_write_ncl_metadata(output_dir, metadata)) - - return output_files - - -def _write_ncl_metadata(output_dir, metadata): - """Write NCL metadata files to output_dir.""" - variables = [copy.deepcopy(v) for v in metadata.values()] - - for variable in variables: - fx_files = variable.pop('fx_files', {}) - for fx_type in fx_files: - variable[fx_type] = fx_files[fx_type] - - info = {'input_file_info': variables} - - # Split input_file_info into dataset and variable properties - # dataset keys and keys with non-identical values will be stored - # in dataset_info, the rest in variable_info - variable_info = {} - info['variable_info'] = [variable_info] - info['dataset_info'] = [] - for variable in variables: - dataset_info = {} - info['dataset_info'].append(dataset_info) - for key in variable: - dataset_specific = any( - variable[key] != var.get(key, object()) for var in variables) - if ((dataset_specific or key in DATASET_KEYS) - and key not in VARIABLE_KEYS): - dataset_info[key] = variable[key] - else: - variable_info[key] = variable[key] - - filename = os.path.join(output_dir, - variable_info['short_name'] + '_info.ncl') - write_ncl_settings(info, filename) - - return filename diff --git a/esmvaltool/preprocessor/_mapping.py b/esmvaltool/preprocessor/_mapping.py deleted file mode 100644 index 17a47e7481..0000000000 --- a/esmvaltool/preprocessor/_mapping.py +++ /dev/null @@ -1,238 +0,0 @@ -# -*- coding: utf-8 -*- -"""Provides mapping of a cube.""" - -import collections - -import iris -import numpy as np -import six - - -def _is_single_item(testee): - """ - Check if testee is a single item. - - Return whether this is a single item, rather than an iterable. - We count string types as 'single', also. - """ - return (isinstance(testee, six.string_types) - or not isinstance(testee, collections.Iterable)) - - -def _as_list_of_coords(cube, names_or_coords): - """Convert a name, coord, or list of names/coords to a list of coords.""" - # If not iterable, convert to list of a single item - if _is_single_item(names_or_coords): - names_or_coords = [names_or_coords] - coords = [] - for name_or_coord in names_or_coords: - if isinstance(name_or_coord, (iris.coords.Coord, six.string_types)): - coords.append(cube.coord(name_or_coord)) - else: - # Don't know how to handle this type - msg = ("Don't know how to handle coordinate of type %s. " - "Ensure all coordinates are of type six.string_types " - "or iris.coords.Coord.") % (type(name_or_coord), ) - raise TypeError(msg) - return coords - - -def ref_to_dims_index_as_coordinate(cube, ref): - """Get dims for coord ref.""" - coord = _as_list_of_coords(cube, ref)[0] - dims = cube.coord_dims(coord) - if not dims: - msg = ('Requested an iterator over a coordinate ({}) ' - 'which does not describe a dimension.') - msg = msg.format(coord.name()) - raise ValueError(msg) - return dims - - -def ref_to_dims_index_as_index(cube, ref): - """Get dim for index ref.""" - try: - dim = int(ref) - except (ValueError, TypeError): - raise ValueError('{} Incompatible type {} for ' - 'slicing'.format(ref, type(ref))) - if dim < 0 or dim > cube.ndim: - msg = ('Requested an iterator over a dimension ({}) ' - 'which does not exist.'.format(dim)) - raise ValueError(msg) - dims = [dim] - return dims - - -def ref_to_dims_index(cube, ref_to_slice): - """ - Map a list of :class:`iris.coords.DimCoord` to a tuple of indices. - - This method finds the indices of the dimensions in a cube that collectively - correspond to the given list of :class:`iris.coords.DimCoord`. - - Parameters - ---------- - cube: :class:`iris.cube.Cube` - The cube to examine. - ref_to_slice: iterable of or single :class:`iris.coords.DimCoord` - Specification of the dimensions in terms of coordinates. - - Returns - ------- - tuple: - A tuple of indices corresponding to the given dimensions. - """ - # Required to handle a mix between types - if _is_single_item(ref_to_slice): - ref_to_slice = [ref_to_slice] - dim_to_slice = [] - dim_to_slice_set = set() - for ref in ref_to_slice: - try: - dims = ref_to_dims_index_as_coordinate(cube, ref) - except TypeError: - dims = ref_to_dims_index_as_index(cube, ref) - for dim in dims: - if dim not in dim_to_slice_set: - dim_to_slice.append(dim) - dim_to_slice_set.add(dim) - return dim_to_slice - - -def get_associated_coords(cube, dimensions): - """ - Return all coords containing any of the given dimensions. - - Return all coords, dimensional and auxiliary, that contain any of - the given dimensions. - """ - dims = [] - dim_set = set() - for dim in dimensions: - if dim not in dim_set: - dims.append(dim) - dim_set.add(dim) - dim_coords = [] - for i in dims: - coords = cube.coords(contains_dimension=i, dim_coords=True) - if coords: - dim_coords.append(coords[0]) - aux_coords = [] - for i in dims: - coords = cube.coords(contains_dimension=i, dim_coords=False) - if coords: - aux_coords.append(coords[0]) - return dim_coords, aux_coords - - -def get_empty_data(shape, dtype=np.float32): - """ - Create an empty data object of the given shape. - - Creates an emtpy data object of the given shape, potentially of the lazy - kind from biggus or dask, depending on the used iris version. - """ - data = np.empty(shape, dtype=dtype) - mask = np.empty(shape, dtype=bool) - return np.ma.masked_array(data, mask) - - -def get_slice_spec(cube, ref_to_slice): - """ - Turn a slice reference into a specification for the slice. - - Turns a slice reference into a specification comprised of the shape as well - as the relevant dimensional and auxiliary coordinates. - """ - slice_dims = ref_to_dims_index(cube, ref_to_slice) - slice_shape = tuple(cube.shape[d] for d in slice_dims) - dim_coords, aux_coords = get_associated_coords(cube, slice_dims) - return slice_shape, dim_coords, aux_coords - - -def index_iterator(dims_to_slice, shape): - """ - Return iterator for subsets of multidimensional objects. - - An iterator over a multidimensional object, giving both source and - destination indices. - """ - dst_slices = (slice(None, None),) * len(dims_to_slice) - dims = [1 if n in dims_to_slice else i for n, i in enumerate(shape)] - for index_tuple in np.ndindex(*dims): - src_ind = tuple( - slice(None, None) if n in dims_to_slice else i - for n, i in enumerate(index_tuple)) - dst_ind = tuple(i for n, i in enumerate(index_tuple) - if n not in dims_to_slice) + dst_slices - yield src_ind, dst_ind - - -def get_slice_coords(cube): - """Return ordered set of unique coordinates.""" - slice_coords = [] - slice_set = set() - for i in range(cube.ndim): - coords = cube.coords(contains_dimension=i) - for coord in coords: - if coord not in slice_set: - slice_coords.append(coord) - slice_set.add(coord) - return slice_coords - - -def map_slices(src, func, src_rep, dst_rep): - """ - Map slices of a cube, replacing them with different slices. - - This method is similar to the standard cube collapsed and aggregated_by - methods, however, where they completely remove the mapped dimensions, this - method allows for their replacement with other dimensions. - The new dimensions are specified with a destination representant and will - be the last dimensions of the resulting cube, even if the removed - dimensions are can be any of the source cubes dimensions. - - Parameters - ---------- - src: :class:`iris.cube.Cube` - Source cube to be mapped. - func: callable - Callable that takes a single cube and returns a single numpy array. - src_rep: :class:`iris.cube.Cube` - Source representant that specifies the dimensions to be removed from - the source cube. - dst_rep: :class:`iris.cube.Cube` - Destination representant that specifies the shape of the new - dimensions. - - Returns - ------- - :class:`iris.cube.Cube`: - New cube that has the shape of the source cube with the removed - dimensions replaced with the destination dimensions. - All coordinates that span any of the removed dimensions are removed; - :class:`iris.coords.DimCoord` for the new dimensions are taken from - `dst_rep`. - """ - ref_to_slice = get_slice_coords(src_rep) - src_slice_dims = ref_to_dims_index(src, ref_to_slice) - src_keep_dims = list(set(range(src.ndim)) - set(src_slice_dims)) - src_keep_spec = get_slice_spec(src, src_keep_dims) - res_shape = src_keep_spec[0] + dst_rep.shape - dim_coords = src_keep_spec[1] + dst_rep.coords(dim_coords=True) - dim_coords_and_dims = [(c, i) for i, c in enumerate(dim_coords)] - dst = iris.cube.Cube( - data=get_empty_data(res_shape, dtype=src.dtype), - standard_name=src.standard_name, - long_name=src.long_name, - var_name=src.var_name, - units=src.units, - attributes=src.attributes, - cell_methods=src.cell_methods, - dim_coords_and_dims=dim_coords_and_dims, - ) - for src_ind, dst_ind in index_iterator(src_slice_dims, src.shape): - res = func(src[src_ind]) - dst.data[dst_ind] = res - return dst diff --git a/esmvaltool/preprocessor/_mask.py b/esmvaltool/preprocessor/_mask.py deleted file mode 100644 index 72adcef6fc..0000000000 --- a/esmvaltool/preprocessor/_mask.py +++ /dev/null @@ -1,480 +0,0 @@ -""" -_mask.py - -module that performs missing values masking -and geographical area eslection -""" - -import logging -import os - -import cartopy.io.shapereader as shpreader -import iris -import numpy as np -import shapely.vectorized as shp_vect -from iris.analysis import Aggregator -from iris.util import rolling_window - -logger = logging.getLogger(__name__) - - -def _check_dims(cube, mask_cube): - """Check for same dims for mask and data""" - x_dim = cube.coord('longitude').points.ndim - y_dim = cube.coord('latitude').points.ndim - mx_dim = mask_cube.coord('longitude').points.ndim - my_dim = mask_cube.coord('latitude').points.ndim - len_x = len(cube.coord('longitude').points) - len_y = len(cube.coord('latitude').points) - len_mx = len(mask_cube.coord('longitude').points) - len_my = len(mask_cube.coord('latitude').points) - if (x_dim == mx_dim and y_dim == my_dim and len_x == len_mx - and len_y == len_my): - logger.debug('Data cube and fx mask have same dims') - return True - - logger.debug( - 'Data cube and fx mask differ in dims: ' - 'cube: ((%i, %i), grid=(%i, %i)), mask: ((%i, %i), grid=(%i, %i))', - x_dim, y_dim, len_x, len_y, mx_dim, my_dim, len_mx, len_my) - return False - - -def _get_fx_mask(fx_data, fx_option, mask_type): - """Build a 50 percent land or sea mask""" - inmask = np.zeros_like(fx_data, bool) - if mask_type == 'sftlf': - if fx_option == 'land': - # Mask land out - inmask[fx_data > 50.] = True - elif fx_option == 'sea': - # Mask sea out - inmask[fx_data <= 50.] = True - elif mask_type == 'sftof': - if fx_option == 'land': - # Mask land out - inmask[fx_data < 50.] = True - elif fx_option == 'sea': - # Mask sea out - inmask[fx_data >= 50.] = True - elif mask_type == 'sftgif': - if fx_option == 'ice': - # Mask ice out - inmask[fx_data > 50.] = True - elif fx_option == 'landsea': - # Mask landsea out - inmask[fx_data <= 50.] = True - - return inmask - - -def _apply_fx_mask(fx_mask, var_data): - """Apply the fx mask""" - # Broadcast mask - var_mask = np.zeros_like(var_data, bool) - var_mask = np.broadcast_to(fx_mask, var_mask.shape).copy() - - # Aplly mask accross - if np.ma.is_masked(var_data): - var_mask |= var_data.mask - - # Build the new masked data - var_data = np.ma.array(var_data, mask=var_mask, fill_value=1e+20) - - return var_data - - -def mask_landsea(cube, fx_files, mask_out): - """ - Mask out either land or sea - - Function that masks out either land mass or seas (oceans, seas and lakes) - - It uses dedicated fx files (sftlf or sftof) or, in their absence, it - applies a Natural Earth mask (land or ocean contours). Not that the - Natural Earth masks have different resolutions: 10m for land, and 50m - for seas; these are more than enough for ESMValTool puprpose. - - Parameters - ---------- - - * cube (iris.Cube.cube instance): - data cube to be masked. - - * fx_files (list): - list holding the full paths to fx files. - - * mask_out (string): - either "land" to mask out land mass or "sea" to mask out seas. - - Returns - ------- - masked iris cube - - """ - # Dict to store the Natural Earth masks - cwd = os.path.dirname(__file__) - # ne_10m_land is fast; ne_10m_ocean is very slow - shapefiles = { - 'land': os.path.join(cwd, 'ne_masks/ne_10m_land.shp'), - 'sea': os.path.join(cwd, 'ne_masks/ne_50m_ocean.shp') - } - - if fx_files: - fx_cubes = {} - for fx_file in fx_files: - fx_root = os.path.basename(fx_file).split('_')[0] - fx_cubes[fx_root] = iris.load_cube(fx_file) - - # preserve importance order: try stflf first then sftof - if ('sftlf' in fx_cubes.keys() - and _check_dims(cube, fx_cubes['sftlf'])): - landsea_mask = _get_fx_mask(fx_cubes['sftlf'].data, mask_out, - 'sftlf') - cube.data = _apply_fx_mask(landsea_mask, cube.data) - logger.debug("Applying land-sea mask: sftlf") - elif ('sftof' in fx_cubes.keys() - and _check_dims(cube, fx_cubes['sftof'])): - landsea_mask = _get_fx_mask(fx_cubes['sftof'].data, mask_out, - 'sftof') - cube.data = _apply_fx_mask(landsea_mask, cube.data) - logger.debug("Applying land-sea mask: sftof") - else: - if cube.coord('longitude').points.ndim < 2: - cube = _mask_with_shp(cube, shapefiles[mask_out]) - logger.debug( - "Applying land-sea mask from Natural Earth" - " shapefile: \n%s", shapefiles[mask_out]) - else: - logger.error("Use of shapefiles with irregular grids not " - "yet implemented, land-sea mask not applied") - else: - if cube.coord('longitude').points.ndim < 2: - cube = _mask_with_shp(cube, shapefiles[mask_out]) - logger.debug( - "Applying land-sea mask from Natural Earth" - " shapefile: \n%s", shapefiles[mask_out]) - else: - logger.error("Use of shapefiles with irregular grids not " - "yet implemented, land-sea mask not applied") - - return cube - - -def mask_landseaice(cube, fx_files, mask_out): - """ - Mask out either landsea (combined) or ice - - Function that masks out either landsea (land and seas) or ice (Antarctica - and Greenland and some wee glaciers). It uses dedicated fx files (sftgif). - - Parameters - ---------- - - * cube (iris.Cube.cube instance): - data cube to be masked. - - * fx_files (list): - list holding the full paths to fx files. - - * mask_out (string): - either "landsea" to mask out landsea or "ice" to mask out ice. - - Returns - ------- - masked iris cube - - """ - # sftgif is the only one so far - if fx_files: - for fx_file in fx_files: - fx_cube = iris.load_cube(fx_file) - - if _check_dims(cube, fx_cube): - landice_mask = _get_fx_mask(fx_cube.data, mask_out, 'sftgif') - cube.data = _apply_fx_mask(landice_mask, cube.data) - logger.debug("Applying landsea-ice mask: sftgif") - else: - logger.warning("Landsea-ice mask could not be found ") - - return cube - - -def _get_geometry_from_shp(shapefilename): - """Get the mask geometry out from a shapefile""" - reader = shpreader.Reader(shapefilename) - # Index 0 grabs the lowest resolution mask (no zoom) - main_geom = [contour for contour in reader.geometries()][0] - return main_geom - - -def _mask_with_shp(cube, shapefilename): - """Apply a Natural Earth land/sea mask""" - # Create the region - region = _get_geometry_from_shp(shapefilename) - - # Create a mask for the data - mask = np.zeros(cube.shape, dtype=bool) - - # Create a set of x,y points from the cube - # 1D regular grids - if cube.coord('longitude').points.ndim < 2: - x_p, y_p = np.meshgrid( - cube.coord(axis='X').points, - cube.coord(axis='Y').points) - # 2D irregular grids; spit an error for now - else: - logger.error('No fx-files found (sftlf or sftof)!\n \ - 2D grids are suboptimally masked with\n \ - Natural Earth masks. Exiting.') - - # Wrap around longitude coordinate to match data - x_p_180 = np.where(x_p >= 180., x_p - 360., x_p) - # the NE mask has no points at x = -180 and y = +/-90 - # so we will fool it and apply the mask at (-179, -89, 89) instead - x_p_180 = np.where(x_p_180 == -180., x_p_180 + 1., x_p_180) - y_p_0 = np.where(y_p == -90., y_p + 1., y_p) - y_p_90 = np.where(y_p_0 == 90., y_p_0 - 1., y_p_0) - - # Build mask with vectorization - if len(cube.data.shape) == 3: - mask[:] = shp_vect.contains(region, x_p_180, y_p_90) - elif len(cube.data.shape) == 4: - mask[:, :] = shp_vect.contains(region, x_p_180, y_p_90) - - # Then apply the mask - if isinstance(cube.data, np.ma.MaskedArray): - cube.data.mask |= mask - else: - cube.data = np.ma.masked_array(cube.data, mask) - - return cube - - -# Define a function to perform the custom statistical operation. -# Note: in order to meet the requirements of iris.analysis.Aggregator, it must -# do the calculation over an arbitrary (given) data axis. -def count_spells(data, threshold, axis, spell_length): - """ - Count data occurences - - Function to calculate the number of points in a sequence where the value - has exceeded a threshold value for at least a certain number of timepoints. - - Generalised to operate on multiple time sequences arranged on a specific - axis of a multidimensional array. - - Args: - - * data (array): - raw data to be compared with value threshold. - - * threshold (float): - threshold point for 'significant' datapoints. - - * axis (int): - number of the array dimension mapping the time sequences. - (Can also be negative, e.g. '-1' means last dimension) - - * spell_length (int): - number of consecutive times at which value > threshold to "count". - - """ - if axis < 0: - # just cope with negative axis numbers - axis += data.ndim - # Threshold the data to find the 'significant' points. - data_hits = data > threshold - # Make an array with data values "windowed" along the time axis. - ############################################################### - # WARNING: default step is = window size i.e. no overlapping - # if you want overlapping windows set the step to be m*spell_length - # where m is a float - ############################################################### - hit_windows = rolling_window( - data_hits, window=spell_length, step=spell_length, axis=axis) - # Find the windows "full of True-s" (along the added 'window axis'). - full_windows = np.all(hit_windows, axis=axis + 1) - # Count points fulfilling the condition (along the time axis). - spell_point_counts = np.sum(full_windows, axis=axis, dtype=int) - return spell_point_counts - - -def window_counts(mycube, value_threshold, window_size, pctile): - """ - Find data counts in a time window - - Function that returns a flat array containing - the number of data points within a time window `window_size' - per grid point that satify a condition - value > value_threshold. - It also returns statistical measures for the flat array - window_counts[0] = array - window_counts[1] = mean(array) - window_counts[2] = std(array) - window_counts[3] = percentile(array, pctile) - """ - # Make an aggregator from the user function. - spell_count = Aggregator( - 'spell_count', count_spells, units_func=lambda units: 1) - - # Calculate the statistic. - counts_windowed_cube = mycube.collapsed( - 'time', - spell_count, - threshold=value_threshold, - spell_length=window_size) - - # if one wants to print the whole array - # np.set_printoptions(threshold=np.nan) - r_p = counts_windowed_cube.data.flatten() - meanr = np.mean(r_p) - stdr = np.std(r_p) - prcr = np.percentile(r_p, pctile) - return r_p, meanr, stdr, prcr - - -def mask_cube_counts(mycube, value_threshold, counts_threshold, window_size): - """Build the counts mask""" - # Make an aggregator from the user function. - spell_count = Aggregator( - 'spell_count', count_spells, units_func=lambda units: 1) - - # Calculate the statistic. - counts_windowed_cube = mycube.collapsed( - 'time', - spell_count, - threshold=value_threshold, - spell_length=window_size) - - mask = counts_windowed_cube.data >= counts_threshold - mask.astype(np.int) - # preserving the original cube metadata - dummyar = np.ones(mycube.data.shape, dtype=mycube.data.dtype) - newmask = dummyar * mask - newmask[newmask == 0] = 1e+20 # np.nan - masked_cube = mycube.copy() - # masked_cube.data = masked_cube.data * newmask - masked_cube.data = newmask - return counts_windowed_cube, newmask, masked_cube - - -def mask_above_threshold(cube, threshold): - """ - Mask above a specific threshold value. - - Takes a value 'threshold' and masks off anything that is above - it in the cube data. Values equal to the threshold are not masked. - """ - cube.data = np.ma.masked_where(cube.data > threshold, cube.data) - return cube - - -def mask_below_threshold(cube, threshold): - """ - Mask below a specific threshold value. - - Takes a value 'threshold' and masks off anything that is below - it in the cube data. Values equal to the threshold are not masked. - """ - cube.data = np.ma.masked_where(cube.data < threshold, cube.data) - return cube - - -def mask_inside_range(cube, minimum, maximum): - """ - Mask inside a specific threshold range. - - Takes a MINIMUM and a MAXIMUM value for the range, and masks off anything - that's between the two in the cube data. - """ - cube.data = np.ma.masked_inside(cube.data, minimum, maximum) - return cube - - -def mask_outside_range(cube, minimum, maximum): - """ - Mask outside a specific threshold range. - - Takes a MINIMUM and a MAXIMUM value for the range, and masks off anything - that's outside the two in the cube data. - """ - cube.data = np.ma.masked_outside(cube.data, minimum, maximum) - return cube - - -def mask_fillvalues(products, - threshold_fraction, - min_value=-1.e10, - time_window=1): - """Compute and apply a multi-dataset fillvalues mask""" - combined_mask = None - - logger.debug("Creating fillvalues mask") - used = set() - for product in products: - for cube in product.cubes: - cube.data = np.ma.fix_invalid(cube.data, copy=False) - mask = _get_fillvalues_mask(cube, threshold_fraction, min_value, - time_window) - if combined_mask is None: - combined_mask = np.zeros_like(mask) - # Select only valid (not all masked) pressure levels - n_dims = len(mask.shape) - if n_dims == 2: - valid = ~np.all(mask) - if valid: - combined_mask |= mask - used.add(product) - elif n_dims == 3: - valid = ~np.all(mask, axis=(1, 2)) - combined_mask[valid] |= mask[valid] - if np.any(valid): - used.add(product) - else: - raise NotImplementedError( - "Unable to handle {} dimensional data".format(n_dims)) - - if np.any(combined_mask): - logger.debug("Applying fillvalues mask") - used = {p.copy_provenance() for p in used} - for product in products: - for cube in product.cubes: - cube.data.mask |= combined_mask - for other in used: - if other.filename != product.filename: - product.wasderivedfrom(other) - - return products - - -def _get_fillvalues_mask(cube, threshold_fraction, min_value, time_window): - - # basic checks - if threshold_fraction < 0 or threshold_fraction > 1.0: - raise ValueError( - "Fraction of missing values {} should be between 0 and 1.0".format( - threshold_fraction)) - nr_time_points = len(cube.coord('time').points) - if time_window > nr_time_points: - logger.warning("Time window (in time units) larger " - "than total time span") - - max_counts_per_time_window = nr_time_points / time_window - # round to lower integer - counts_threshold = int(max_counts_per_time_window * threshold_fraction) - - # Make an aggregator - spell_count = Aggregator( - 'spell_count', count_spells, units_func=lambda units: 1) - - # Calculate the statistic. - counts_windowed_cube = cube.collapsed( - 'time', spell_count, threshold=min_value, spell_length=time_window) - - # Create mask - mask = counts_windowed_cube.data < counts_threshold - if np.ma.isMaskedArray(mask): - mask = mask.data | mask.mask - - return mask diff --git a/esmvaltool/preprocessor/_multimodel.py b/esmvaltool/preprocessor/_multimodel.py deleted file mode 100644 index b644b1810e..0000000000 --- a/esmvaltool/preprocessor/_multimodel.py +++ /dev/null @@ -1,347 +0,0 @@ -"""multimodel statistics. - -Functions for multi-model operations -supports a multitude of multimodel statistics -computations; the only requisite is the ingested -cubes have (TIME-LAT-LON) or (TIME-PLEV-LAT-LON) -dimensions; and obviously consistent units. - -It operates on different (time) spans: -- full: computes stats on full dataset time; -- overlap: computes common time overlap between datasets; - -""" - -import logging -from datetime import datetime -from functools import reduce - -import cf_units -import iris -import numpy as np - -from .._config import use_legacy_iris - -logger = logging.getLogger(__name__) - - -def _get_time_offset(time_unit): - """Return a datetime object equivalent to tunit.""" - # tunit e.g. 'day since 1950-01-01 00:00:00.0000000 UTC' - cfunit = cf_units.Unit(time_unit, calendar=cf_units.CALENDAR_STANDARD) - time_offset = cfunit.num2date(0) - return time_offset - - -def _plev_fix(dataset, pl_idx): - """Extract valid plev data. - - this function takes care of situations - in which certain plevs are completely - masked due to unavailable interpolation - boundaries. - """ - if np.ma.is_masked(dataset): - # keep only the valid plevs - if not np.all(dataset.mask[pl_idx]): - statj = np.ma.array(dataset[pl_idx], mask=dataset.mask[pl_idx]) - else: - logger.debug('All vals in plev are masked, ignoring.') - statj = None - else: - mask = np.zeros_like(dataset[pl_idx], bool) - statj = np.ma.array(dataset[pl_idx], mask=mask) - - return statj - - -def _compute_statistic(datas, statistic_name): - """Compute multimodel statistic.""" - datas = np.ma.array(datas) - statistic = datas[0] - - if statistic_name == 'median': - statistic_function = np.ma.median - elif statistic_name == 'mean': - statistic_function = np.ma.mean - else: - raise NotImplementedError - - # no plevs - if len(datas[0].shape) < 3: - # get all NOT fully masked data - u_data - # datas is per time point - # so we can safely NOT compute stats for single points - if datas.ndim == 1: - u_datas = [data for data in datas] - else: - u_datas = [data for data in datas if not np.all(data.mask)] - if len(u_datas) > 1: - statistic = statistic_function(datas, axis=0) - else: - statistic.mask = True - return statistic - - # plevs - for j in range(statistic.shape[0]): - plev_check = [] - for cdata in datas: - fixed_data = _plev_fix(cdata, j) - if fixed_data is not None: - plev_check.append(fixed_data) - - # check for nr datasets - if len(plev_check) > 1: - plev_check = np.ma.array(plev_check) - statistic[j] = statistic_function(plev_check, axis=0) - else: - statistic.mask[j] = True - - return statistic - - -def _put_in_cube(template_cube, cube_data, statistic, t_axis): - """Quick cube building and saving.""" - if t_axis is None: - times = template_cube.coord('time') - else: - times = iris.coords.DimCoord( - t_axis, - standard_name='time', - units=template_cube.coord('time').units) - lats = template_cube.coord('latitude') - lons = template_cube.coord('longitude') - - # no plevs - if len(template_cube.shape) == 3: - cspec = [(times, 0), (lats, 1), (lons, 2)] - # plevs - elif len(template_cube.shape) == 4: - plev = template_cube.coord('air_pressure') - cspec = [(times, 0), (plev, 1), (lats, 2), (lons, 3)] - elif len(template_cube.shape) == 1: - cspec = [ - (times, 0), - ] - elif len(template_cube.shape) == 2: - # If you're going to hardwire air_pressure into this, - # might as well have depth here too. - plev = template_cube.coord('depth') - cspec = [ - (times, 0), - (plev, 1), - ] - - # correct dspec if necessary - fixed_dspec = np.ma.fix_invalid(cube_data, copy=False, fill_value=1e+20) - # put in cube - stats_cube = iris.cube.Cube( - fixed_dspec, dim_coords_and_dims=cspec, long_name=statistic) - coord_names = [coord.name() for coord in template_cube.coords()] - if 'air_pressure' in coord_names: - if len(template_cube.shape) == 3: - stats_cube.add_aux_coord(template_cube.coord('air_pressure')) - - stats_cube.var_name = template_cube.var_name - stats_cube.long_name = template_cube.long_name - stats_cube.standard_name = template_cube.standard_name - stats_cube.units = template_cube.units - return stats_cube - - -def _datetime_to_int_days(cube): - """Return list of int(days) converted from cube datetime cells.""" - if use_legacy_iris(): - time_cells = [ - cube.coord('time').units.num2date(cell.point) - for cell in cube.coord('time').cells() - ] - else: - time_cells = [cell.point for cell in cube.coord('time').cells()] - - time_unit = cube.coord('time').units.name - time_offset = _get_time_offset(time_unit) - - # extract date info - real_dates = [] - for date_obj in time_cells: - # real_date resets the actual data point day - # to the 1st of the month so that there are no - # wrong overlap indeces - # NOTE: this workaround is good only - # for monthly data - real_date = datetime(date_obj.year, date_obj.month, 1, 0, 0, 0) - real_dates.append(real_date) - - days = [(date_obj - time_offset).days for date_obj in real_dates] - return days - - -def _get_overlap(cubes): - """ - Get discrete time overlaps. - - This method gets the bounds of coord time - from the cube and assembles a continuous time - axis with smallest unit 1; then it finds the - overlaps by doing a 1-dim intersect; - takes the floor of first date and - ceil of last date. - """ - all_times = [] - for cube in cubes: - span = _datetime_to_int_days(cube) - start, stop = span[0], span[-1] - all_times.append([start, stop]) - bounds = [range(b[0], b[-1] + 1) for b in all_times] - time_pts = reduce(np.intersect1d, bounds) - if len(time_pts) > 1: - time_bounds_list = [time_pts[0], time_pts[-1]] - return time_bounds_list - - -def _slice_cube(cube, t_1, t_2): - """ - Efficient slicer. - - Simple cube data slicer on indices - of common time-data elements. - """ - time_pts = [t for t in cube.coord('time').points] - converted_t = _datetime_to_int_days(cube) - idxs = sorted([ - time_pts.index(ii) for ii, jj in zip(time_pts, converted_t) - if t_1 <= jj <= t_2 - ]) - return [idxs[0], idxs[-1]] - - -def _monthly_t(cubes): - """Rearrange time points for monthly data.""" - # get original cubes tpoints - days = {day for cube in cubes for day in _datetime_to_int_days(cube)} - return sorted(days) - - -def _full_time_slice(cubes, ndat, indices, ndatarr, t_idx): - """Construct a contiguous collection over time.""" - for idx_cube, cube in enumerate(cubes): - # reset mask - ndat.mask = True - ndat[indices[idx_cube]] = cube.data - if np.ma.is_masked(cube.data): - ndat.mask[indices[idx_cube]] = cube.data.mask - else: - ndat.mask[indices[idx_cube]] = False - ndatarr[idx_cube] = ndat[t_idx] - - # return time slice - return ndatarr - - -def _assemble_overlap_data(cubes, interval, statistic): - """Get statistical data in iris cubes for OVERLAP.""" - start, stop = interval - sl_1, sl_2 = _slice_cube(cubes[0], start, stop) - stats_dats = np.ma.zeros(cubes[0].data[sl_1:sl_2 + 1].shape) - - # keep this outside the following loop - # this speeds up the code by a factor of 15 - indices = [_slice_cube(cube, start, stop) for cube in cubes] - - for i in range(stats_dats.shape[0]): - time_data = [ - cube.data[indx[0]:indx[1] + 1][i] - for cube, indx in zip(cubes, indices) - ] - stats_dats[i] = _compute_statistic(time_data, statistic) - stats_cube = _put_in_cube( - cubes[0][sl_1:sl_2 + 1], stats_dats, statistic, t_axis=None) - return stats_cube - - -def _assemble_full_data(cubes, statistic): - """Get statistical data in iris cubes for FULL.""" - # all times, new MONTHLY data time axis - time_axis = [float(fl) for fl in _monthly_t(cubes)] - - # new big time-slice array shape - new_shape = [len(time_axis)] + list(cubes[0].shape[1:]) - - # assemble an array to hold all time data - # for all cubes; shape is (ncubes,(plev), lat, lon) - new_arr = np.ma.empty([len(cubes)] + list(new_shape[1:])) - - # data array for stats computation - stats_dats = np.ma.zeros(new_shape) - - # assemble indices list to chop new_arr on - indices_list = [] - - # empty data array to hold time slices - empty_arr = np.ma.empty(new_shape) - - # loop through cubes and populate empty_arr with points - for cube in cubes: - time_redone = _datetime_to_int_days(cube) - oidx = [time_axis.index(s) for s in time_redone] - indices_list.append(oidx) - for i in range(new_shape[0]): - # hold time slices only - new_datas_array = _full_time_slice(cubes, empty_arr, indices_list, - new_arr, i) - # list to hold time slices - time_data = [] - for j in range(len(cubes)): - time_data.append(new_datas_array[j]) - stats_dats[i] = _compute_statistic(time_data, statistic) - stats_cube = _put_in_cube(cubes[0], stats_dats, statistic, time_axis) - return stats_cube - - -def multi_model_statistics(products, span, output_products, statistics): - """Compute multi-model mean and median.""" - logger.debug('Multimodel statistics: computing: %s', statistics) - if len(products) < 2: - logger.info("Single dataset in list: will not compute statistics.") - return products - - cubes = [cube for product in products for cube in product.cubes] - # check if we have any time overlap - interval = _get_overlap(cubes) - if interval is None: - logger.info("Time overlap between cubes is none or a single point." - "check datasets: will not compute statistics.") - return products - - if span == 'overlap': - logger.debug("Using common time overlap between " - "datasets to compute statistics.") - elif span == 'full': - logger.debug("Using full time spans to compute statistics.") - else: - raise ValueError( - "Unexpected value for span {}, choose from 'overlap', 'full'" - .format(span)) - - statistic_products = set() - for statistic in statistics: - # Compute statistic - if span == 'overlap': - statistic_cube = _assemble_overlap_data(cubes, interval, statistic) - elif span == 'full': - statistic_cube = _assemble_full_data(cubes, statistic) - statistic_cube.data = np.ma.array( - statistic_cube.data, dtype=np.dtype('float32')) - - # Add to output product and log provenance - statistic_product = output_products[statistic] - statistic_product.cubes = [statistic_cube] - for product in products: - statistic_product.wasderivedfrom(product) - logger.info("Generated %s", statistic_product) - statistic_products.add(statistic_product) - - products |= statistic_products - - return products diff --git a/esmvaltool/preprocessor/_reformat.py b/esmvaltool/preprocessor/_reformat.py deleted file mode 100644 index 0507b35c00..0000000000 --- a/esmvaltool/preprocessor/_reformat.py +++ /dev/null @@ -1,3 +0,0 @@ -"""Simple interface to reformat and CMORize functions.""" -from ..cmor.check import cmor_check, cmor_check_data, cmor_check_metadata -from ..cmor.fix import fix_data, fix_file, fix_metadata diff --git a/esmvaltool/preprocessor/_regrid.py b/esmvaltool/preprocessor/_regrid.py deleted file mode 100644 index 6a64775402..0000000000 --- a/esmvaltool/preprocessor/_regrid.py +++ /dev/null @@ -1,510 +0,0 @@ -"""Horizontal and vertical regridding module.""" - -import os -import re -from copy import deepcopy - -import iris -import numpy as np -import six -import stratify -from iris.analysis import AreaWeighted, Linear, Nearest, UnstructuredNearest - -from ._io import concatenate_callback, load -from ._regrid_esmpy import ESMF_REGRID_METHODS -from ._regrid_esmpy import regrid as esmpy_regrid -from ..cmor.fix import fix_file, fix_metadata -from ..cmor.table import CMOR_TABLES - -# Regular expression to parse a "MxN" cell-specification. -_CELL_SPEC = re.compile( - r'''\A - \s*(?P\d+(\.\d+)?)\s* - x - \s*(?P\d+(\.\d+)?)\s* - \Z - ''', re.IGNORECASE | re.VERBOSE) - -# Default fill-value. -_MDI = 1e+20 - -# Stock cube - global grid extents (degrees). -_LAT_MIN = -90.0 -_LAT_MAX = 90.0 -_LAT_RANGE = _LAT_MAX - _LAT_MIN -_LON_MIN = 0.0 -_LON_MAX = 360.0 -_LON_RANGE = _LON_MAX - _LON_MIN - -# A cached stock of standard horizontal target grids. -_CACHE = dict() - -# Supported horizontal regridding schemes. -HORIZONTAL_SCHEMES = { - 'linear': Linear(extrapolation_mode='mask'), - 'linear_extrapolate': Linear(extrapolation_mode='extrapolate'), - 'nearest': Nearest(extrapolation_mode='mask'), - 'area_weighted': AreaWeighted(), - 'unstructured_nearest': UnstructuredNearest(), -} - -# Supported vertical interpolation schemes. -VERTICAL_SCHEMES = ('linear', 'nearest', - 'linear_horizontal_extrapolate_vertical', - 'nearest_horizontal_extrapolate_vertical') - - -def parse_cell_spec(spec): - """Parse an MxN cell specification string.""" - cell_match = _CELL_SPEC.match(spec) - if cell_match is None: - emsg = 'Invalid MxN cell specification for grid, got {!r}.' - raise ValueError(emsg.format(spec)) - - cell_group = cell_match.groupdict() - dlon = float(cell_group['dlon']) - dlat = float(cell_group['dlat']) - - if (np.trunc(_LON_RANGE / dlon) * dlon) != _LON_RANGE: - emsg = ('Invalid longitude delta in MxN cell specification ' - 'for grid, got {!r}.') - raise ValueError(emsg.format(dlon)) - - if (np.trunc(_LAT_RANGE / dlat) * dlat) != _LAT_RANGE: - emsg = ('Invalid latitude delta in MxN cell specification ' - 'for grid, got {!r}.') - raise ValueError(emsg.format(dlat)) - - return dlon, dlat - - -def _stock_cube(spec, lat_offset=True, lon_offset=True): - """ - Create a stock cube. - - Create a global cube with M degree-east by N degree-north regular grid - cells. - - The longitude range is from 0 to 360 degrees. The latitude range is from - -90 to 90 degrees. Each cell grid point is calculated as the mid-point of - the associated MxN cell. - - Parameters - ---------- - spec : str - Specifies the 'MxN' degree cell-specification for the global grid. - lat_offset : bool - Offset the grid centers of the latitude coordinate w.r.t. the - pole by half a grid step. This argument is ignored if `target_grid` - is a cube or file. - lon_offset : bool - Offset the grid centers of the longitude coordinate w.r.t. Greenwich - meridian by half a grid step. - This argument is ignored if `target_grid` is a cube or file. - - Returns - ------- - A :class:`~iris.cube.Cube`. - - """ - dlon, dlat = parse_cell_spec(spec) - mid_dlon, mid_dlat = dlon / 2, dlat / 2 - - # Construct the latitude coordinate, with bounds. - if lat_offset: - latdata = np.linspace(_LAT_MIN + mid_dlat, _LAT_MAX - mid_dlat, - _LAT_RANGE / dlat) - else: - latdata = np.linspace(_LAT_MIN, _LAT_MAX, _LAT_RANGE / dlat + 1) - - # Construct the longitude coordinat, with bounds. - if lon_offset: - londata = np.linspace(_LON_MIN + mid_dlon, _LON_MAX - mid_dlon, - _LON_RANGE / dlon) - else: - londata = np.linspace(_LON_MIN, _LON_MAX - dlon, _LON_RANGE / dlon) - - lats = iris.coords.DimCoord( - latdata, - standard_name='latitude', - units='degrees_north', - var_name='lat') - lats.guess_bounds() - - lons = iris.coords.DimCoord( - londata, - standard_name='longitude', - units='degrees_east', - var_name='lon') - lons.guess_bounds() - - # Construct the resultant stock cube, with dummy data. - shape = (latdata.size, londata.size) - dummy = np.empty(shape, dtype=np.dtype('int8')) - coords_spec = [(lats, 0), (lons, 1)] - cube = iris.cube.Cube(dummy, dim_coords_and_dims=coords_spec) - - return cube - - -def _attempt_irregular_regridding(cube, scheme): - """Check if irregular regridding with ESMF should be used.""" - if scheme in ESMF_REGRID_METHODS: - try: - lat_dim = cube.coord('latitude').ndim - lon_dim = cube.coord('longitude').ndim - if lat_dim == lon_dim == 2: - return True - except iris.exceptions.CoordinateNotFoundError: - pass - return False - - -def regrid(cube, target_grid, scheme, lat_offset=True, lon_offset=True): - """ - Perform horizontal regridding. - - Parameters - ---------- - cube : cube - The source cube to be regridded. - target_grid : cube or str - The cube that specifies the target or reference grid for the regridding - operation. Alternatively, a string cell specification may be provided, - of the form 'MxN', which specifies the extent of the cell, longitude by - latitude (degrees) for a global, regular target grid. - scheme : str - The regridding scheme to perform, choose from - 'linear', - 'linear_extrapolate', - 'nearest', - 'area_weighted', - 'unstructured_nearest'. - lat_offset : bool - Offset the grid centers of the latitude coordinate w.r.t. the - pole by half a grid step. This argument is ignored if `target_grid` - is a cube or file. - lon_offset : bool - Offset the grid centers of the longitude coordinate w.r.t. Greenwich - meridian by half a grid step. - This argument is ignored if `target_grid` is a cube or file. - - Returns - ------- - cube - - See Also - -------- - extract_levels : Perform vertical regridding. - - """ - if HORIZONTAL_SCHEMES.get(scheme.lower()) is None: - emsg = 'Unknown regridding scheme, got {!r}.' - raise ValueError(emsg.format(scheme)) - - if isinstance(target_grid, six.string_types): - if os.path.isfile(target_grid): - target_grid = iris.load_cube(target_grid) - else: - # Generate a target grid from the provided cell-specification, - # and cache the resulting stock cube for later use. - target_grid = _CACHE.setdefault( - target_grid, - _stock_cube(target_grid, lat_offset, lon_offset), - ) - # Align the target grid coordinate system to the source - # coordinate system. - src_cs = cube.coord_system() - xcoord = target_grid.coord(axis='x', dim_coords=True) - ycoord = target_grid.coord(axis='y', dim_coords=True) - xcoord.coord_system = src_cs - ycoord.coord_system = src_cs - - if not isinstance(target_grid, iris.cube.Cube): - raise ValueError('Expecting a cube, got {}.'.format(target_grid)) - - # Unstructured regridding requires x2 2d spatial coordinates, - # so ensure to purge any 1d native spatial dimension coordinates - # for the regridder. - if scheme == 'unstructured_nearest': - for axis in ['x', 'y']: - coords = cube.coords(axis=axis, dim_coords=True) - if coords: - [coord] = coords - cube.remove_coord(coord) - - # Perform the horizontal regridding. - if _attempt_irregular_regridding(cube, scheme): - cube = esmpy_regrid(cube, target_grid, scheme) - else: - cube = cube.regrid(target_grid, HORIZONTAL_SCHEMES[scheme]) - - return cube - - -def _create_cube(src_cube, data, levels): - """ - Generate a new cube with the interpolated data. - - The resultant cube is seeded with `src_cube` metadata and coordinates, - excluding any source coordinates that span the associated vertical - dimension. The `levels` of interpolation are used along with the - associated source cube vertical coordinate metadata to add a new - vertical coordinate to the resultant cube. - - Parameters - ---------- - src_cube : cube - The source cube that was vertically interpolated. - data : array - The payload resulting from interpolating the source cube - over the specified levels. - levels : array - The vertical levels of interpolation. - - Returns - ------- - cube - - .. note:: - - If there is only one level of interpolation, the resultant cube - will be collapsed over the associated vertical dimension, and a - scalar vertical coordinate will be added. - - """ - # Get the source cube vertical coordinate and associated dimension. - src_levels = src_cube.coord(axis='z', dim_coords=True) - z_dim, = src_cube.coord_dims(src_levels) - - if data.shape[z_dim] != levels.size: - emsg = ('Mismatch between data and levels for data dimension {!r}, ' - 'got data shape {!r} with levels shape {!r}.') - raise ValueError(emsg.format(z_dim, data.shape, levels.shape)) - - # Construct the resultant cube with the interpolated data - # and the source cube metadata. - kwargs = deepcopy(src_cube.metadata)._asdict() - result = iris.cube.Cube(data, **kwargs) - - # Add the appropriate coordinates to the cube, excluding - # any coordinates that span the z-dimension of interpolation. - for coord in src_cube.dim_coords: - [dim] = src_cube.coord_dims(coord) - if dim != z_dim: - result.add_dim_coord(coord.copy(), dim) - - for coord in src_cube.aux_coords: - dims = src_cube.coord_dims(coord) - if z_dim not in dims: - result.add_aux_coord(coord.copy(), dims) - - for coord in src_cube.derived_coords: - dims = src_cube.coord_dims(coord) - if z_dim not in dims: - result.add_aux_coord(coord.copy(), dims) - - # Construct the new vertical coordinate for the interpolated - # z-dimension, using the associated source coordinate metadata. - kwargs = deepcopy(src_levels._as_defn())._asdict() - - try: - coord = iris.coords.DimCoord(levels, **kwargs) - result.add_dim_coord(coord, z_dim) - except ValueError: - coord = iris.coords.AuxCoord(levels, **kwargs) - result.add_aux_coord(coord, z_dim) - - # Collapse the z-dimension for the scalar case. - if levels.size == 1: - slicer = [slice(None)] * result.ndim - slicer[z_dim] = 0 - result = result[tuple(slicer)] - - return result - - -def _vertical_interpolate(cube, levels, interpolation, extrapolation): - """Perform vertical interpolation.""" - # Determine the source levels and axis for vertical interpolation. - src_levels = cube.coord(axis='z', dim_coords=True) - z_axis, = cube.coord_dims(src_levels) - - # Broadcast the 1d source cube vertical coordinate to fully - # describe the spatial extent that will be interpolated. - broadcast_shape = cube.shape[z_axis:] - reshape = [1] * len(broadcast_shape) - reshape[0] = cube.shape[z_axis] - src_levels_reshaped = src_levels.points.reshape(reshape) - src_levels_broadcast = np.broadcast_to(src_levels_reshaped, - broadcast_shape) - - # force mask onto data as nan's - if np.ma.is_masked(cube.data): - cube.data[cube.data.mask] = np.nan - - # Now perform the actual vertical interpolation. - new_data = stratify.interpolate( - levels, - src_levels_broadcast, - cube.data, - axis=z_axis, - interpolation=interpolation, - extrapolation=extrapolation) - - # Calculate the mask based on the any NaN values in the interpolated data. - mask = np.isnan(new_data) - - if np.any(mask): - # Ensure that the data is masked appropriately. - new_data = np.ma.array(new_data, mask=mask, fill_value=_MDI) - - # Construct the resulting cube with the interpolated data. - return _create_cube(cube, new_data, levels.astype(float)) - - -def extract_levels(cube, levels, scheme): - """ - Perform vertical interpolation. - - Parameters - ---------- - cube : cube - The source cube to be vertically interpolated. - levels : array - One or more target levels for the vertical interpolation. Assumed - to be in the same S.I. units of the source cube vertical dimension - coordinate. - scheme : str - The vertical interpolation scheme to use. Choose from - 'linear', - 'nearest', - 'nearest_horizontal_extrapolate_vertical', - 'linear_horizontal_extrapolate_vertical'. - - Returns - ------- - cube - - See Also - -------- - regrid : Perform horizontal regridding. - - """ - if scheme not in VERTICAL_SCHEMES: - emsg = 'Unknown vertical interpolation scheme, got {!r}. ' - emsg += 'Possible schemes: {!r}' - raise ValueError(emsg.format(scheme, VERTICAL_SCHEMES)) - - # This allows us to put level 0. to load the ocean surface. - extrap_scheme = 'nan' - if scheme == 'nearest_horizontal_extrapolate_vertical': - scheme = 'nearest' - extrap_scheme = 'nearest' - - if scheme == 'linear_horizontal_extrapolate_vertical': - scheme = 'linear' - extrap_scheme = 'nearest' - - # Ensure we have a non-scalar array of levels. - levels = np.array(levels, ndmin=1) - - # Get the source cube vertical coordinate, if available. - src_levels = cube.coord(axis='z', dim_coords=True) - - if (src_levels.shape == levels.shape - and np.allclose(src_levels.points, levels)): - # Only perform vertical extraction/interploation if the source - # and target levels are not "similar" enough. - result = cube - elif set(levels).issubset(set(src_levels.points)): - # If all target levels exist in the source cube, simply extract them. - name = src_levels.name() - coord_values = {name: lambda cell: cell.point in set(levels)} - constraint = iris.Constraint(coord_values=coord_values) - result = cube.extract(constraint) - # Ensure the constraint did not fail. - if not result: - emsg = 'Failed to extract levels {!r} from cube {!r}.' - raise ValueError(emsg.format(list(levels), name)) - else: - # As a last resort, perform vertical interpolation. - result = _vertical_interpolate(cube, levels, scheme, extrap_scheme) - - return result - - -def get_cmor_levels(cmor_table, coordinate): - """Get level definition from a CMOR coordinate. - - Parameters - ---------- - cmor_table: str - CMOR table name - coordinate: str - CMOR coordinate name - - Returns - ------- - list[int] - - Raises - ------ - ValueError: - If the CMOR table is not defined, the coordinate does not specify any - levels or the string is badly formatted. - - """ - if cmor_table not in CMOR_TABLES: - raise ValueError( - "Level definition cmor_table '{}' not available".format( - cmor_table)) - - if coordinate not in CMOR_TABLES[cmor_table].coords: - raise ValueError('Coordinate {} not available for {}'.format( - coordinate, cmor_table)) - - cmor = CMOR_TABLES[cmor_table].coords[coordinate] - - if cmor.requested: - return [float(level) for level in cmor.requested] - if cmor.value: - return [float(cmor.value)] - - raise ValueError( - 'Coordinate {} in {} does not have requested values'.format( - coordinate, cmor_table)) - - -def get_reference_levels(filename, - project, - dataset, - short_name, - fix_dir): - """Get level definition from a CMOR coordinate. - - Parameters - ---------- - filename: str - Path to the reference file - - Returns - ------- - list[float] - - Raises - ------ - ValueError: - If the dataset is not defined, the coordinate does not specify any - levels or the string is badly formatted. - - """ - filename = fix_file(filename, short_name, project, dataset, fix_dir) - cubes = load(filename, callback=concatenate_callback) - cubes = fix_metadata(cubes, short_name, project, dataset) - cube = cubes[0] - try: - coord = cube.coord(axis='Z') - except iris.exceptions.CoordinateNotFoundError: - raise ValueError('z-coord not available in {}'.format(filename)) - return coord.points.tolist() diff --git a/esmvaltool/preprocessor/_regrid_esmpy.py b/esmvaltool/preprocessor/_regrid_esmpy.py deleted file mode 100755 index 4ac6192451..0000000000 --- a/esmvaltool/preprocessor/_regrid_esmpy.py +++ /dev/null @@ -1,324 +0,0 @@ -# -*- coding: utf-8 -*- -"""Provides regridding for irregular grids.""" - -import ESMF -import iris -import numpy as np - -from ._mapping import get_empty_data, map_slices, ref_to_dims_index - - -ESMF_MANAGER = ESMF.Manager(debug=False) - -ESMF_LON, ESMF_LAT = 0, 1 - -ESMF_REGRID_METHODS = { - 'linear': ESMF.RegridMethod.BILINEAR, - 'area_weighted': ESMF.RegridMethod.CONSERVE, - 'nearest': ESMF.RegridMethod.NEAREST_STOD, -} - -MASK_REGRIDDING_MASK_VALUE = { - ESMF.RegridMethod.BILINEAR: np.array([1]), - ESMF.RegridMethod.CONSERVE: np.array([1]), - ESMF.RegridMethod.NEAREST_STOD: np.array([]), -} - -# ESMF_REGRID_METHODS = { -# 'bilinear': ESMF.RegridMethod.BILINEAR, -# 'patch': ESMF.RegridMethod.PATCH, -# 'conserve': ESMF.RegridMethod.CONSERVE, -# 'nearest_stod': ESMF.RegridMethod.NEAREST_STOD, -# 'nearest_dtos': ESMF.RegridMethod.NEAREST_DTOS, -# } - - -def cf_2d_bounds_to_esmpy_corners(bounds, circular): - """Convert cf style 2d bounds to normal (esmpy style) corners.""" - no_lat_points, no_lon_points = bounds.shape[:2] - no_lat_bounds = no_lat_points + 1 - if circular: - no_lon_bounds = no_lon_points - else: - no_lon_bounds = no_lon_points + 1 - esmpy_corners = np.empty((no_lon_bounds, no_lat_bounds)) - esmpy_corners[:no_lon_points, :no_lat_points] = bounds[:, :, 0].T - esmpy_corners[:no_lon_points, no_lat_points:] = bounds[-1:, :, 3].T - esmpy_corners[no_lon_points:, :no_lat_points] = bounds[:, -1:, 1].T - esmpy_corners[no_lon_points:, no_lat_points:] = bounds[-1:, -1:, 2].T - return esmpy_corners - - -def coords_iris_to_esmpy(lat, lon, circular): - """Build ESMF compatible coordinate information from iris coords.""" - dim = lat.ndim - if lon.ndim != dim: - msg = 'Different dimensions in latitude({}) and longitude({}) coords.' - raise ValueError(msg.format(lat.ndim, lon.ndim)) - if dim == 1: - for coord in [lat, lon]: - if not coord.has_bounds(): - coord.guess_bounds() - esmpy_lat, esmpy_lon = np.meshgrid(lat.points, lon.points) - lat_corners = np.concatenate([lat.bounds[:, 0], lat.bounds[-1:, 1]]) - if circular: - lon_corners = lon.bounds[:, 0] - else: - lon_corners = np.concatenate([lon.bounds[:, 0], - lon.bounds[-1:, 1]]) - esmpy_lat_corners, esmpy_lon_corners = np.meshgrid(lat_corners, - lon_corners) - elif dim == 2: - esmpy_lat, esmpy_lon = lat.points.T.copy(), lon.points.T.copy() - esmpy_lat_corners = cf_2d_bounds_to_esmpy_corners(lat.bounds, circular) - esmpy_lon_corners = cf_2d_bounds_to_esmpy_corners(lon.bounds, circular) - else: - raise NotImplementedError('Coord dimension is {}. Expected 1 or 2.' - ''.format(dim)) - return esmpy_lat, esmpy_lon, esmpy_lat_corners, esmpy_lon_corners - - -def get_grid(esmpy_lat, esmpy_lon, - esmpy_lat_corners, esmpy_lon_corners, circular): - """Build EMSF grid from given coordinate information.""" - if circular: - num_peri_dims = 1 - else: - num_peri_dims = 0 - grid = ESMF.Grid(np.array(esmpy_lat.shape), - num_peri_dims=num_peri_dims, - staggerloc=[ESMF.StaggerLoc.CENTER]) - grid.get_coords(ESMF_LON)[...] = esmpy_lon - grid.get_coords(ESMF_LAT)[...] = esmpy_lat - grid.add_coords([ESMF.StaggerLoc.CORNER]) - grid_lon_corners = grid.get_coords(ESMF_LON, - staggerloc=ESMF.StaggerLoc.CORNER) - grid_lat_corners = grid.get_coords(ESMF_LAT, - staggerloc=ESMF.StaggerLoc.CORNER) - grid_lon_corners[...] = esmpy_lon_corners - grid_lat_corners[...] = esmpy_lat_corners - grid.add_item(ESMF.GridItem.MASK, ESMF.StaggerLoc.CENTER) - return grid - - -def is_lon_circular(lon): - """Determine if longitudes are circular.""" - if isinstance(lon, iris.coords.DimCoord): - circular = lon.circular - elif isinstance(lon, iris.coords.AuxCoord): - if lon.ndim == 1: - seam = lon.bounds[-1, 1] - lon.bounds[0, 0] - elif lon.ndim == 2: - seam = (lon.bounds[1:-1, -1, (1, 2)] - - lon.bounds[1:-1, 0, (0, 3)]) - else: - raise NotImplementedError('AuxCoord longitude is higher ' - 'dimensional than 2d. Giving up.') - circular = np.alltrue(abs(seam) % 360. < 1.e-3) - else: - raise ValueError('longitude is neither DimCoord nor AuxCoord. ' - 'Giving up.') - return circular - - -def cube_to_empty_field(cube): - """Build an empty ESMF field from a cube.""" - lat = cube.coord('latitude') - lon = cube.coord('longitude') - circular = is_lon_circular(lon) - esmpy_coords = coords_iris_to_esmpy(lat, lon, circular) - grid = get_grid(*esmpy_coords, circular=circular) - field = ESMF.Field(grid, - name=cube.long_name, - staggerloc=ESMF.StaggerLoc.CENTER) - return field - - -def get_representant(cube, ref_to_slice): - """Get a representative slice from a cube.""" - slice_dims = ref_to_dims_index(cube, ref_to_slice) - rep_ind = [0] * cube.ndim - for dim in slice_dims: - rep_ind[dim] = slice(None, None) - rep_ind = tuple(rep_ind) - return cube[rep_ind] - - -def build_regridder_2d(src_rep, dst_rep, regrid_method, mask_threshold): - """Build regridder for 2d regridding.""" - dst_field = cube_to_empty_field(dst_rep) - src_field = cube_to_empty_field(src_rep) - regridding_arguments = { - 'srcfield': src_field, - 'dstfield': dst_field, - 'regrid_method': regrid_method, - 'unmapped_action': ESMF.UnmappedAction.IGNORE, - 'ignore_degenerate': True, - } - if np.ma.is_masked(src_rep.data): - src_field.data[...] = ~src_rep.data.mask.T - src_mask = src_field.grid.get_item(ESMF.GridItem.MASK, - ESMF.StaggerLoc.CENTER) - src_mask[...] = src_rep.data.mask.T - center_mask = dst_field.grid.get_item(ESMF.GridItem.MASK, - ESMF.StaggerLoc.CENTER) - center_mask[...] = 0 - mask_regridder = ESMF.Regrid( - src_mask_values=MASK_REGRIDDING_MASK_VALUE[regrid_method], - dst_mask_values=np.array([]), - **regridding_arguments) - regr_field = mask_regridder(src_field, dst_field) - dst_mask = regr_field.data[...].T < mask_threshold - center_mask[...] = dst_mask.T - else: - dst_mask = False - field_regridder = ESMF.Regrid(src_mask_values=np.array([1]), - dst_mask_values=np.array([1]), - **regridding_arguments) - - def regridder(src): - """Regrid 2d for irregular grids.""" - res = get_empty_data(dst_rep.shape, src.dtype) - data = src.data - if np.ma.is_masked(data): - data = data.data - src_field.data[...] = data.T - regr_field = field_regridder(src_field, dst_field) - res.data[...] = regr_field.data[...].T - res.mask[...] = dst_mask - return res - - return regridder - - -def build_regridder_3d(src_rep, dst_rep, regrid_method, mask_threshold): - # pylint: disable=too-many-locals - # The necessary refactoring will be done for the full 3d regridding. - """Build regridder for 2.5d regridding.""" - esmf_regridders = [] - no_levels = src_rep.shape[0] - for level in range(no_levels): - esmf_regridders.append( - build_regridder_2d(src_rep[level], dst_rep[level], - regrid_method, mask_threshold) - ) - - def regridder(src): - """Regrid 2.5d for irregular grids.""" - res = get_empty_data(dst_rep.shape, src.dtype) - for i, esmf_regridder in enumerate(esmf_regridders): - res[i, ...] = esmf_regridder(src[i]) - return res - - return regridder - - -def build_regridder(src_rep, dst_rep, method, mask_threshold=.99): - """Build regridders from representants.""" - regrid_method = ESMF_REGRID_METHODS[method] - if src_rep.ndim == 2: - regridder = build_regridder_2d(src_rep, dst_rep, - regrid_method, mask_threshold) - elif src_rep.ndim == 3: - regridder = build_regridder_3d(src_rep, dst_rep, - regrid_method, mask_threshold) - return regridder - - -def get_grid_representant(cube, horizontal_only=False): - """Extract the spatial grid from a cube.""" - horizontal_slice = ['latitude', 'longitude'] - ref_to_slice = horizontal_slice - if not horizontal_only: - try: - cube_z_coord = cube.coord(axis='Z') - n_zdims = len(cube.coord_dims(cube_z_coord)) - if n_zdims == 0: - # scalar z coordinate, go on with 2d regridding - pass - elif n_zdims == 1: - ref_to_slice = [cube_z_coord] + horizontal_slice - else: - raise ValueError("Cube has multidimensional Z coordinate.") - except iris.exceptions.CoordinateNotFoundError: - # no z coordinate, go on with 2d regridding - pass - return get_representant(cube, ref_to_slice) - - -def get_grid_representants(src, dst): - """ - Construct cubes representing the source and destination grid. - - This method constructs two new cubes that representant the grids, - i.e. the spatial dimensions of the given cubes. - - Parameters - ---------- - src: :class:`iris.cube.Cube` - Cube to be regridded. Typically a time series of 2d or 3d slices. - dst: :class:`iris.cube.Cube` - Cube defining the destination grid. Usually just a 2d or 3d cube. - - Returns - ------- - tuple of :class:`iris.cube.Cube`: - A tuple containing two cubes, representing the source grid and the - destination grid, respectively. - """ - src_rep = get_grid_representant(src) - dst_horiz_rep = get_grid_representant(dst, horizontal_only=True) - if src_rep.ndim == 3: - dst_shape = (src_rep.shape[0],) - dim_coords = [src_rep.coord(dimensions=[0], dim_coords=True)] - else: - dst_shape = tuple() - dim_coords = [] - dst_shape += dst_horiz_rep.shape - dim_coords += dst_horiz_rep.coords(dim_coords=True) - dim_coords_and_dims = [(c, i) for i, c in enumerate(dim_coords)] - dst_rep = iris.cube.Cube( - data=get_empty_data(dst_shape, src.dtype), - standard_name=src.standard_name, - long_name=src.long_name, - var_name=src.var_name, - units=src.units, - attributes=src.attributes, - cell_methods=src.cell_methods, - dim_coords_and_dims=dim_coords_and_dims, - ) - return src_rep, dst_rep - - -def regrid(src, dst, method='linear'): - """ - Regrid src_cube to the grid defined by dst_cube. - - Regrid the data in src_cube onto the grid defined by dst_cube. - - Parameters - ---------- - src_cube: :class:`iris.cube.Cube` - Source data. Must have latitude and longitude coords. - These can be 1d or 2d and should have bounds. - dst_cube: :class:`iris.cube.Cube` - Defines the target grid. - regrid_method: - Selects the regridding method. - Can be 'linear', 'area_weighted', - or 'nearest'. See ESMPy_. - - Returns - ------- - :class:`iris.cube.Cube`: - The regridded cube. - - - .. _ESMPy: http://www.earthsystemmodeling.org/ - esmf_releases/non_public/ESMF_7_0_0/esmpy_doc/html/ - RegridMethod.html#ESMF.api.constants.RegridMethod - """ - src_rep, dst_rep = get_grid_representants(src, dst) - regridder = build_regridder(src_rep, dst_rep, method) - res = map_slices(src, regridder, src_rep, dst_rep) - return res diff --git a/esmvaltool/preprocessor/_time.py b/esmvaltool/preprocessor/_time.py deleted file mode 100644 index d706feebf5..0000000000 --- a/esmvaltool/preprocessor/_time.py +++ /dev/null @@ -1,297 +0,0 @@ -"""Time operations on cubes. - -Allows for selecting data subsets using certain time bounds; -constructing seasonal and area averages. -""" -import datetime -import logging - -import cf_units -import iris -import iris.coord_categorisation -import numpy as np - -logger = logging.getLogger(__name__) - - -def extract_time(cube, start_year, start_month, start_day, end_year, end_month, - end_day): - """Extract a time range from a cube. - - Parameters - ---------- - cube: iris.cube.Cube - input cube. - start_year: int - start year - start_month: int - start month - start_day: int - start day - end_year: int - end year - end_month: int - end month - end_day: int - end day - - Returns - ------- - iris.cube.Cube - Sliced cube. - - """ - time_units = cube.coord('time').units - if time_units.calendar == '360_day': - if start_day > 30: - start_day = 30 - if end_day > 30: - end_day = 30 - start_date = datetime.datetime( - int(start_year), int(start_month), int(start_day)) - end_date = datetime.datetime(int(end_year), int(end_month), int(end_day)) - - t_1 = time_units.date2num(start_date) - t_2 = time_units.date2num(end_date) - constraint = iris.Constraint( - time=lambda t: t_1 < time_units.date2num(t.point) < t_2) - - cube_slice = cube.extract(constraint) - if cube_slice is None: - start_cube = str(cube.coord('time').points[0]) - end_cube = str(cube.coord('time').points[-1]) - raise ValueError( - f"Time slice {start_date} to {end_date} is outside cube " - f"time bounds {start_cube} to {end_cube}.") - - # Issue when time dimension was removed when only one point as selected. - if cube_slice.ndim != cube.ndim: - time_1 = cube.coord('time') - time_2 = cube_slice.coord('time') - if time_1 == time_2: - logger.debug('No change needed to time.') - return cube - - return cube_slice - - -def extract_season(cube, season): - """ - Slice cube to get only the data belonging to a specific season. - - Parameters - ---------- - cube: iris.cube.Cube - Original data - season: str - Season to extract. Available: DJF, MAM, JJA, SON - """ - if not cube.coords('clim_season'): - iris.coord_categorisation.add_season(cube, 'time', name='clim_season') - if not cube.coords('season_year'): - iris.coord_categorisation.add_season_year( - cube, 'time', name='season_year') - return cube.extract(iris.Constraint(clim_season=season.lower())) - - -def extract_month(cube, month): - """ - Slice cube to get only the data belonging to a specific month. - - Parameters - ---------- - cube: iris.cube.Cube - Original data - month: int - Month to extract as a number from 1 to 12 - """ - if month not in range(1, 13): - raise ValueError('Please provide a month number between 1 and 12.') - return cube.extract(iris.Constraint(month_number=month)) - - -def get_time_weights(cube): - """ - Compute the weighting of the time axis. - - Parameters - ---------- - cube: iris.cube.Cube - input cube. - - Returns - ------- - numpy.array - Array of time weights for averaging. - """ - time = cube.coord('time') - time_thickness = time.bounds[..., 1] - time.bounds[..., 0] - - # The weights need to match the dimensionality of the cube. - slices = [None for i in cube.shape] - coord_dim = cube.coord_dims('time')[0] - slices[coord_dim] = slice(None) - time_thickness = np.abs(time_thickness[tuple(slices)]) - ones = np.ones_like(cube.data) - time_weights = time_thickness * ones - return time_weights - - -def time_average(cube): - """ - Compute time average. - - Get the time average over the entire cube. The average is weighted by the - bounds of the time coordinate. - - Parameters - ---------- - cube: iris.cube.Cube - input cube. - - Returns - ------- - iris.cube.Cube - time averaged cube. - """ - time_weights = get_time_weights(cube) - - return cube.collapsed('time', iris.analysis.MEAN, weights=time_weights) - - -# get the seasonal mean -def seasonal_mean(cube): - """ - Compute seasonal means with MEAN. - - Chunks time in 3-month periods and computes means over them; - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - Returns - ------- - iris.cube.Cube - Seasonal mean cube - """ - if not cube.coords('clim_season'): - iris.coord_categorisation.add_season(cube, 'time', name='clim_season') - if not cube.coords('season_year'): - iris.coord_categorisation.add_season_year( - cube, 'time', name='season_year') - cube = cube.aggregated_by(['clim_season', 'season_year'], - iris.analysis.MEAN) - - # CMOR Units are days so we are safe to operate on days - # Ranging on [90, 92] days makes this calendar-independent - def spans_three_months(time): - """Check for three months""" - return 90 <= (time.bound[1] - time.bound[0]).days <= 92 - - three_months_bound = iris.Constraint(time=spans_three_months) - return cube.extract(three_months_bound) - - -def regrid_time(cube, frequency): - """ - Align time axis for cubes so they can be subtracted. - - Operations on time units, calendars, time points and auxiliary - coordinates so that any cube from cubes can be subtracted from any - other cube from cubes. Currently this function supports only monthly - (frequency=mon) and daily (frequency=day) data time frequencies. - - Arguments - --------- - cube: iris.cube.Cube - frequency: str - data frequency: mon or day - - Returns - ------- - iris.cube.Cube instance - """ - # fix calendars - cube.coord('time').units = cf_units.Unit( - cube.coord('time').units.origin, - calendar='gregorian', - ) - - # standardize time points - time_c = [cell.point for cell in cube.coord('time').cells()] - if frequency == 'mon': - cube.coord('time').cells = [ - datetime.datetime(t.year, t.month, 15, 0, 0, 0) for t in time_c - ] - elif frequency == 'day': - cube.coord('time').cells = [ - datetime.datetime(t.year, t.month, t.day, 0, 0, 0) for t in time_c - ] - # TODO add correct handling of hourly data - # this is a bit more complicated since it can be 3h, 6h etc - cube.coord('time').points = [ - cube.coord('time').units.date2num(cl) - for cl in cube.coord('time').cells - ] - - # uniformize bounds - cube.coord('time').bounds = None - cube.coord('time').guess_bounds() - - # remove aux coords that will differ - reset_aux = ['day_of_month', 'day_of_year'] - for auxcoord in cube.aux_coords: - if auxcoord.long_name in reset_aux: - cube.remove_coord(auxcoord) - - # re-add the converted aux coords - iris.coord_categorisation.add_day_of_month( - cube, cube.coord('time'), name='day_of_month') - iris.coord_categorisation.add_day_of_year( - cube, cube.coord('time'), name='day_of_year') - - return cube - - -def annual_mean(cube, decadal=False): - """ - Compute annual or decadal means. - - Note that this function does not weight the annual or decadal mean if - uneven time periods are present. Ie, all data inside the year/decade - are treated equally. - - Parameters - ---------- - cube: iris.cube.Cube - input cube. - decadal: bool - Annual average (:obj:`True`) or decadal average (:obj:`False`) - Returns - ------- - iris.cube.Cube - Annual mean cube - """ - # time_weights = get_time_weights(cube) - - # TODO: Add weighting in time dimension. See iris issue 3290 - # https://github.com/SciTools/iris/issues/3290 - - if decadal: - if not cube.coords('decade'): - - def get_decade(coord, value): - """Callback function to get decades from cube.""" - date = coord.units.num2date(value) - return date.year - date.year % 10 - - iris.coord_categorisation.add_categorised_coord( - cube, 'decade', 'time', get_decade) - - return cube.aggregated_by('decade', iris.analysis.MEAN) - - if not cube.coords('year'): - iris.coord_categorisation.add_year(cube, 'time') - return cube.aggregated_by('year', iris.analysis.MEAN) diff --git a/esmvaltool/preprocessor/_volume.py b/esmvaltool/preprocessor/_volume.py deleted file mode 100644 index 366450e37d..0000000000 --- a/esmvaltool/preprocessor/_volume.py +++ /dev/null @@ -1,456 +0,0 @@ -""" -Volume and z coordinate operations on data cubes. - -Allows for selecting data subsets using certain volume bounds; -selecting depth or height regions; constructing volumetric averages; -""" -from copy import deepcopy - -import logging - -import iris -import numpy as np - -logger = logging.getLogger(__name__) - - -def extract_volume(cube, z_min, z_max): - """ - Subset a cube based on a range of values in the z-coordinate. - - Function that subsets a cube on a box (z_min, z_max) - This function is a restriction of masked_cube_lonlat(); - Note that this requires the requested z-coordinate range to be the - same sign as the iris cube. ie, if the cube has z-coordinate as - negative, then z_min and z_max need to be negative numbers. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - z_min: float - minimum depth to extract. - - z_max: float - maximum depth to extract. - - Returns - ------- - iris.cube.Cube - extracted cube. - """ - if z_min > z_max: - # minimum is below maximum, so switch them around - zmax = float(z_min) - zmin = float(z_max) - else: - zmax = float(z_max) - zmin = float(z_min) - - z_constraint = iris.Constraint( - coord_values={ - cube.coord(axis='Z'): lambda cell: zmin < cell.point < zmax}) - - return cube.extract(z_constraint) - - -def _create_cube_time(src_cube, data, times): - """ - Generate a new cube with the volume averaged data. - - The resultant cube is seeded with `src_cube` metadata and coordinates, - excluding any source coordinates that span the associated vertical - dimension. The `times` of interpolation are used along with the - associated source cube time coordinate metadata to add a new - time coordinate to the resultant cube. - - Based on the _create_cube method from _regrid.py. - - Parameters - ---------- - src_cube : cube - The source cube that was vertically interpolated. - data : array - The payload resulting from interpolating the source cube - over the specified times. - times : array - The array of times. - - Returns - ------- - cube - - .. note:: - - If there is only one level of interpolation, the resultant cube - will be collapsed over the associated vertical dimension, and a - scalar vertical coordinate will be added. - - """ - # Get the source cube vertical coordinate and associated dimension. - src_times = src_cube.coord('time') - t_dim, = src_cube.coord_dims(src_times) - - if data.shape[t_dim] != len(times): - emsg = ('Mismatch between data and times for data dimension {!r}, ' - 'got data shape {!r} with times shape {!r}.') - raise ValueError(emsg.format(t_dim, data.shape, times.shape)) - - # Construct the resultant cube with the interpolated data - # and the source cube metadata. - kwargs = deepcopy(src_cube.metadata)._asdict() - result = iris.cube.Cube(data, **kwargs) - - # Add the appropriate coordinates to the cube, excluding - # any coordinates that span the z-dimension of interpolation. - for coord in src_cube.dim_coords: - [dim] = src_cube.coord_dims(coord) - if dim != t_dim: - result.add_dim_coord(coord.copy(), dim) - - for coord in src_cube.aux_coords: - dims = src_cube.coord_dims(coord) - if t_dim not in dims: - result.add_aux_coord(coord.copy(), dims) - - for coord in src_cube.derived_coords: - dims = src_cube.coord_dims(coord) - if t_dim not in dims: - result.add_aux_coord(coord.copy(), dims) - - # Construct the new vertical coordinate for the interpolated - # z-dimension, using the associated source coordinate metadata. - kwargs = deepcopy(src_times._as_defn())._asdict() - - try: - coord = iris.coords.DimCoord(times, **kwargs) - result.add_dim_coord(coord, t_dim) - except ValueError: - coord = iris.coords.AuxCoord(times, **kwargs) - result.add_aux_coord(coord, t_dim) - - return result - - -def calculate_volume(cube): - """ - Calculate volume from a cube. - - This function is used when the volume netcdf fx_files can't be found. - """ - # #### - # Load depth field and figure out which dim is which. - depth = cube.coord(axis='z') - z_dim = cube.coord_dims(cube.coord(axis='z'))[0] - - # #### - # Load z direction thickness - thickness = depth.bounds[..., 1] - depth.bounds[..., 0] - - # #### - # Calculate grid volume: - area = iris.analysis.cartography.area_weights(cube) - if thickness.ndim == 1 and z_dim == 1: - grid_volume = area * thickness[None, :, None, None] - if thickness.ndim == 4 and z_dim == 1: - grid_volume = area * thickness[:, :] - - return grid_volume - - -def average_volume( - cube, - coord1, - coord2, - fx_files=None): - """ - Calculate the average volume. - - The volume average is weighted acoording to the cell volume. Cell volume - is calculated from iris's cartography tool multiplied by the cell - thickness. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - coord1: str - name of first coordinate - - coord2: str - name of second coordinate - - fx_files: dictionary - dictionary of field:filename for the fx_files - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - # TODO: Test sigma coordinates. - - # #### - # Load z coordinate field and figure out which dim is which. - t_dim = cube.coord_dims('time')[0] - - grid_volume_found = False - grid_volume = None - if fx_files: - for key, fx_file in fx_files.items(): - if fx_file is None: - continue - logger.info('Attempting to load %s from file: %s', key, fx_file) - fx_cube = iris.load_cube(fx_file) - - grid_volume = fx_cube.data - grid_volume_found = True - cube_shape = cube.data.shape - - if not grid_volume_found: - grid_volume = calculate_volume(cube) - - # Check whether the dimensions are right. - if cube.data.ndim == 4 and grid_volume.ndim == 3: - grid_volume = np.tile(grid_volume, - [cube_shape[0], 1, 1, 1]) - - if cube.data.shape != grid_volume.shape: - raise ValueError('Cube shape ({}) doesn`t match grid volume shape ' - '({})'.format(cube.data.shape, grid_volume.shape)) - - # ##### - # Calculate global volume weighted average - result = [] - # ##### - # iterate over time and z-coordinate dimensions. - for time_itr in range(cube.shape[t_dim]): - # #### - # create empty output arrays - column = [] - depth_volume = [] - - # #### - # iterate over time and z-coordinate dimensions. - for z_itr in range(cube.shape[1]): - # #### - # Calculate weighted mean for this time and layer - total = cube[time_itr, z_itr].collapsed( - [cube.coord(axis='z'), coord1, coord2], - iris.analysis.MEAN, - weights=grid_volume[time_itr, z_itr]).data - column.append(total) - - try: - layer_vol = np.ma.masked_where( - cube[time_itr, z_itr].data.mask, - grid_volume[time_itr, z_itr]).sum() - - except AttributeError: - # #### - # No mask in the cube data. - layer_vol = grid_volume.sum() - depth_volume.append(layer_vol) - # #### - # Calculate weighted mean over the water volumn - result.append(np.average(column, weights=depth_volume)) - - # #### - # Send time series and dummy cube to cube creating tool. - times = np.array(cube.coord('time').points.astype(float)) - result = np.array(result) - - # ##### - # Create a small dummy output array for the output cube - src_cube = cube[:2, :2].collapsed([cube.coord(axis='z'), - coord1, coord2], - iris.analysis.MEAN, - weights=grid_volume[:2, :2], ) - - return _create_cube_time(src_cube, result, times) - - -def depth_integration(cube): - """ - Determine the total sum over the vertical component. - - Requires a 3D cube. The z-coordinate - integration is calculated by taking the sum in the z direction of the - cell contents multiplied by the cell thickness. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - # #### - depth = cube.coord(axis='z') - thickness = depth.bounds[..., 1] - depth.bounds[..., 0] - - if depth.ndim == 1: - slices = [None for i in cube.shape] - coord_dim = cube.coord_dims(cube.coord(axis='z'))[0] - slices[coord_dim] = slice(None) - thickness = np.abs(thickness[tuple(slices)]) - - ones = np.ones_like(cube.data) - - weights = thickness * ones - - result = cube.collapsed(cube.coord(axis='z'), iris.analysis.SUM, - weights=weights) - - result.rename('Depth_integrated_' + str(cube.name())) - # result.units = Unit('m') * result.units # This doesn't work: - # TODO: Change units on cube to reflect 2D concentration (not 3D) - # Waiting for news from iris community. - return result - - -def extract_transect(cube, latitude=None, longitude=None): - """ - Extract data along a line of constant latitude or longitude. - - Both arguments, latitude and longitude, are treated identically. - Either argument can be a single float, or a pair of floats, or can be - left empty. - The single float indicates the latitude or longitude along which the - transect should be extracted. - A pair of floats indicate the range that the transect should be - extracted along the secondairy axis. - - For instance `'extract_transect(cube, longitude=-28)'` will produce a - transect along 28 West. - - Also, `'extract_transect(cube, longitude=-28, latitude=[-50, 50])'` will - produce a transect along 28 West between 50 south and 50 North. - - This function is not yet implemented for irregular arrays - instead - try the extract_trajectory function, but note that it is currently - very slow. Alternatively, use the regrid preprocessor to regrid along - a regular grid and then extract the transect. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - latitude: None, float or [float, float], optional - transect latiude or range. - - longitude: None, float or [float, float], optional - transect longitude or range. - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - # ### - coord_dim2 = False - second_coord_range = False - lats = cube.coord('latitude') - lons = cube.coord('longitude') - - if lats.ndim == 2: - raise ValueError( - 'extract_slice: Not implemented for irregular arrays!' - + '\nTry regridding the data first.') - - if isinstance(latitude, float) and isinstance(longitude, float): - raise ValueError( - 'extract_slice: Cant slice along lat and lon at the same time' - ) - - if isinstance(latitude, list) and isinstance(longitude, list): - raise ValueError( - 'extract_slice: Can\'t reduce lat and lon at the same time' - ) - - for dim_name, dim_cut, coord in zip(['latitude', 'longitude'], - [latitude, longitude], [lats, lons]): - # #### - # Look for the first coordinate. - if isinstance(dim_cut, float): - coord_index = coord.nearest_neighbour_index(dim_cut) - coord_dim = cube.coord_dims(dim_name)[0] - - # #### - # Look for the second coordinate. - if isinstance(dim_cut, list): - coord_dim2 = cube.coord_dims(dim_name)[0] - second_coord_range = [coord.nearest_neighbour_index(dim_cut[0]), - coord.nearest_neighbour_index(dim_cut[1])] - # #### - # Extracting the line of constant longitude/latitude - slices = [slice(None) for i in cube.shape] - slices[coord_dim] = coord_index - - if second_coord_range: - slices[coord_dim2] = slice(second_coord_range[0], - second_coord_range[1]) - return cube[tuple(slices)] - - -def extract_trajectory(cube, latitudes, longitudes, number_points=2): - """ - Extract data along a trajectory. - - latitudes and longitudes are the pairs of coordinates for two points. - number_points is the number of points between the two points. - - This version uses the expensive interpolate method, but it may be - necceasiry for irregular grids. - - If only two latitude and longitude coordinates are given, - extract_trajectory will produce a cube will extrapolate along a line - bewteen those two points, and will add `number_points` points between - the two corners. - - If more than two points are provided, then - extract_trajectory will produce a cube which has extrapolated the data - of the cube to those points, and `number_points` is not needed. - - Arguments - --------- - cube: iris.cube.Cube - input cube. - - latitudes: list of floats - list of latitude coordinates. - - longitudes: list of floats - list of longitude coordinates. - - number_points: int - number of points to extrapolate (optional). - - Returns - ------- - iris.cube.Cube - collapsed cube. - """ - from iris.analysis.trajectory import interpolate - - if len(latitudes) != len(longitudes): - raise ValueError( - 'Longitude & Latitude coordinates have different lengths' - ) - - if len(latitudes) == len(longitudes) == 2: - minlat, maxlat = np.min(latitudes), np.max(latitudes) - minlon, maxlon = np.min(longitudes), np.max(longitudes) - - longitudes = np.linspace(minlat, maxlat, num=number_points) - latitudes = np.linspace(minlon, maxlon, num=number_points) - - points = [('latitude', latitudes), ('longitude', longitudes)] - interpolated_cube = interpolate(cube, points) # Very slow! - return interpolated_cube diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.README.html b/esmvaltool/preprocessor/ne_masks/ne_10m_land.README.html deleted file mode 100644 index 30acb5f815..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_land.README.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - - -Land | Natural Earth - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
- - - « 1:10m Physical Vectors  - « Downloads  -
-

Land

-
-
-
land_thumb
-
Land polygons including major islands.

- - -

-
-
About

-

Derived from 10m coastline. Continental polygons broken into smaller, contiguous pieces to avoid having too many points in any one polygon, facilitating faster data processing in certain software applications.

-

(below) Yucatan peninsula, Cuba, and Hispaniola.

-

land_banner

-

Issues

-

Coastline accuracy is suspect for northern Russia and southern Chile.

-

Some rank 5 land should be reclassified as rank 6.

-

Version History

-
    -
  • - 4.0.0 -
  • -
  • - 3.0.1 -
  • -
  • - 3.0.0 -
  • -
  • - 2.0.0 -
  • -
  • - 1.3.0 -
  • -
  • - 1.1.0 -
  • -
  • - 1.0.0 -
  • -
- -

The master changelog is available on Github » -

- - -
- -
- - -
- - - - -
-
- - - - - - \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.VERSION.txt b/esmvaltool/preprocessor/ne_masks/ne_10m_land.VERSION.txt deleted file mode 100644 index 5dbaad6dd1..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_land.VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg b/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg deleted file mode 100644 index 3ad133c048..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg +++ /dev/null @@ -1 +0,0 @@ -UTF-8 \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.dbf b/esmvaltool/preprocessor/ne_masks/ne_10m_land.dbf deleted file mode 100644 index fca59dc8fc..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_land.dbf and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj b/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj deleted file mode 100644 index f45cbadf00..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.shp b/esmvaltool/preprocessor/ne_masks/ne_10m_land.shp deleted file mode 100644 index 44f9d4e5a6..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_land.shp and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx b/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx deleted file mode 100644 index fcc1badd3d..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html deleted file mode 100644 index 880d47d731..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - - -Ocean | Natural Earth - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
- - - « 1:10m Physical Vectors  - « Downloads  -
-

Ocean

-
-
-
water_thumb
-
Ocean polygon split into contiguous pieces.

- - -

-
-
About

-

Derives from 10m ocean coastlines. Ocean polygon is the same as Bathymetry 0 (sea level).

-

Looking for labeled oceans, seas, bays, and more? Try our marine labels, attributed 50m scale ocean polygons.

-

(below) Yucatan peninsula, Cuba, and Hispaniola.

-

water_banner

-

Issues

-

Caspian’s Garabogaz Aylagy and other “lagoons” might better belong in the lake theme than oceans.

-

Dependencies

-

This theme (and it’s inverse cousin, Land) are used to clip the raster imagery.

-

Version History

-
    -
  • - 4.0.0 -
  • -
  • - 3.0.0 -
  • -
  • - 2.0.0 -
  • -
  • - 1.3.0 -
  • -
  • - 1.1.0 -
  • -
  • - 1.0.0 -
  • -
- -

The master changelog is available on Github » -

- - -
- -
- - -
- - - - -
-
- - - - - - \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.VERSION.txt b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.VERSION.txt deleted file mode 100644 index 5dbaad6dd1..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg deleted file mode 100644 index 3ad133c048..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg +++ /dev/null @@ -1 +0,0 @@ -UTF-8 \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.dbf b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.dbf deleted file mode 100644 index 6437fc75c7..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.dbf and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj deleted file mode 100644 index f45cbadf00..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shp b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shp deleted file mode 100644 index 28b746bcd1..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shp and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx deleted file mode 100644 index 83663ce64a..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html deleted file mode 100644 index 9f9b1de533..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - -Ocean | Natural Earth - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-
- - - « 1:50m Physical Vectors  - « Downloads  -
-

Ocean

-
-
-
water_thumb
-
Ocean polygon split into contiguous pieces.

- -

-
-
About

-

Derives from 10m ocean coastlines. Ocean polygon is the same as Bathymetry 0 (sea level).

-

(below) Yucatan peninsula, Cuba, and Hispaniola.

-

water_banner

-

Issues

-

Caspian’s Garabogaz Aylagy and other “lagoons” might better belong in the lake theme than oceans.

-

Dependencies

-

This theme (and it’s inverse cousin, Land) are used to clip the raster imagery.

-

Version History

-
    -
  • - 4.0.0 -
  • -
  • - 2.0.0 -
  • -
  • - 1.3.0 -
  • -
  • - 1.1.0 -
  • -
  • - 1.0.0 -
  • -
- -

The master changelog is available on Github » -

- - -
- -
- - -
- - - - -
-
- - - - - - \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.VERSION.txt b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.VERSION.txt deleted file mode 100644 index 5dbaad6dd1..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg deleted file mode 100644 index 3ad133c048..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg +++ /dev/null @@ -1 +0,0 @@ -UTF-8 \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.dbf b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.dbf deleted file mode 100644 index 3c93d9d7f7..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.dbf and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj deleted file mode 100644 index a30c00a55d..0000000000 --- a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shp b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shp deleted file mode 100644 index 964c3dfa9d..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shp and /dev/null differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx deleted file mode 100644 index 32f350f8f5..0000000000 Binary files a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx and /dev/null differ diff --git a/esmvaltool/recipe_schema.yml b/esmvaltool/recipe_schema.yml deleted file mode 100644 index 192d8f6632..0000000000 --- a/esmvaltool/recipe_schema.yml +++ /dev/null @@ -1,56 +0,0 @@ -# Generic recipe Yamale schema definition. -# See https://github.com/23andMe/Yamale for help. - ---- -# Recipe schema -documentation: include('documentation') -datasets: list(include('dataset'), required=False) -preprocessors: map(map(), required=False) -diagnostics: map(include('diagnostic'), required=False) - ---- -# Recipe item definitions -documentation: - description: str() - authors: list(str(), min=1) - projects: list(str(), required=False) - references: list(str(), required=False) - -dataset: - dataset: str() - project: str(required=False) - start_year: int(required=False, min=0000, max=5000) - end_year: int(required=False, min=0000, max=5000) - ensemble: str(required=False) - exp: any(str(), list(str()), required=False) - mip: str(required=False) - realm: str(required=False) - shift: str(required=False) - tier: int(min=1, max=3, required=False) - type: str(required=False) - -variable: - project: str(required=False) - start_year: int(required=False, min=0000, max=4000) - end_year: int(required=False, min=0000, max=4000) - ensemble: str(required=False) - exp: any(str(), list(str()), required=False) - mip: str(required=False) - preprocessor: str(required=False) - reference_dataset: str(required=False) - alternative_dataset: str(required=False) - fx_files: list(required=False) - additional_datasets: list(include('dataset'), required=False) - -# TODO: add preprocessor item - -diagnostic: - scripts: any(null(), map(include('script'))) - additional_datasets: list(include('dataset'), required=False) - description: str(required=False) - themes: list(str(), required=False) - realms: list(str(), required=False) - variables: map(include('variable'), null(), required=False) - -script: - script: str() diff --git a/esmvaltool/recipes/recipe_capacity_factor.yml b/esmvaltool/recipes/recipe_capacity_factor.yml index dca3bffd24..17f9e8b2be 100644 --- a/esmvaltool/recipes/recipe_capacity_factor.yml +++ b/esmvaltool/recipes/recipe_capacity_factor.yml @@ -18,24 +18,19 @@ documentation: - c3s-magic datasets: - - {dataset: IPSL-CM5A-MR, type: exp, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start_year: 1980, end_year: 2005} - #- {dataset: MPI-ESM-MR, type: exp, project: CMIP5, mip: day, exp: rcp26, ensemble: r1i1p1, start_year: 2021, end_year: 2025} - #- {dataset: MPI-ESM-MR, type: exp, project: CMIP5, mip: day, exp: rcp45, ensemble: r1i1p1, start_year: 2031, end_year: 2035} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 1980, end_year: 2005} preprocessors: preproc: - regrid: - target_grid: IPSL-CM5A-MR - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 extract_region: - start_longitude: 200 - end_longitude: 300 - start_latitude: 27 - end_latitude: 70 + start_longitude: -20 + end_longitude: 60 + start_latitude: 30 + end_latitude: 80 extract_season: season: djf + mask_landsea: + mask_out: sea diagnostics: capacity_factor: diff --git a/esmvaltool/recipes/recipe_cox18nature.yml b/esmvaltool/recipes/recipe_cox18nature.yml index 8e557a3478..2c86533e1a 100644 --- a/esmvaltool/recipes/recipe_cox18nature.yml +++ b/esmvaltool/recipes/recipe_cox18nature.yml @@ -22,9 +22,8 @@ documentation: preprocessors: spatial_mean: - average_region: - coord1: latitude - coord2: longitude + area_statistics: + operator: mean diagnostics: diff --git a/esmvaltool/recipes/recipe_ecs.yml b/esmvaltool/recipes/recipe_ecs.yml index 5ab6f87287..102080ec63 100644 --- a/esmvaltool/recipes/recipe_ecs.yml +++ b/esmvaltool/recipes/recipe_ecs.yml @@ -18,9 +18,8 @@ documentation: preprocessors: spatial_mean: - average_region: - coord1: latitude - coord2: longitude + area_statistics: + operator: mean diagnostics: @@ -33,8 +32,9 @@ diagnostics: project: CMIP5 ensemble: r1i1p1 mip: Amon - rtmt: + rtnt: <<: *variable_settings + derive: true additional_datasets: - {dataset: bcc-csm1-1, exp: piControl, start_year: 160, end_year: 309} - {dataset: bcc-csm1-1, exp: abrupt4xCO2, start_year: 160, end_year: 309} @@ -56,8 +56,9 @@ diagnostics: - {dataset: GISS-E2-R, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} - {dataset: inmcm4, exp: piControl, start_year: 2090, end_year: 2239} - {dataset: inmcm4, exp: abrupt4xCO2, start_year: 2090, end_year: 2239} - - {dataset: IPSL-CM5A-LR, exp: piControl, start_year: 1850, end_year: 1999} - - {dataset: IPSL-CM5A-LR, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + # Data missing for rsut + # - {dataset: IPSL-CM5A-LR, exp: piControl, start_year: 1850, end_year: 1999} + # - {dataset: IPSL-CM5A-LR, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} - {dataset: IPSL-CM5B-LR, exp: piControl, start_year: 1850, end_year: 1999} - {dataset: IPSL-CM5B-LR, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} - {dataset: MIROC5, exp: piControl, start_year: 2100, end_year: 2249} @@ -79,9 +80,10 @@ diagnostics: tas: <<: *variable_settings project: CMIP6 - rtmt: + rtnt: <<: *variable_settings project: CMIP6 + derive: true additional_datasets: - {dataset: BCC-CSM2-MR, exp: piControl, ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 1999} - {dataset: BCC-CSM2-MR, exp: abrupt-4xCO2, ensemble: r1i1p1f1, grid: gn, start_year: 1850, end_year: 1999} diff --git a/esmvaltool/recipes/recipe_flato13ipcc.yml b/esmvaltool/recipes/recipe_flato13ipcc.yml index 865fa06485..b58406f0f7 100644 --- a/esmvaltool/recipes/recipe_flato13ipcc.yml +++ b/esmvaltool/recipes/recipe_flato13ipcc.yml @@ -38,9 +38,8 @@ preprocessors: exclude: [reference_dataset] spatial_mean: - average_region: - coord1: latitude - coord2: longitude + area_statistics: + operator: mean clim_ref: regrid: diff --git a/esmvaltool/recipes/recipe_ocean_bgc.yml b/esmvaltool/recipes/recipe_ocean_bgc.yml index 5d826fce2f..37611f5f31 100644 --- a/esmvaltool/recipes/recipe_ocean_bgc.yml +++ b/esmvaltool/recipes/recipe_ocean_bgc.yml @@ -56,9 +56,8 @@ preprocessors: # Global 3D Volume-weighted Average prep_timeseries_global_volume_average: custom_order: true - average_volume: - coord1: longitude - coord2: latitude + volume_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -66,9 +65,8 @@ preprocessors: # Global area-weighted Average from 2D field prep_global_Surface_average_timeseries_2D: custom_order: true - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -79,9 +77,8 @@ preprocessors: extract_levels: levels: [0., ] scheme: linear_horizontal_extrapolate_vertical - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -114,16 +111,14 @@ preprocessors: prep_global_profile: annual_mean: - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean prep_global_profile_decadal: annual_mean: decadal: true - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean prep_transect_AMT: # Atlantic Meridional Transect (28W) custom_order: true @@ -149,10 +144,8 @@ preprocessors: # prep_depth_integration_timeseries: # custom_order: true # depth_integration: -# average_region: -# coord1: longitude -# coord2: latitude - +# area_statistics: +# operator: mean # -------------------------------------------------- diff --git a/esmvaltool/recipes/recipe_ocean_example.yml b/esmvaltool/recipes/recipe_ocean_example.yml index 767f1ac448..a9ef892b65 100644 --- a/esmvaltool/recipes/recipe_ocean_example.yml +++ b/esmvaltool/recipes/recipe_ocean_example.yml @@ -53,9 +53,8 @@ preprocessors: # -------------------------------------------------- prep_timeseries_1: # For 2D fields custom_order: true - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -65,9 +64,8 @@ preprocessors: extract_levels: levels: [0., 10., 100., 1000.] scheme: linear_horizontal_extrapolate_vertical - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -79,9 +77,8 @@ preprocessors: end_longitude: 30. start_latitude: -80. end_latitude: 80. - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -96,18 +93,16 @@ preprocessors: end_longitude: 30. start_latitude: -80. end_latitude: 80. - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] prep_timeseries_5: # For Global Volume Averaged custom_order: true - average_volume: - coord1: longitude - coord2: latitude + volume_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -119,9 +114,8 @@ preprocessors: end_longitude: 30. start_latitude: -80. end_latitude: 80. - average_volume: - coord1: longitude - coord2: latitude + volume_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -136,9 +130,8 @@ preprocessors: extract_volume: z_min: 0. z_max: 100. - average_volume: - coord1: longitude - coord2: latitude + volume_statistics: + operator: mean multi_model_statistics: span: overlap statistics: [mean ] @@ -233,9 +226,8 @@ preprocessors: # Depth-profile preprocessors # -------------------------------------------------- prep_profile_1: # For a global profile - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean prep_profile_2: # For a regional profile extract_region: @@ -246,9 +238,9 @@ preprocessors: extract_volume: z_min: 0. z_max: 100. - average_region: - coord1: longitude - coord2: latitude + area_statistics: + operator: mean + # -------------------------------------------------- # Depth-profile preprocessors diff --git a/tests/integration/cmor/__init__.py b/esmvaltool/utils/color_tables/__init__.py similarity index 100% rename from tests/integration/cmor/__init__.py rename to esmvaltool/utils/color_tables/__init__.py diff --git a/esmvaltool/utils/color_tables/show_color_tables.py b/esmvaltool/utils/color_tables/show_color_tables.py new file mode 100644 index 0000000000..3416da3b73 --- /dev/null +++ b/esmvaltool/utils/color_tables/show_color_tables.py @@ -0,0 +1,202 @@ +"""Utility script for inspecting and converting ncl color tables.""" +import argparse +import glob +import logging +import os +import subprocess +import tempfile + +import matplotlib +matplotlib.use("Agg") # noqa +import matplotlib.pyplot as plt +import numpy as np +import yaml +from jinja2 import Template + +from esmvaltool.diag_scripts.shared.plot import __file__ as plot_path + +logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) +CONSOLE_HANDLER = logging.StreamHandler() +CONSOLE_HANDLER.setLevel(logging.INFO) +CONSOLE_HANDLER.setFormatter( + logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) +logger.addHandler(CONSOLE_HANDLER) + +PATH_TO_COLORTABLES = os.path.join(os.path.dirname(plot_path), "rgb") + +NCL_SCRIPT = """ +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" + +begin + print("Autogenerated NCL script is running.") + wks = gsn_open_wks("pdf","{{ outdir }}/available_colormaps_for_ncl") + {% for n in list_of_snippets %}{{n}} {% endfor %} +end +""" + +COLOR_SNIPPET = """ + cmap := read_colormap_file("{{ path }}") + opt = True + opt@Frame = False + draw_color_palette(wks, cmap, opt) + gsn_text_ndc(wks, "{{ name }}", 0.5, 0.9, True) + frame(wks) +""" + + +def load_ncl_color_map(name, colorpath): + """Load ncl color map to a list that is returned.""" + def _format(content): + out = [] + for item in content.split("\n"): + item = item.strip() + if item and not ('ncolors' in item or item.startswith('#') + or item.startswith(';')): + out.append([int(elem) / 256 + for elem in item.split()[0:3]] + [1]) + return out + + filename = "{0}/{1}.rgb".format(colorpath, name) + if not os.path.exists(filename): + raise ValueError("Path {0} does not exist.".format(filename)) + with open(filename, 'r') as ncl_color_map: + return _format(ncl_color_map.read()) + + +def get_color_map(name, colorpath): + """Convert colormap from ncl to python. + + Parameters + ---------- + name: str + Name of ncl color map + Returns + ------- + matplotlib.colors.ListedColorMap object + """ + colors = load_ncl_color_map(name, colorpath) + logger.debug("RGB values for '%s':\n%s", name, yaml.dump(colors)) + return matplotlib.colors.ListedColormap(colors, name=name, N=None) + + +def list_ncl_color_maps(colorpath): + """Get list of all available ncl color maps.""" + from os import walk + + def _format(name): + return os.path.splitext(os.path.basename(name))[0] + + out = [] + for (_, _, filenames) in walk(colorpath): + out.extend([ + _format(filename) for filename in filenames + if 'rgb' in filename.split('.') + ]) + return out + + +def plot_example_for_colormap(name, colorpath, outdir='./'): + """Create plots of given color map using python.""" + logger.info("Plotting example for '%s'", name) + fig = plt.figure(1) + axis = fig.add_axes([0.1, 0.3, 0.5, 0.5]) + np.random.seed(12345678) + data = np.random.randn(30, 30) + psm = axis.pcolormesh( + data, + cmap=get_color_map(name, colorpath), + rasterized=True, + vmin=-4, + vmax=4) + fig.colorbar(psm, ax=axis) + plt.savefig(os.path.join(outdir, "{0}.png".format(name))) + plt.close() + + +def main_plot_python_cm(colorpath, outpath): + """Execute functions for python plots.""" + for name in list_ncl_color_maps(colorpath): + plot_example_for_colormap(name, colorpath, outdir=outpath) + + +def main_plot_ncl_cm(colorpath, outpath): + """Execute functions for ncl plots.""" + t_color_snippet = Template(COLOR_SNIPPET) + template = Template(NCL_SCRIPT) + list_of_snippets = [] + for path in glob.glob(colorpath + "/*rgb"): + _, tail = os.path.split(path) + list_of_snippets.append(t_color_snippet.render(path=path, name=tail)) + with tempfile.NamedTemporaryFile(mode='w', suffix='ncl') as fname: + fname.write( + template.render( + list_of_snippets=sorted(list_of_snippets), outdir=outpath)) + subprocess.check_call(["ncl", fname.name]) + + +def get_args(): + """Define the commandline arguments.""" + parser = argparse.ArgumentParser(description=""" + Utility module for inspecting and converting + ncl color tables.""") + parser.add_argument( + '-c', + '--colorpath', + metavar='COLOR_TABLE_DIR', + default=PATH_TO_COLORTABLES, + help="Set directory to . Default is {0}".format( + PATH_TO_COLORTABLES)) + parser.add_argument( + '-n', + '--ncl', + dest='n', + action='store_true', + help=""" + Create report of all ncl color maps in + using ncl.""") + parser.add_argument( + '-p', + '--python', + dest='p', + action='store_true', + help="""Create example plots of all ncl color maps + in using python.""") + parser.add_argument( + '-o', + '--outpath', + metavar='OUTDIR', + default='./', + help="Set out directory to . Default is the current directory") + return parser.parse_args() + + +def main(args): + """Call functions according to command line arguments.""" + colorpath = args.colorpath + outpath = args.outpath + + if not os.path.isdir(colorpath): + logger.warning("Path '%s' is invalid", colorpath) + raise OSError + + if not os.path.isdir(outpath) and not os.path.exists(outpath): + logger.info("Creating directory '%s'", outpath) + os.mkdir(outpath) + + if args.n: + logger.info("Creating report with ncl") + main_plot_ncl_cm(colorpath, outpath) + if args.p: + logger.info("Creating report with python") + main_plot_python_cm(colorpath, outpath) + + +def run(): + """Run the program.""" + args = get_args() + main(args) + + +if __name__ == '__main__': + run() diff --git a/meta.yaml b/meta.yaml index d09c7a4900..a94414446b 100644 --- a/meta.yaml +++ b/meta.yaml @@ -2,10 +2,10 @@ --- # Build commmand: -# conda build . -c conda-forge -c birdhouse +# conda build . -c conda-forge -c esmvalgroup # Package version number -{% set version = "2.0a2" %} +{% set version = "2.0.0b0" %} package: name: esmvaltool @@ -21,7 +21,7 @@ source: build: # Increment the build number when building a new conda package of the same # esmvaltool version, reset to 0 when building a new version. - number: 1 + number: 0 script: | python setup.py install --single-version-externally-managed --record=/tmp/record.txt POST_LINK="${PREFIX}/bin/.esmvaltool-post-link.sh" @@ -36,33 +36,28 @@ requirements: - setuptools_scm run: # esmvaltool - - python>=3.6 + - python - libunwind # specifically for Python3.7+ - graphviz - iris>=2.2 - - python-stratify # Normally installed via pip: - cartopy - - cf_units + - cf-units - cython - eofs - esmpy + - esmvalcore>=2.0.0a1,<2.1 + - jinja2 - matplotlib<3 - nc-time-axis - netCDF4 - - numba - numpy - pandas - - pillow - - prov - - psutil - - pydot - python-cdo + - python-stratify - pyyaml - scikit-learn - shapely - - six - - vmprof - xarray>=0.12.0 - yamale # in birdhouse channel - fiona @@ -88,3 +83,5 @@ about: home: https://www.esmvaltool.org license: Apache License, Version 2.0 license_file: LICENSE + summary: "A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP." + description: "A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP." diff --git a/setup.py b/setup.py index 580e643452..ad8747f00e 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ from setuptools import Command, setup -from esmvaltool._version import __version__ +from esmvaltool import __version__ PACKAGES = [ 'esmvaltool', @@ -29,29 +29,24 @@ 'install': [ 'cartopy', 'cdo', - 'cf_units', + 'cf-units', 'cython', + 'jinja2', 'eofs', + 'esmvalcore>=2.0.0b0,<2.1', 'fiona', 'matplotlib<3', 'nc-time-axis', # needed by iris.plot 'netCDF4', - 'numba', 'numpy', 'pandas', - 'pillow', - 'prov[dot]', - 'psutil', 'pyyaml', 'scitools-iris>=2.2', 'scikit-learn', 'shapely', - 'six', 'stratify', - 'vmprof', - 'xarray', + 'xarray>=0.12', 'xlsxwriter', - 'yamale', ], # Test dependencies # Execute 'python setup.py test' to run tests @@ -77,6 +72,7 @@ 'pylint', 'sphinx', 'sphinx_rtd_theme', + 'vmprof', 'yamllint', 'yapf', ], @@ -132,12 +128,10 @@ def run(self): import pytest - version = sys.version_info[0] - report_dir = 'test-reports/python{}'.format(version) + report_dir = 'test-reports' args = [ 'tests', 'esmvaltool', # for doctests - '--ignore=esmvaltool/cmor/tables/', '--doctest-modules', '--cov=esmvaltool', '--cov-report=term', @@ -203,44 +197,45 @@ def run(self): with open('README.md') as readme: - setup( - name='ESMValTool', - version=__version__, - description='Earth System Models eValuation Tool', - long_description=readme.read(), - url='https://www.esmvaltool.org', - download_url='https://github.com/ESMValGroup/ESMValTool', - license='Apache License, Version 2.0', - classifiers=[ - 'Environment :: Console', - 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', + README = readme.read() + +setup( + name='ESMValTool', + version=__version__, + description='Earth System Models eValuation Tool', + long_description=README, + url='https://www.esmvaltool.org', + download_url='https://github.com/ESMValGroup/ESMValTool', + license='Apache License, Version 2.0', + classifiers=[ + 'Environment :: Console', + 'License :: OSI Approved :: Apache Software License', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + ], + packages=PACKAGES, + # Include all version controlled files + include_package_data=True, + setup_requires=REQUIREMENTS['setup'], + install_requires=REQUIREMENTS['install'], + tests_require=REQUIREMENTS['test'], + extras_require={ + 'develop': REQUIREMENTS['develop'] + REQUIREMENTS['test'], + }, + entry_points={ + 'console_scripts': [ + 'cmorize_obs = esmvaltool.cmorizers.obs.cmorize_obs:main', + 'mip_convert_setup = ' + 'esmvaltool.cmorizers.mip_convert.esmvt_mipconv_setup:main', + 'nclcodestyle = esmvaltool.utils.nclcodestyle.nclcodestyle:_main', + 'showcolortables = ' + 'esmvaltool.utils.color_tables.show_color_tables:run', ], - packages=PACKAGES, - # Include all version controlled files - include_package_data=True, - setup_requires=REQUIREMENTS['setup'], - install_requires=REQUIREMENTS['install'], - tests_require=REQUIREMENTS['test'], - extras_require={ - 'develop': REQUIREMENTS['develop'] + REQUIREMENTS['test'] - }, - entry_points={ - 'console_scripts': [ - 'esmvaltool = esmvaltool._main:run', - 'cmorize_obs = esmvaltool.' - 'utils.cmorizers.obs.cmorize_obs:execute_cmorize', - 'nclcodestyle = esmvaltool.' - 'utils.nclcodestyle.nclcodestyle:_main', - 'mip_convert_setup = esmvaltool.' - 'utils.cmorizers.mip_convert.esmvt_mipconv_setup:main' - ], - }, - cmdclass={ - 'test': RunTests, - 'lint': RunLinter, - }, - zip_safe=False, - ) + }, + cmdclass={ + 'test': RunTests, + 'lint': RunLinter, + }, + zip_safe=False, +) diff --git a/tests/integration/cmor/_fixes/CMIP5/__init__.py b/tests/integration/cmor/_fixes/CMIP5/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/cmor/_fixes/CMIP5/test_BNU_ESM.py b/tests/integration/cmor/_fixes/CMIP5/test_BNU_ESM.py deleted file mode 100644 index 5adc081f73..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_BNU_ESM.py +++ /dev/null @@ -1,70 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.BNU_ESM import ch4, co2, fgco2, spco2 - - -class TestCo2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.units, Unit('1e-6')) - self.assertEqual(cube.data[0], 1.0) - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 29.0 / 44.0 * 1.e6) - self.assertEqual(cube.units, Unit('J')) - - -class Testfgco2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='fgco2', units='J') - self.fix = fgco2() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.units, Unit('kg m-2 s-1')) - self.assertEqual(cube.data[0], 1) - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 12.0 / 44.0) - self.assertEqual(cube.units, Unit('J')) - - -class TestCh4(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='ch4', units='J') - self.fix = ch4() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.units, Unit('1e-9')) - self.assertEqual(cube.data[0], 1) - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 29.0 / 16.0 * 1.e9) - self.assertEqual(cube.units, Unit('J')) - - -class Testspco2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='spco2', units='J') - self.fix = spco2() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.units, Unit('J')) - self.assertEqual(cube.data[0], 1) - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1.e6) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py b/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py deleted file mode 100644 index 5249277e4b..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py +++ /dev/null @@ -1,73 +0,0 @@ -import unittest - -import numpy as np -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.CCSM4 import rlut, rlutcs, so - - -class TestsRlut(unittest.TestCase): - """Test for rlut fixes""" - - def setUp(self): - """Prepare tests""" - self.cube = Cube([1.0, 2.0], var_name='rlut') - self.cube.add_dim_coord( - DimCoord([0.50001, 1.499999], - standard_name='latitude', - bounds=[ - [0.00001, 0.999999], - [1.00001, 1.999999], - ]), 0) - self.fix = rlut() - - def test_fix_metadata(self): - """Check that latitudes values are rounded""" - cube = self.fix.fix_metadata([self.cube])[0] - - latitude = cube.coord('latitude') - self.assertTrue(np.all(latitude.points == np.array([0.5000, 1.5000]))) - self.assertTrue( - np.all(latitude.bounds == np.array([[0.0000, 1.0000], - [1.0000, 2.0000]]))) - - -class TestsRlutcs(unittest.TestCase): - """Test for rlutcs fixes""" - - def setUp(self): - """Prepare tests""" - self.cube = Cube([1.0, 2.0], var_name='rlutcs') - self.cube.add_dim_coord( - DimCoord([0.50001, 1.499999], - standard_name='latitude', - bounds=[ - [0.00001, 0.999999], - [1.00001, 1.999999], - ]), 0) - self.fix = rlutcs() - - def test_fix_metadata(self): - """Check that latitudes values are rounded""" - cube = self.fix.fix_metadata([self.cube])[0] - - latitude = cube.coord('latitude') - self.assertTrue(np.all(latitude.points == np.array([0.5000, 1.5000]))) - self.assertTrue( - np.all(latitude.bounds == np.array([[0.0000, 1.0000], - [1.0000, 2.0000]]))) - - -class TestSo(unittest.TestCase): - """Tests for so fixes""" - - def setUp(self): - """Prepare tests""" - self.cube = Cube([1.0, 2.0], var_name='so', units='1.0') - self.fix = so() - - def test_fix_metadata(self): - """Checks that units are changed to the correct value""" - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual('1e3', cube.units.origin) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_CESM1_BGC.py b/tests/integration/cmor/_fixes/CMIP5/test_CESM1_BGC.py deleted file mode 100644 index 54521d987a..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_CESM1_BGC.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Tests for CESM1-BGC fixes.""" -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.CESM1_BGC import co2 - - -class TestCo2(unittest.TestCase): - """Tests for co2.""" - - def setUp(self): - """Prepare tests.""" - self.cube = Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_data(self): - """Test fix to set units correctly.""" - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 28.966 / 44.0) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_CNRM_CM5.py b/tests/integration/cmor/_fixes/CMIP5/test_CNRM_CM5.py deleted file mode 100644 index e829f48dac..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_CNRM_CM5.py +++ /dev/null @@ -1,28 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.CNRM_CM5 import msftmyz, msftmyzba - - -class TestMsftmyz(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='msftmyz', units='J') - self.fix = msftmyz() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1.0e6) - self.assertEqual(cube.units, Unit('J')) - - -class TestMsftmyzba(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='msftmyzba', units='J') - self.fix = msftmyzba() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1.0e6) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_CanESM2.py b/tests/integration/cmor/_fixes/CMIP5/test_CanESM2.py deleted file mode 100644 index dd5dff6850..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_CanESM2.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.CanESM2 import fgco2 - - -class TestCanESM2Fgco2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='fgco2', units='J') - self.fix = fgco2() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 12.0 / 44.0) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_EC_EARTH.py b/tests/integration/cmor/_fixes/CMIP5/test_EC_EARTH.py deleted file mode 100644 index 5ddeb0a380..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_EC_EARTH.py +++ /dev/null @@ -1,28 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.EC_EARTH import sftlf, sic - - -class TestSic(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sic', units='J') - self.fix = sic() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) - - -class TestSftlf(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sftlf', units='J') - self.fix = sftlf() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py b/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py deleted file mode 100644 index 9d4d51e00e..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py +++ /dev/null @@ -1,27 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.FGOALS_g2 import allvars - - -class TestAll(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0, 2.0], var_name='co2', units='J') - self.cube.add_dim_coord( - DimCoord( - [0.0, 1.0], - standard_name='time', - units=Unit('days since 0001-01', calendar='gregorian')), - 0) - self.fix = allvars() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - - time = cube.coord('time') - self.assertEqual(time.units.origin, - 'day since 1-01-01 00:00:00.000000') - self.assertEqual(time.units.calendar, 'gregorian') diff --git a/tests/integration/cmor/_fixes/CMIP5/test_FIO_ESM.py b/tests/integration/cmor/_fixes/CMIP5/test_FIO_ESM.py deleted file mode 100644 index a4ed917ce0..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_FIO_ESM.py +++ /dev/null @@ -1,28 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.FIO_ESM import ch4, co2 - - -class TestCh4(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='ch4', units='J') - self.fix = ch4() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 29. / 16. * 1.e9) - self.assertEqual(cube.units, Unit('J')) - - -class TestCo2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 29. / 44. * 1.e6) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM2p1.py b/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM2p1.py deleted file mode 100644 index 498752fd08..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM2p1.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.GFDL_CM2p1 import sftof - - -class TestSftof(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sftof', units='J') - self.fix = sftof() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM3.py b/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM3.py deleted file mode 100644 index c8d42b08d8..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_CM3.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.GFDL_CM3 import sftof - - -class TestSftof(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sftof', units='J') - self.fix = sftof() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2G.py b/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2G.py deleted file mode 100644 index f0d5011815..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2G.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Tests for fixes of GFDL-ESM2G (CMIP5).""" -import unittest - -import iris -import mock -import pytest -from cf_units import Unit - -from esmvaltool.cmor._fixes.CMIP5.GFDL_ESM2G import (_get_and_remove, allvars, - co2, fgco2) - -CUBE_1 = iris.cube.Cube([1.0], long_name='to_be_rm') -CUBE_2 = iris.cube.Cube([1.0], long_name='not_to_be_rm') -CUBES_LISTS = [ - (iris.cube.CubeList([CUBE_1]), iris.cube.CubeList([])), - (iris.cube.CubeList([CUBE_1, CUBE_2]), iris.cube.CubeList([CUBE_2])), - (iris.cube.CubeList([CUBE_2]), iris.cube.CubeList([CUBE_2])), -] - - -@pytest.mark.parametrize('cubes_in,cubes_out', CUBES_LISTS) -def test_get_and_remove(cubes_in, cubes_out): - _get_and_remove(cubes_in, 'to_be_rm') - assert cubes_in is not cubes_out - assert cubes_in == cubes_out - - -CUBES = iris.cube.CubeList([CUBE_1, CUBE_2]) - - -@mock.patch( - 'esmvaltool.cmor._fixes.CMIP5.GFDL_ESM2G._get_and_remove', autospec=True) -def test_allvars(mock_get_and_remove): - fix = allvars() - fix.fix_metadata(CUBES) - assert mock_get_and_remove.call_count == 3 - assert mock_get_and_remove.call_args_list == [ - mock.call(CUBES, 'Start time for average period'), - mock.call(CUBES, 'End time for average period'), - mock.call(CUBES, 'Length of average period'), - ] - - -@mock.patch( - 'esmvaltool.cmor._fixes.CMIP5.GFDL_ESM2G._get_and_remove', autospec=True) -def test_fgco2(mock_get_and_remove): - fix = fgco2() - fix.fix_metadata(CUBES) - assert mock_get_and_remove.call_count == 2 - assert mock_get_and_remove.call_args_list == [ - mock.call(CUBES, 'Latitude of tracer (h) points'), - mock.call(CUBES, 'Longitude of tracer (h) points'), - ] - - -class TestCo2(unittest.TestCase): - def setUp(self): - self.cube = iris.cube.Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1e6) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2M.py b/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2M.py deleted file mode 100644 index 5e4c924f9c..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_GFDL_ESM2M.py +++ /dev/null @@ -1,29 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.GFDL_ESM2M import co2, sftof - - -class TestSftof(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sftof', units='J') - self.fix = sftof() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) - - -class TestCo2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1e6) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_MIROC5.py b/tests/integration/cmor/_fixes/CMIP5/test_MIROC5.py deleted file mode 100644 index bf95a03c55..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_MIROC5.py +++ /dev/null @@ -1,47 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.MIROC5 import sftof - - -class TestGpp(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='sftof', units='J') - self.fix = sftof() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) - - # dayspermonth = (/31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31/) - # - # if ((name.eq."snc".or.name.eq."snw").and.FIELD.eq."T2Ds".and. \ - # ENSEMBLE.eq."r1i1p1") then - # opt = 0 - # opt@calendar = var&time@calendar - # ; get start date from time attribute "days_since_xxxx" - # t = 0.0 - # t@calendar = var&time@calendar - # t@units = var&time@units - # res = cd_calendar(t, -5) - # yy = res(0, 0) - # mm = res(0, 1) - # dd = res(0, 2) - # do ii = 0, dimsizes(var&time) - 1 - # var&time(ii) = tofloat(cd_inv_calendar(yy, mm, dd, 12, 0, 0, \ - # var&time@units, opt)) - # dd = dd + 1 - # if (dd.gt.dayspermonth(mm-1)) then - # mm = mm + 1 - # dd = 1 - # end if - # if (mm.gt.12) then - # mm = 1 - # yy = yy + 1 - # end if - # end do - # ret = 0 - # end if diff --git a/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM.py b/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM.py deleted file mode 100644 index 75d42e68b9..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM.py +++ /dev/null @@ -1,87 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.coords import DimCoord -from iris.cube import Cube -from iris.exceptions import CoordinateNotFoundError - -from esmvaltool.cmor._fixes.CMIP5.MIROC_ESM import allvars, co2, gpp, tro3 - - -class TestCo2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='co2', units='J') - self.fix = co2() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.data[0], 1) - self.assertEqual(cube.units, Unit('1e-6')) - - -class TestTro3(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='tro3', units='J') - self.fix = tro3() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1000) - self.assertEqual(cube.units, Unit('J')) - - -class TestGpp(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='gpp', units='J') - self.fix = gpp() - - def test_fix_metadata(self): - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.data[0], 1) - self.assertEqual(cube.units, Unit('g m-2 day-1')) - - -class TestAll(unittest.TestCase): - def setUp(self): - self.cube = Cube([[1.0, 2.0], [3.0, 4.0]], var_name='co2', units='J') - self.cube.add_dim_coord( - DimCoord( - [0, 1], - standard_name='time', - units=Unit( - 'days since 0000-01-01 00:00:00', calendar='gregorian')), - 0) - self.cube.add_dim_coord(DimCoord([0, 1], long_name='AR5PL35'), 1) - - self.fix = allvars() - - def test_fix_metadata_plev(self): - time = self.cube.coord('time') - time.units = Unit("days since 1-1-1", time.units.calendar) - cube = self.fix.fix_metadata([self.cube])[0] - cube.coord('air_pressure') - - def test_fix_metadata_no_plev(self): - self.cube.remove_coord('AR5PL35') - cube = self.fix.fix_metadata([self.cube])[0] - with self.assertRaises(CoordinateNotFoundError): - cube.coord('air_pressure') - - -# if (iscoord(var, "time")) then -# if (isatt(var&time,"units"))then -# if (var&time@units.eq."days since 0000-01-01 00:00:00") then -# var&time@units ="days since 1849-01-01 00:00:00" -# ret = 0 -# end if -# if (var&time@units.eq."days since 1-1-1")then -# var&time@units ="days since 1850-01-01 00:00:00" -# ret = 0 -# end if -# end if -# end if -# -# if (iscoord(var, "AR5PL35")) then -# var!1 = "plev" -# ret = 0 -# end if diff --git a/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM_CHEM.py b/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM_CHEM.py deleted file mode 100644 index 62149925da..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_MIROC_ESM_CHEM.py +++ /dev/null @@ -1,39 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.MIROC_ESM_CHEM import tro3 - - -class TestTro3(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='tro3', units='J') - self.fix = tro3() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1000) - self.assertEqual(cube.units, Unit('J')) - - -# if (name .eq. "tro3") then -# ; files say unit of ozone is "1e-9" ut unit is actually "1e-6" -# var = var * 1.0e3 -# if (iscoord(var, "time")) then -# do it = 1, dimsizes(var&time) - 1 -# if (var&time(it).eq.0) then -# tt = tointeger(cd_calendar(var&time(it-1), 0)) -# tt(0, 1) = tt(0, 1) + 1 ; month -# if (tt(0, 1).gt.12) then -# tt(0, 1) = 1 -# tt(0, 0) = tt(0, 0) + 1 ; year -# end if -# var&time(it) = cd_inv_calendar(\ -# tt(0, 0), tt(0, 1), tt(0, 2), tt(0, 3), \ -# tt(0, 4), tt(0, 5), var&time@units, 0) -# end if -# end do -# ret = 0 -# end if -# end if diff --git a/tests/integration/cmor/_fixes/CMIP5/test_MPI_ESM_LR.py b/tests/integration/cmor/_fixes/CMIP5/test_MPI_ESM_LR.py deleted file mode 100644 index 1809ebb9ac..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_MPI_ESM_LR.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.MPI_ESM_LR import pctisccp - - -class TestPctisccp2(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='pctisccp', units='J') - self.fix = pctisccp() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 100) - self.assertEqual(cube.units, Unit('J')) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_NorESM1_ME.py b/tests/integration/cmor/_fixes/CMIP5/test_NorESM1_ME.py deleted file mode 100644 index ae1c056eb1..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_NorESM1_ME.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Tests for fixes of NorESM1-ME (CMIP5).""" -import pytest -import iris -from iris.cube import CubeList - -from esmvaltool.cmor._fixes.CMIP5.NorESM1_ME import tas - -DIM_COORD_SHORT = iris.coords.DimCoord( - [1.0, 2.0, 3.0], - bounds=[[0.5, 1.5], [1.5, 2.5], [2.5, 3.5]], - var_name='dim_coord', -) -DIM_COORD_LONG = iris.coords.DimCoord( - [1.1234567891011, 2.1234567891011, 3.1234567891011], - bounds=[ - [0.51234567891011, 1.51234567891011], - [1.51234567891011, 2.51234567891011], - [2.51234567891011, 3.51234567891011], - ], - var_name='dim_coord', -) -DIM_COORD_ROUNDED = iris.coords.DimCoord( - [1.123456789101, 2.123456789101, 3.123456789101], - bounds=[ - [0.512345678910, 1.512345678910], - [1.512345678910, 2.512345678910], - [2.512345678910, 3.512345678910], - ], - var_name='dim_coord', -) -AUX_COORD = iris.coords.AuxCoord( - [1.1284712947128749498712, 2.12421841274128947982, 3.12787129852141124214], - var_name='aux_coord', -) - -CUBE_IN_SHORT = iris.cube.Cube( - [3.14, 6.28, 9.42], - dim_coords_and_dims=[(DIM_COORD_SHORT, 0)], - aux_coords_and_dims=[(AUX_COORD, 0)], -) -CUBE_IN_LONG = iris.cube.Cube( - [3.14, 6.28, 9.42], - dim_coords_and_dims=[(DIM_COORD_LONG, 0)], - aux_coords_and_dims=[(AUX_COORD, 0)], -) -CUBE_OUT_LONG = iris.cube.Cube( - [3.14, 6.28, 9.42], - dim_coords_and_dims=[(DIM_COORD_ROUNDED, 0)], - aux_coords_and_dims=[(AUX_COORD, 0)], -) - -CUBES_TO_FIX = [ - (CubeList([CUBE_IN_SHORT]), CubeList([CUBE_IN_SHORT])), - (CubeList([CUBE_IN_LONG]), CubeList([CUBE_OUT_LONG])), - (CubeList([CUBE_IN_LONG, CUBE_IN_SHORT]), - CubeList([CUBE_OUT_LONG, CUBE_IN_SHORT])), -] - - -@pytest.mark.parametrize('cubes_in,cubes_out', CUBES_TO_FIX) -def test_tas(cubes_in, cubes_out): - fix = tas() - new_cubes = fix.fix_metadata(cubes_in) - assert new_cubes is cubes_in - assert new_cubes == cubes_out diff --git a/tests/integration/cmor/_fixes/CMIP5/test_inmcm4.py b/tests/integration/cmor/_fixes/CMIP5/test_inmcm4.py deleted file mode 100644 index bdd9712568..0000000000 --- a/tests/integration/cmor/_fixes/CMIP5/test_inmcm4.py +++ /dev/null @@ -1,61 +0,0 @@ -"""Tests for inmcm4 fixes.""" -import os -import shutil -import tempfile -import unittest - -import iris -from cf_units import Unit -from iris.cube import Cube - -from esmvaltool.cmor._fixes.CMIP5.inmcm4 import gpp, lai, nbp - - -class TestGpp(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='gpp', units='J') - self.fix = gpp() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], -1) - self.assertEqual(cube.units, Unit('J')) - - -class TestLai(unittest.TestCase): - def setUp(self): - self.cube = Cube([1.0], var_name='lai', units='J') - self.fix = lai() - - def test_fix_data(self): - cube = self.fix.fix_data(self.cube) - self.assertEqual(cube.data[0], 1.0 / 100.0) - self.assertEqual(cube.units, Unit('J')) - - -class TestNbp(unittest.TestCase): - """Tests for nbp.""" - - def setUp(self): - """Prepare temp folder for test.""" - self.cube = Cube([1.0], var_name='nbp') - self.fix = nbp() - self.temp_folder = tempfile.mkdtemp() - - def tearDown(self): - """Delete temp folder.""" - shutil.rmtree(self.temp_folder) - - def test_fix_file(self): - """Test fix on nbp files to set standard_name.""" - temp_handler, temp_path = tempfile.mkstemp('.nc', dir=self.temp_folder) - os.close(temp_handler) - output_dir = os.path.join(self.temp_folder, 'fixed') - - iris.save(self.cube, temp_path) - new_path = self.fix.fix_file(temp_path, output_dir) - new_cube = iris.load_cube(new_path) - self.assertEqual( - new_cube.standard_name, - 'surface_net_downward_mass_flux_of_carbon_dioxide_' - 'expressed_as_carbon_due_to_all_land_processes') diff --git a/tests/integration/cmor/_fixes/PRIMAVERA/__init__.py b/tests/integration/cmor/_fixes/PRIMAVERA/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/cmor/_fixes/PRIMAVERA/test_EC_Earth3_HR.py b/tests/integration/cmor/_fixes/PRIMAVERA/test_EC_Earth3_HR.py deleted file mode 100644 index d0c4a18b68..0000000000 --- a/tests/integration/cmor/_fixes/PRIMAVERA/test_EC_Earth3_HR.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Test for the fixes for EC-Earth3-HR model from PRIMAVERA project""" -import unittest - -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.cmor._fixes.PRIMAVERA.EC_Earth3_HR import allvars - - -class TestAllVars(unittest.TestCase): - """Test for the common fixes for all the variables""" - def setUp(self): - """Prepare to test""" - self.cube = Cube([[1.0, 2.0], [3.0, 4.0]], var_name='var') - self.cube.add_dim_coord( - DimCoord([1.0, 2.0], standard_name='latitude', - var_name='latitude'), 0) - self.cube.add_dim_coord( - DimCoord([1.0, 2.0], standard_name='longitude', - var_name='longitude'), 1) - self.fix = allvars() - - def test_fix_lat_lon_names(self): - """ - Test latitude and longitude var names - - They should be lat and lon instead of the original latitude and - longitude - """ - cube = self.fix.fix_metadata([self.cube])[0] - self.assertEqual(cube.coord('latitude').var_name, 'lat') - self.assertEqual(cube.coord('longitude').var_name, 'lon') diff --git a/tests/integration/cmor/_fixes/__init__.py b/tests/integration/cmor/_fixes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/cmor/_fixes/test_fix.py b/tests/integration/cmor/_fixes/test_fix.py deleted file mode 100644 index bf26d5c652..0000000000 --- a/tests/integration/cmor/_fixes/test_fix.py +++ /dev/null @@ -1,65 +0,0 @@ -import os -import shutil -import tempfile -import unittest - -from iris.cube import Cube - -from esmvaltool.cmor.fix import Fix - - -class TestFix(unittest.TestCase): - def setUp(self): - """Set up temp folder""" - self.temp_folder = tempfile.mkdtemp() - - def tearDown(self): - """Remove temp folder""" - shutil.rmtree(self.temp_folder) - - def test_get_fix(self): - from esmvaltool.cmor._fixes.CMIP5.CanESM2 import fgco2 - self.assertListEqual( - Fix.get_fixes('CMIP5', 'CanESM2', 'fgco2'), [fgco2()]) - - def test_get_fixes_with_replace(self): - from esmvaltool.cmor._fixes.CMIP5.BNU_ESM import ch4 - self.assertListEqual(Fix.get_fixes('CMIP5', 'BNU-ESM', 'ch4'), [ch4()]) - - def test_get_fixes_with_generic(self): - from esmvaltool.cmor._fixes.CMIP5.CESM1_BGC import co2 - self.assertListEqual( - Fix.get_fixes('CMIP5', 'CESM1-BGC', 'co2'), [co2()]) - - def test_get_fix_no_project(self): - self.assertListEqual( - Fix.get_fixes('BAD_PROJECT', 'BNU-ESM', 'ch4'), []) - - def test_get_fix_no_model(self): - self.assertListEqual(Fix.get_fixes('CMIP5', 'BAD_MODEL', 'ch4'), []) - - def test_get_fix_no_var(self): - self.assertListEqual(Fix.get_fixes('CMIP5', 'BNU-ESM', 'BAD_VAR'), []) - - def test_fix_metadata(self): - cube = Cube([0]) - reference = Cube([0]) - - self.assertEqual(Fix().fix_metadata(cube), reference) - - def test_fix_data(self): - cube = Cube([0]) - reference = Cube([0]) - - self.assertEqual(Fix().fix_data(cube), reference) - - def test_fix_file(self): - filepath = 'sample_filepath' - self.assertEqual(Fix().fix_file(filepath, 'preproc'), filepath) - - def test_fixed_filenam(self): - filepath = os.path.join(self.temp_folder, 'file.nc') - output_dir = os.path.join(self.temp_folder, 'fixed') - os.makedirs(output_dir) - fixed_filepath = Fix().get_fixed_filepath(output_dir, filepath) - self.assertTrue(fixed_filepath, os.path.join(output_dir, 'file.nc')) diff --git a/tests/integration/cmor/test_table.py b/tests/integration/cmor/test_table.py deleted file mode 100644 index c9e33300a0..0000000000 --- a/tests/integration/cmor/test_table.py +++ /dev/null @@ -1,135 +0,0 @@ -"""Integration tests for the variable_info module""" - -import os -import unittest - -from esmvaltool.cmor.table import CMIP5Info, CMIP6Info, CustomInfo - - -class TestCMIP6Info(unittest.TestCase): - """Test for the CMIP6 info class.""" - - @classmethod - def setUpClass(cls): - """ - Set up tests. - - We read CMIP6Info once to keep tests times manageable - """ - cls.variables_info = CMIP6Info('cmip6', default=CustomInfo()) - - def test_custom_tables_location(self): - """Test constructor with custom tables location.""" - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, '..', '..', '..', 'esmvaltool', - 'cmor', 'tables', 'cmip6') - cmor_tables_path = os.path.abspath(cmor_tables_path) - CMIP6Info(cmor_tables_path) - - def test_get_variable_tas(self): - """Get tas variable.""" - var = self.variables_info.get_variable('Amon', 'tas') - self.assertEqual(var.short_name, 'tas') - - def test_get_variable_from_alias(self): - """Get a variable from a known alias.""" - var = self.variables_info.get_variable('SImon', 'sic') - self.assertEqual(var.short_name, 'siconc') - - def test_get_bad_variable(self): - """Get none if a variable is not in the given table.""" - self.assertIsNone(self.variables_info.get_variable('Omon', 'tas')) - - -class Testobs4mipsInfo(unittest.TestCase): - """Test for the obs$mips info class.""" - - @classmethod - def setUpClass(cls): - """ - Set up tests. - - We read CMIP6Info once to keep tests times manageable - """ - cls.variables_info = CMIP6Info( - cmor_tables_path='obs4mips', - default=CustomInfo() - ) - - def test_custom_tables_location(self): - """Test constructor with custom tables location.""" - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, '..', '..', '..', 'esmvaltool', - 'cmor', 'tables', 'cmip6') - cmor_tables_path = os.path.abspath(cmor_tables_path) - CMIP6Info(cmor_tables_path) - - def test_get_variable_tas(self): - """Get tas variable.""" - var = self.variables_info.get_variable('monStderr', 'ndviStderr') - self.assertEqual(var.short_name, 'ndviStderr') - - def test_get_bad_variable(self): - """Get none if a variable is not in the given table.""" - self.assertIsNone(self.variables_info.get_variable('Omon', 'tas')) - - -class TestCMIP5Info(unittest.TestCase): - """Test for the CMIP5 info class.""" - - @classmethod - def setUpClass(cls): - """ - Set up tests. - - We read CMIP5Info once to keep testing times manageable - """ - cls.variables_info = CMIP5Info('cmip5', default=CustomInfo()) - - def test_custom_tables_location(self): - """Test constructor with custom tables location.""" - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, '..', '..', '..', 'esmvaltool', - 'cmor', 'tables', 'cmip5') - cmor_tables_path = os.path.abspath(cmor_tables_path) - CMIP5Info(cmor_tables_path) - - def test_get_variable_tas(self): - """Get tas variable.""" - var = self.variables_info.get_variable('Amon', 'tas') - self.assertEqual(var.short_name, 'tas') - - def test_get_bad_variable(self): - """Get none if a variable is not in the given table.""" - self.assertIsNone(self.variables_info.get_variable('Omon', 'tas')) - - -class TestCustomInfo(unittest.TestCase): - """Test for the custom info class.""" - - @classmethod - def setUpClass(cls): - """ - Set up tests. - - We read CMIP5Info once to keep testing times manageable - """ - cls.variables_info = CustomInfo() - - def test_custom_tables_location(self): - """Test constructor with custom tables location.""" - cwd = os.path.dirname(os.path.realpath(__file__)) - cmor_tables_path = os.path.join(cwd, '..', '..', '..', 'esmvaltool', - 'cmor', 'tables', 'cmip5') - cmor_tables_path = os.path.abspath(cmor_tables_path) - CustomInfo(cmor_tables_path) - - def test_get_variable_tas(self): - """Get tas variable.""" - CustomInfo() - var = self.variables_info.get_variable('Amon', 'netcre') - self.assertEqual(var.short_name, 'netcre') - - def test_get_bad_variable(self): - """Get none if a variable is not in the given table.""" - self.assertIsNone(self.variables_info.get_variable('Omon', 'badvar')) diff --git a/tests/integration/data_finder.yml b/tests/integration/data_finder.yml deleted file mode 100644 index cd718fe2b6..0000000000 --- a/tests/integration/data_finder.yml +++ /dev/null @@ -1,238 +0,0 @@ ---- - -get_output_file: - - variable: &variable - variable_group: test - short_name: ta - dataset: HadGEM2-ES - project: CMIP5 - cmor_table: CMIP5 - institute: [INPE, MOHC] - frequency: mon - modeling_realm: [atmos] - mip: Amon - exp: historical - ensemble: r1i1p1 - start_year: 1960 - end_year: 1980 - diagnostic: test_diag - preprocessor: test_preproc - preproc_dir: this/is/a/path - output_file: this/is/a/path/test_diag/test/CMIP5_HadGEM2-ES_Amon_historical_r1i1p1_ta_1960-1980.nc - - - variable: - <<: *variable - exp: [historical, rcp85] - preproc_dir: /test - output_file: /test/test_diag/test/CMIP5_HadGEM2-ES_Amon_historical-rcp85_r1i1p1_ta_1960-1980.nc - - -get_input_filelist: - - drs: default - variable: - <<: *variable - available_files: - - ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - found_files: - - ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - - drs: default - variable: - <<: *variable - end_year: 2060 - exp: [historical, rcp85] - available_files: - - ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_198413-200512.nc - - ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - found_files: - - ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_198413-200512.nc - - ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - - - drs: default - variable: - <<: *variable - start_year: 2010 - end_year: 2100 - available_files: - - ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - ta_Amon_HadGEM2-ES_historical_r1i1p1_198413-200512.nc - - ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - found_files: [] - - - drs: default - variable: *variable - found_files: [] - - - drs: BADC - variable: - <<: *variable - start_year: 1980 - end_year: 2002 - available_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110329/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110329/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110329/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20120928/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20120928/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20120928/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - available_symlinks: - - link_name: MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/latest - target: v20120928 - found_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/latest/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/latest/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - - drs: DKRZ - variable: - <<: *variable - start_year: 1980 - end_year: 2002 - available_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_185912-188411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_188412-190911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_190912-193411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - found_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - - drs: DKRZ - variable: - <<: *variable - exp: [historical, rcp45, rcp85] - start_year: 1980 - end_year: 2100 - available_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_185912-188411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_188412-190911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_190912-193411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - MOHC/HadGEM2-ES/rcp45/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_rcp45_r1i1p1_200601-210012.nc - - MOHC/HadGEM2-ES/rcp85/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - found_files: - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - MOHC/HadGEM2-ES/historical/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - MOHC/HadGEM2-ES/rcp45/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_rcp45_r1i1p1_200601-210012.nc - - MOHC/HadGEM2-ES/rcp85/mon/atmos/Amon/r1i1p1/v20110330/ta/ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - - - drs: ETHZ - variable: - <<: *variable - start_year: 1980 - end_year: 2002 - available_files: - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_185912-188411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_188412-190911.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_190912-193411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - found_files: - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - - drs: ETHZ - variable: - <<: *variable - start_year: 2000 - end_year: 2100 - available_files: - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_185912-188411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_188412-190911.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_190912-193411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_193412-195911.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_195912-198411.nc - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - rcp85/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_rcp85_r1i1p1_200601-210012.nc - found_files: - - historical/Amon/ta/HadGEM2-ES/r1i1p1/ta_Amon_HadGEM2-ES_historical_r1i1p1_198412-200511.nc - - -get_input_fx_filelist: - - drs: default - variable: - <<: *variable - fx_files: - - areacella - - areacello - - basin - - deptho - - orog - - sftlf - - sftof - - thkcello - - volcello - available_files: - - sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - areacella_fx_HadGEM2-ES_historical_r0i0p0.nc - - areacello_fx_HadGEM2-ES_historical_r0i0p0.nc - - basin_fx_HadGEM2-ES_historical_r0i0p0.nc - - deptho_fx_HadGEM2-ES_historical_r0i0p0.nc - - orog_fx_HadGEM2-ES_historical_r0i0p0.nc - - sftlf_fx_HadGEM2-ES_historical_r0i0p0.nc - - sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - thkcello_fx_HadGEM2-ES_historical_r0i0p0.nc - - volcello_fx_HadGEM2-ES_historical_r0i0p0.nc - found_files: - areacella: areacella_fx_HadGEM2-ES_historical_r0i0p0.nc - areacello: areacello_fx_HadGEM2-ES_historical_r0i0p0.nc - basin: basin_fx_HadGEM2-ES_historical_r0i0p0.nc - deptho: deptho_fx_HadGEM2-ES_historical_r0i0p0.nc - orog: orog_fx_HadGEM2-ES_historical_r0i0p0.nc - sftlf: sftlf_fx_HadGEM2-ES_historical_r0i0p0.nc - sftof: sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - thkcello: thkcello_fx_HadGEM2-ES_historical_r0i0p0.nc - volcello: volcello_fx_HadGEM2-ES_historical_r0i0p0.nc - - - drs: default - variable: - <<: *variable - fx_files: - - sftof - found_files: - sftof: null - - - drs: BADC - variable: - <<: *variable - fx_files: - - sftof - available_files: - - MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/v20120215/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/v20130612/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - available_symlinks: - - link_name: MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/latest - target: v20130612 - found_files: - sftof: MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/latest/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - - drs: DKRZ - variable: - <<: *variable - fx_files: - - sftof - available_files: - - MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/v20120215/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/v20130612/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - found_files: - sftof: MOHC/HadGEM2-ES/historical/fx/ocean/fx/r0i0p0/v20130612/sftof/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - - - drs: ETHZ - variable: - <<: *variable - fx_files: - - sftof - available_files: - - historical/fx/sftof/HadGEM2-ES/r0i0p0/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc - found_files: - sftof: historical/fx/sftof/HadGEM2-ES/r0i0p0/sftof_fx_HadGEM2-ES_historical_r0i0p0.nc diff --git a/tests/integration/preprocessor/__init__.py b/tests/integration/preprocessor/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/preprocessor/_derive/__init__.py b/tests/integration/preprocessor/_derive/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/preprocessor/_derive/test_interface.py b/tests/integration/preprocessor/_derive/test_interface.py deleted file mode 100644 index cef8ea93a4..0000000000 --- a/tests/integration/preprocessor/_derive/test_interface.py +++ /dev/null @@ -1,69 +0,0 @@ -from iris.cube import Cube, CubeList - -from esmvaltool.preprocessor import derive -from esmvaltool.preprocessor._derive import get_required - - -def test_get_required(): - - variables = get_required('alb') - - reference = [ - { - 'short_name': 'rsds', - }, - { - 'short_name': 'rsus', - }, - ] - - assert variables == reference - - -def test_get_required_with_fx(): - - variables = get_required('nbp_grid') - - reference = [{ - 'short_name': 'nbp', - 'fx_files': ['sftlf'], - }] - - assert variables == reference - - -def test_derive_nonstandard_nofx(): - - short_name = 'alb' - long_name = 'albedo at the surface' - units = 1 - standard_name = '' - - rsds = Cube([2.]) - rsds.standard_name = 'surface_downwelling_shortwave_flux_in_air' - - rsus = Cube([1.]) - rsus.standard_name = 'surface_upwelling_shortwave_flux_in_air' - - cubes = CubeList([rsds, rsus]) - - alb = derive(cubes, short_name, long_name, units, standard_name) - - print(alb) - assert alb.var_name == short_name - assert alb.long_name == long_name - assert alb.units == units - assert alb.data == [0.5] - - -def test_derive_noop(): - - alb = Cube([1.]) - alb.var_name = 'alb' - alb.long_name = 'albedo at the surface' - alb.units = 1 - - cube = derive([alb], alb.var_name, alb.long_name, alb.units) - - print(cube) - assert cube is alb diff --git a/tests/integration/preprocessor/_io/__init__.py b/tests/integration/preprocessor/_io/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/integration/preprocessor/_io/test_cleanup.py b/tests/integration/preprocessor/_io/test_cleanup.py deleted file mode 100644 index c984865c44..0000000000 --- a/tests/integration/preprocessor/_io/test_cleanup.py +++ /dev/null @@ -1,38 +0,0 @@ -"""Integration tests for :func:`esmvaltool.preprocessor._io.cleanup`""" - -import os -import tempfile -import unittest - -from esmvaltool.preprocessor import _io - - -class TestCleanup(unittest.TestCase): - """Tests for :func:`esmvaltool.preprocessor._io.cleanup`""" - - def setUp(self): - self.temp_paths = [] - descriptor, temp_file = tempfile.mkstemp('.nc') - os.close(descriptor) - self.temp_paths.append(temp_file) - self.temp_paths.append(tempfile.mkdtemp()) - - def tearDown(self): - for path in self.temp_paths: - if os.path.isfile(path): - os.remove(path) - elif os.path.isdir(path): - os.rmdir(path) - - def test_cleanup(self): - """Test cleanup""" - _io.cleanup([], self.temp_paths) - for path in self.temp_paths: - self.assertFalse(os.path.exists(path)) - - def test_cleanup_when_files_removed(self): - """Test cleanup works even with missing files or folders""" - self.tearDown() - _io.cleanup([], self.temp_paths) - for path in self.temp_paths: - self.assertFalse(os.path.exists(path)) diff --git a/tests/integration/preprocessor/_io/test_concatenate.py b/tests/integration/preprocessor/_io/test_concatenate.py deleted file mode 100644 index ab0f0d0752..0000000000 --- a/tests/integration/preprocessor/_io/test_concatenate.py +++ /dev/null @@ -1,115 +0,0 @@ -"""Integration tests for :func:`esmvaltool.preprocessor._io.concatenate`.""" - -import unittest - -import numpy as np -from iris.coords import DimCoord -from iris.cube import Cube -from iris.exceptions import ConcatenateError - -from esmvaltool.preprocessor import _io - - -class TestConcatenate(unittest.TestCase): - """Tests for :func:`esmvaltool.preprocessor._io.concatenate`.""" - - def setUp(self): - """Start tests.""" - coord = DimCoord([1, 2], var_name='coord') - second_coord = coord.copy([3, 4]) - third_coord = coord.copy([5, 6]) - self.raw_cubes = [] - self.raw_cubes.append( - Cube([1, 2], var_name='sample', dim_coords_and_dims=((coord, - 0), ))) - self.raw_cubes.append( - Cube([3, 4], - var_name='sample', - dim_coords_and_dims=((second_coord, 0), ))) - self.raw_cubes.append( - Cube([5, 6], - var_name='sample', - dim_coords_and_dims=((third_coord, 0), ))) - - def test_concatenate(self): - """Test concatenation of two cubes.""" - concatenated = _io.concatenate(self.raw_cubes) - self.assertTrue((concatenated.coord('coord').points == np.array( - [1, 2, 3, 4, 5, 6])).all()) - - def test_fail_with_duplicates(self): - """Test exception raised if two cubes are overlapping.""" - self.raw_cubes.append(self.raw_cubes[0].copy()) - with self.assertRaises(ConcatenateError): - _io.concatenate(self.raw_cubes) - - def test_fail_metadata_differs(self): - """Test exception raised if two cubes have different metadata.""" - self.raw_cubes[0].units = 'm' - with self.assertRaises(ConcatenateError): - _io.concatenate(self.raw_cubes) - - def test_fix_attributes(self): - """Test fixing attributes for concatenation.""" - identical_attrs = { - 'int': 42, - 'float': 3.1415, - 'bool': True, - 'str': 'Hello, world', - 'list': [1, 1, 2, 3, 5, 8, 13], - 'tuple': (1, 2, 3, 4, 5), - 'dict': { - 1: 'one', - 2: 'two', - 3: 'three' - }, - 'nparray': np.arange(42), - } - differing_attrs = [ - { - 'new_int': 0, - 'new_str': 'hello', - 'new_nparray': np.arange(3), - 'mix': np.arange(2), - }, - { - 'new_int': 1, - 'new_str': 'world', - 'new_list': [1, 1, 2], - 'new_tuple': (0, 1), - 'new_dict': { - 0: 'zero', - }, - 'mix': { - 1: 'one', - }, - }, - { - 'new_str': '!', - 'new_list': [1, 1, 2, 3], - 'new_tuple': (1, 2, 3), - 'new_dict': { - 0: 'zeroo', - 1: 'one', - }, - 'new_nparray': np.arange(2), - 'mix': False, - }, - ] - resulting_attrs = { - 'new_int': '0;1', - 'new_str': 'hello;world;!', - 'new_nparray': '[0 1 2];[0 1]', - 'new_list': '[1, 1, 2];[1, 1, 2, 3]', - 'new_tuple': '(0, 1);(1, 2, 3)', - 'new_dict': "{0: 'zero'};{0: 'zeroo', 1: 'one'}", - 'mix': "[0 1];{1: 'one'};False", - } - resulting_attrs.update(identical_attrs) - - for idx in range(3): - self.raw_cubes[idx].attributes = identical_attrs - self.raw_cubes[idx].attributes.update(differing_attrs[idx]) - _io._fix_cube_attributes(self.raw_cubes) # noqa - for cube in self.raw_cubes: - self.assertTrue(cube.attributes == resulting_attrs) diff --git a/tests/integration/preprocessor/_io/test_load.py b/tests/integration/preprocessor/_io/test_load.py deleted file mode 100644 index 68b7beab8a..0000000000 --- a/tests/integration/preprocessor/_io/test_load.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Integration tests for :func:`esmvaltool.preprocessor._io.load`.""" - -import os -import tempfile -import unittest - -import iris -import numpy as np -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.preprocessor._io import concatenate_callback, load - - -def _create_sample_cube(): - coord = DimCoord([1, 2], standard_name='latitude', units='degrees_north') - cube = Cube([1, 2], var_name='sample', dim_coords_and_dims=((coord, 0), )) - return cube - - -class TestLoad(unittest.TestCase): - """Tests for :func:`esmvaltool.preprocessor.load`.""" - - def setUp(self): - """Start tests.""" - self.temp_files = [] - - def tearDown(self): - """Finish tests.""" - for temp_file in self.temp_files: - os.remove(temp_file) - - def _save_cube(self, cube): - descriptor, temp_file = tempfile.mkstemp('.nc') - os.close(descriptor) - iris.save(cube, temp_file) - self.temp_files.append(temp_file) - return temp_file - - def test_load(self): - """Test loading multiple files.""" - cube = _create_sample_cube() - temp_file = self._save_cube(cube) - - cubes = load(temp_file) - cube = cubes[0] - self.assertEqual(1, len(cubes)) - self.assertEqual(temp_file, cube.attributes['source_file']) - self.assertTrue((cube.data == np.array([1, 2])).all()) - self.assertTrue((cube.coord('latitude').points == np.array([1, - 2])).all()) - - def test_callback_remove_attributes(self): - """Test callback remove unwanted attributes.""" - attributes = ('history', 'creation_date', 'tracking_id') - for _ in range(2): - cube = _create_sample_cube() - for attr in attributes: - cube.attributes[attr] = attr - self._save_cube(cube) - for temp_file in self.temp_files: - cubes = load(temp_file, callback=concatenate_callback) - cube = cubes[0] - self.assertEqual(1, len(cubes)) - self.assertTrue((cube.data == np.array([1, 2])).all()) - self.assertTrue( - (cube.coord('latitude').points == np.array([1, 2])).all()) - for attr in attributes: - self.assertTrue(attr not in cube.attributes) - - def test_callback_fix_lat_units(self): - """Test callback for fixing units.""" - cube = _create_sample_cube() - temp_file = self._save_cube(cube) - - cubes = load(temp_file, callback=concatenate_callback) - cube = cubes[0] - self.assertEqual(1, len(cubes)) - self.assertTrue((cube.data == np.array([1, 2])).all()) - self.assertTrue((cube.coord('latitude').points == np.array([1, - 2])).all()) - self.assertEquals(cube.coord('latitude').units, 'degrees_north') diff --git a/tests/integration/preprocessor/_io/test_save.py b/tests/integration/preprocessor/_io/test_save.py deleted file mode 100644 index b6f5f1495f..0000000000 --- a/tests/integration/preprocessor/_io/test_save.py +++ /dev/null @@ -1,121 +0,0 @@ -"""Integration tests for :func:`esmvaltool.preprocessor.save`""" - -import os -import tempfile -import unittest - -import iris -import netCDF4 -import numpy as np -from iris.coords import DimCoord -from iris.cube import Cube - -from esmvaltool.preprocessor import save - - -class TestSave(unittest.TestCase): - """Tests for :func:`esmvaltool.preprocessor.save`""" - - def setUp(self): - self.temp_files = [] - - def tearDown(self): - for temp_file in self.temp_files: - if os.path.isfile(temp_file): - os.remove(temp_file) - - def _create_sample_cube(self): - lat = DimCoord( - np.asarray([1, 2], np.single), - standard_name='latitude', - units='degrees_north') - lon = DimCoord( - np.asarray([1, 2], np.single), - standard_name='longitude', - units='degrees_east') - time = DimCoord( - np.asarray([1, 2], np.single), - standard_name='time', - units='days since 2000-1-1') - - cube = Cube( - np.random.random_sample([2, 2, 2]), - var_name='sample', - units='1', - dim_coords_and_dims=((lat, 0), (lon, 1), (time, 2))) - - descriptor, filename = tempfile.mkstemp('.nc') - os.close(descriptor) - self.temp_files.append(filename) - return cube, filename - - def test_save(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename) - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - - def test_save_zlib(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename, compress=True) - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - handler = netCDF4.Dataset(path, 'r') - sample_filters = handler.variables['sample'].filters() - self.assertTrue(sample_filters['zlib']) - self.assertTrue(sample_filters['shuffle']) - self.assertEqual(sample_filters['complevel'], 4) - handler.close() - - def test_fail_without_filename(self): - """Test save fails if filename is not provided.""" - cube, _ = self._create_sample_cube() - with self.assertRaises(TypeError): - save([cube]) - - def test_save_optimized_map(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename, optimize_access='map') - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - self._check_chunks(path, [2, 2, 1]) - - def test_save_optimized_timeseries(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename, optimize_access='timeseries') - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - self._check_chunks(path, [1, 1, 2]) - - def test_save_optimized_lat(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename, optimize_access='latitude') - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - expected_chunks = [2, 1, 1] - self._check_chunks(path, expected_chunks) - - def _check_chunks(self, path, expected_chunks): - handler = netCDF4.Dataset(path, 'r') - chunking = handler.variables['sample'].chunking() - handler.close() - self.assertListEqual(expected_chunks, chunking) - - def test_save_optimized_lon_time(self): - """Test save""" - cube, filename = self._create_sample_cube() - path = save([cube], filename, optimize_access='longitude time') - loaded_cube = iris.load_cube(path) - self._compare_cubes(cube, loaded_cube) - self._check_chunks(path, [1, 2, 2]) - - def _compare_cubes(self, cube, loaded_cube): - self.assertTrue((cube.data == loaded_cube.data).all()) - for coord in cube.coords(): - self.assertTrue( - (coord.points == loaded_cube.coord(coord.name()).points).all()) diff --git a/tests/integration/preprocessor/_mask/__init__.py b/tests/integration/preprocessor/_mask/__init__.py deleted file mode 100644 index 147b3fce6e..0000000000 --- a/tests/integration/preprocessor/_mask/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -""" -Test _mask.py - -Integration tests for the esmvaltool.preprocessor._mask module -""" diff --git a/tests/integration/preprocessor/_mask/test_mask.py b/tests/integration/preprocessor/_mask/test_mask.py deleted file mode 100644 index 47d64e30c7..0000000000 --- a/tests/integration/preprocessor/_mask/test_mask.py +++ /dev/null @@ -1,143 +0,0 @@ -""" -Test mask - -Integration tests for the :func:`esmvaltool.preprocessor._mask` -module. - -""" - -import os -import tempfile -import unittest - -import iris -import numpy as np - -import tests -from esmvaltool.preprocessor import (PreprocessorFile, mask_fillvalues, - mask_landsea, mask_landseaice) - - -class Test(tests.Test): - """Test class""" - - def setUp(self): - """Assemble a stock cube""" - fx_data = np.empty((3, 3)) - fx_data[:] = 60. - self.new_cube_data = np.empty((3, 3)) - self.new_cube_data[:] = 200. - crd_sys = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - lons = iris.coords.DimCoord([0, 1.5, 3], - standard_name='longitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_east', - coord_system=crd_sys) - lats = iris.coords.DimCoord([0, 1.5, 3], - standard_name='latitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_north', - coord_system=crd_sys) - self.coords_spec = [(lats, 0), (lons, 1)] - self.fx_mask = iris.cube.Cube( - fx_data, dim_coords_and_dims=self.coords_spec) - - def test_mask_landsea(self): - """Test mask_landsea func""" - iris.save(self.fx_mask, 'sftlf_test.nc') - new_cube_land = iris.cube.Cube( - self.new_cube_data, dim_coords_and_dims=self.coords_spec) - new_cube_sea = iris.cube.Cube( - self.new_cube_data, dim_coords_and_dims=self.coords_spec) - - # mask with fx files - result_land = mask_landsea(new_cube_land, ['sftlf_test.nc'], 'land') - result_sea = mask_landsea(new_cube_sea, ['sftlf_test.nc'], 'sea') - expected = np.ma.empty((3, 3)) - expected.data[:] = 200. - expected.mask = np.ones((3, 3), bool) - # set fillvalues so we are sure they are equal - np.ma.set_fill_value(result_land.data, 1e+20) - np.ma.set_fill_value(result_sea.data, 1e+20) - np.ma.set_fill_value(expected, 1e+20) - self.assertArrayEqual(result_land.data.mask, expected.mask) - expected.mask = np.zeros((3, 3), bool) - self.assertArrayEqual(result_sea.data, expected) - # remove the fx.nc temporary file - os.remove('sftlf_test.nc') - - # mask with shp files - new_cube_land = iris.cube.Cube( - self.new_cube_data, dim_coords_and_dims=self.coords_spec) - new_cube_sea = iris.cube.Cube( - self.new_cube_data, dim_coords_and_dims=self.coords_spec) - - # bear in mind all points are in the ocean - result_land = mask_landsea(new_cube_land, None, 'land') - np.ma.set_fill_value(result_land.data, 1e+20) - expected.mask = np.zeros((3, 3), bool) - self.assertArrayEqual(result_land.data, expected) - - def test_mask_landseaice(self): - """Test mask_landseaice func""" - iris.save(self.fx_mask, 'sftgif_test.nc') - new_cube_ice = iris.cube.Cube( - self.new_cube_data, dim_coords_and_dims=self.coords_spec) - result_ice = mask_landseaice(new_cube_ice, ['sftgif_test.nc'], 'ice') - expected = np.ma.empty((3, 3)) - expected.data[:] = 200. - expected.mask = np.ones((3, 3), bool) - np.ma.set_fill_value(result_ice.data, 1e+20) - np.ma.set_fill_value(expected, 1e+20) - self.assertArrayEqual(result_ice.data.mask, expected.mask) - os.remove('sftgif_test.nc') - - def test_mask_fillvalues(self): - """Test the fillvalues mask: func mask_fillvalues""" - data_1 = np.ma.empty((4, 3, 3)) - data_1[:] = 10. - data_2 = np.ma.empty((4, 3, 3)) - data_2[:] = 10. - data_2.mask = np.ones((4, 3, 3), bool) - crd_sys = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - lons = iris.coords.DimCoord([0, 1.5, 3], - standard_name='longitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_east', - coord_system=crd_sys) - lats = iris.coords.DimCoord([0, 1.5, 3], - standard_name='latitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_north', - coord_system=crd_sys) - times = iris.coords.DimCoord([0, 1.5, 2.5, 3.5], - standard_name='time', - bounds=[[0, 1], [1, 2], [2, 3], [3, 4]], - units='hours') - coords_spec = [(times, 0), (lats, 1), (lons, 2)] - cube_1 = iris.cube.Cube(data_1, dim_coords_and_dims=coords_spec) - cube_2 = iris.cube.Cube(data_2, dim_coords_and_dims=coords_spec) - filename_1 = tempfile.NamedTemporaryFile().name + '.nc' - filename_2 = tempfile.NamedTemporaryFile().name + '.nc' - product_1 = PreprocessorFile( - attributes={'filename': filename_1}, settings={}) - product_1.cubes = [cube_1] - product_2 = PreprocessorFile( - attributes={'filename': filename_2}, settings={}) - product_2.cubes = [cube_2] - results = mask_fillvalues({product_1, product_2}, - 0.95, - min_value=-1.e10, - time_window=1) - result_1, result_2 = None, None - for product in results: - if product.filename == filename_1: - result_1 = product.cubes[0] - if product.filename == filename_2: - result_2 = product.cubes[0] - self.assertArrayEqual(result_2.data.mask, data_2.mask) - self.assertArrayEqual(result_1.data, data_1) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/integration/preprocessor/_regrid/__init__.py b/tests/integration/preprocessor/_regrid/__init__.py deleted file mode 100644 index 650c03c7cd..0000000000 --- a/tests/integration/preprocessor/_regrid/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -""" -Integration tests for the :mod:`esmvaltool.preprocessor._regrid` module. - -""" diff --git a/tests/integration/preprocessor/_regrid/test_extract_levels.py b/tests/integration/preprocessor/_regrid/test_extract_levels.py deleted file mode 100644 index 15c5d3150b..0000000000 --- a/tests/integration/preprocessor/_regrid/test_extract_levels.py +++ /dev/null @@ -1,93 +0,0 @@ -""" -Integration tests for the :func:`esmvaltool.preprocessor.regrid.extract_levels` -function. - -""" - -import unittest - -import iris -import numpy as np - -import tests -from esmvaltool.preprocessor._regrid import _MDI, extract_levels -from tests.unit.preprocessor._regrid import _make_cube, _make_vcoord - - -class Test(tests.Test): - def setUp(self): - shape = (3, 2, 2) - self.z = shape[0] - data = np.arange(np.prod(shape)).reshape(shape) - cubes = iris.cube.CubeList() - # Create first realization cube. - cube = _make_cube(data) - coord = iris.coords.DimCoord(0, standard_name='realization') - cube.add_aux_coord(coord) - cubes.append(cube) - # Create second realization cube. - cube = _make_cube(data + np.prod(shape)) - coord = iris.coords.DimCoord(1, standard_name='realization') - cube.add_aux_coord(coord) - cubes.append(cube) - # Create a 4d synthetic test cube. - self.cube = cubes.merge_cube() - coord = self.cube.coord(axis='z', dim_coords=True) - self.shape = list(self.cube.shape) - [self.z_dim] = self.cube.coord_dims(coord) - - def test_nop__levels_match(self): - vcoord = _make_vcoord(self.z) - self.assertEqual(self.cube.coord(axis='z', dim_coords=True), vcoord) - levels = vcoord.points - result = extract_levels(self.cube, levels, 'linear') - self.assertEqual(result, self.cube) - self.assertEqual(id(result), id(self.cube)) - - def test_interpolation__linear(self): - levels = [0.5, 1.5] - scheme = 'linear' - result = extract_levels(self.cube, levels, scheme) - expected = np.array([[[[2., 3.], [4., 5.]], [[6., 7.], [8., 9.]]], - [[[14., 15.], [16., 17.]], [[18., 19.], - [20., 21.]]]]) - self.assertArrayEqual(result.data, expected) - self.shape[self.z_dim] = len(levels) - self.assertEqual(result.shape, tuple(self.shape)) - - def test_interpolation__nearest(self): - levels = [0.49, 1.51] - scheme = 'nearest' - result = extract_levels(self.cube, levels, scheme) - expected = np.array([[[[0., 1.], [2., 3.]], [[8., 9.], [10., 11.]]], - [[[12., 13.], [14., 15.]], [[20., 21.], - [22., 23.]]]]) - self.assertArrayEqual(result.data, expected) - self.shape[self.z_dim] = len(levels) - self.assertEqual(result.shape, tuple(self.shape)) - - def test_interpolation__extrapolated_NaN_filling(self): - levels = [-10, 1, 2, 10] - scheme = 'nearest' - result = extract_levels(self.cube, levels, scheme) - expected = np.array( - [[[[_MDI, _MDI], [_MDI, _MDI]], [[4., 5.], [6., 7.]], - [[8., 9.], [10., 11.]], [[_MDI, _MDI], [_MDI, _MDI]]], - [[[_MDI, _MDI], [_MDI, _MDI]], [[16., 17.], [18., 19.]], - [[20., 21.], [22., 23.]], [[_MDI, _MDI], [_MDI, _MDI]]]]) - self.assertArrayEqual(result.data, expected) - self.shape[self.z_dim] = len(levels) - self.assertEqual(result.shape, tuple(self.shape)) - - def test_interpolation__scalar_collapse(self): - level = 1 - scheme = 'nearest' - result = extract_levels(self.cube, level, scheme) - expected = np.array([[[4., 5.], [6., 7.]], [[16., 17.], [18., 19.]]]) - self.assertArrayEqual(result.data, expected) - del self.shape[self.z_dim] - self.assertEqual(result.shape, tuple(self.shape)) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/integration/preprocessor/_regrid/test_get_cmor_levels.py b/tests/integration/preprocessor/_regrid/test_get_cmor_levels.py deleted file mode 100644 index 56662b204a..0000000000 --- a/tests/integration/preprocessor/_regrid/test_get_cmor_levels.py +++ /dev/null @@ -1,57 +0,0 @@ -""" -Integration tests for the :func: -`esmvaltool.preprocessor.regrid.get_cmor_levels` -function. - -""" - -import unittest - -from esmvaltool._config import read_config_developer_file -from esmvaltool.cmor.table import read_cmor_tables -from esmvaltool.preprocessor import _regrid - - -class TestGetCmorLevels(unittest.TestCase): - @staticmethod - def setUpClass(): - """Read cmor tables before testing""" - read_cmor_tables(read_config_developer_file()) - - def test_cmip6_alt40(self): - self.assertListEqual( - _regrid.get_cmor_levels('CMIP6', 'alt40'), [ - 240.0, 720.0, 1200.0, 1680.0, 2160.0, 2640.0, 3120.0, 3600.0, - 4080.0, 4560.0, 5040.0, 5520.0, 6000.0, 6480.0, 6960.0, 7440.0, - 7920.0, 8400.0, 8880.0, 9360.0, 9840.0, 10320.0, 10800.0, - 11280.0, 11760.0, 12240.0, 12720.0, 13200.0, 13680.0, 14160.0, - 14640.0, 15120.0, 15600.0, 16080.0, 16560.0, 17040.0, 17520.0, - 18000.0, 18480.0, 18960.0 - ]) - - def test_cmip6_p200(self): - self.assertListEqual( - _regrid.get_cmor_levels('CMIP6', 'p200'), [20000.]) - - def test_cmip5_alt40(self): - self.assertListEqual( - _regrid.get_cmor_levels('CMIP5', 'plevs'), [ - 100000., 92500., 85000., 70000., 60000., 50000., 40000., - 30000., 25000., 20000., 15000., 10000., 7000., 5000., 3000., - 2000., 1000. - ]) - - def test_cmip5_p500(self): - self.assertListEqual(_regrid.get_cmor_levels('CMIP5', 'p500'), [50000]) - - def test_not_values_in_coordinate(self): - with self.assertRaises(ValueError): - _regrid.get_cmor_levels('CMIP6', 'time') - - def test_bad_table(self): - with self.assertRaises(ValueError): - _regrid.get_cmor_levels('CMOCK', 'p500') - - def test_bad_coordinate(self): - with self.assertRaises(ValueError): - _regrid.get_cmor_levels('CMIP5', 'uglycoord') diff --git a/tests/integration/preprocessor/_regrid/test_get_file_levels.py b/tests/integration/preprocessor/_regrid/test_get_file_levels.py deleted file mode 100644 index a394715595..0000000000 --- a/tests/integration/preprocessor/_regrid/test_get_file_levels.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -Integration tests for the :func: -`esmvaltool.preprocessor.regrid.get_cmor_levels` -function. - -""" - -import os -import tempfile -import unittest - -import iris -import iris.coords -import iris.cube -import numpy as np - -from esmvaltool.preprocessor import _regrid - - -class TestGetFileLevels(unittest.TestCase): - def setUp(self): - """Prepare the sample file for the test""" - self.cube = iris.cube.Cube(np.ones([2, 2, 2]), var_name='var') - self.cube.add_dim_coord( - iris.coords.DimCoord(np.arange(0, 2), var_name='coord'), 0) - - self.cube.coord('coord').attributes['positive'] = 'up' - iris.util.guess_coord_axis(self.cube.coord('coord')) - descriptor, self.path = tempfile.mkstemp('.nc') - os.close(descriptor) - print(self.cube) - iris.save(self.cube, self.path) - - def tearDown(self): - """Remove the sample file for the test""" - os.remove(self.path) - - def test_get_coord(self): - self.assertListEqual( - _regrid.get_reference_levels( - self.path, 'project', 'dataset', 'short_name', 'output_dir'), - [0., 1] - ) diff --git a/tests/integration/preprocessor/_regrid/test_regrid.py b/tests/integration/preprocessor/_regrid/test_regrid.py deleted file mode 100644 index 7ab337710f..0000000000 --- a/tests/integration/preprocessor/_regrid/test_regrid.py +++ /dev/null @@ -1,171 +0,0 @@ -""" -Integration tests for the :func:`esmvaltool.preprocessor.regrid.regrid` -function. - -""" - -import unittest - -import iris -import numpy as np -from numpy import ma - -import tests -from esmvaltool.preprocessor import regrid -from tests.unit.preprocessor._regrid import _make_cube - - -class Test(tests.Test): - def setUp(self): - shape = (3, 2, 2) - data = np.arange(np.prod(shape)).reshape(shape) - self.cube = _make_cube(data) - self.cs = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - - def test_regrid__linear(self): - data = np.empty((1, 1)) - lons = iris.coords.DimCoord([1.5], - standard_name='longitude', - bounds=[[1, 2]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([1.5], - standard_name='latitude', - bounds=[[1, 2]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'linear') - expected = np.array([[[1.5]], [[5.5]], [[9.5]]]) - self.assertArrayEqual(result.data, expected) - - def test_regrid__linear_extrapolate(self): - data = np.empty((3, 3)) - lons = iris.coords.DimCoord([0, 1.5, 3], - standard_name='longitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([0, 1.5, 3], - standard_name='latitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'linear_extrapolate') - expected = [[[-3., -1.5, 0.], [0., 1.5, 3.], [3., 4.5, 6.]], - [[1., 2.5, 4.], [4., 5.5, 7.], [7., 8.5, 10.]], - [[5., 6.5, 8.], [8., 9.5, 11.], [11., 12.5, 14.]]] - self.assertArrayEqual(result.data, expected) - - def test_regrid__linear_extrapolate_with_mask(self): - data = np.empty((3, 3)) - grid = iris.cube.Cube(data) - lons = iris.coords.DimCoord([0, 1.5, 3], - standard_name='longitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([0, 1.5, 3], - standard_name='latitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'linear') - expected = ma.empty((3, 3, 3)) - expected.mask = ma.masked - expected[:, 1, 1] = np.array([1.5, 5.5, 9.5]) - self.assertArrayEqual(result.data, expected) - - def test_regrid__nearest(self): - data = np.empty((1, 1)) - lons = iris.coords.DimCoord([1.6], - standard_name='longitude', - bounds=[[1, 2]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([1.6], - standard_name='latitude', - bounds=[[1, 2]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'nearest') - expected = np.array([[[3]], [[7]], [[11]]]) - self.assertArrayEqual(result.data, expected) - - def test_regrid__nearest_extrapolate_with_mask(self): - data = np.empty((3, 3)) - lons = iris.coords.DimCoord([0, 1.6, 3], - standard_name='longitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([0, 1.6, 3], - standard_name='latitude', - bounds=[[0, 1], [1, 2], [2, 3]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'nearest') - expected = ma.empty((3, 3, 3)) - expected.mask = ma.masked - expected[:, 1, 1] = np.array([3, 7, 11]) - self.assertArrayEqual(result.data, expected) - - def test_regrid__area_weighted(self): - data = np.empty((1, 1)) - lons = iris.coords.DimCoord([1.6], - standard_name='longitude', - bounds=[[1, 2]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([1.6], - standard_name='latitude', - bounds=[[1, 2]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - result = regrid(self.cube, grid, 'area_weighted') - expected = np.array([1.499886, 5.499886, 9.499886]) - self.assertArrayAlmostEqual(result.data, expected) - - def test_regrid__unstructured_nearest(self): - data = np.empty((1, 1)) - lons = iris.coords.DimCoord([1.6], - standard_name='longitude', - bounds=[[1, 2]], - units='degrees_east', - coord_system=self.cs) - lats = iris.coords.DimCoord([1.6], - standard_name='latitude', - bounds=[[1, 2]], - units='degrees_north', - coord_system=self.cs) - coords_spec = [(lats, 0), (lons, 1)] - grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - # Replace 1d spatial coords with 2d spatial coords. - lons = self.cube.coord('longitude') - lats = self.cube.coord('latitude') - x, y = np.meshgrid(lons.points, lats.points) - lats = iris.coords.AuxCoord(x, **lats._as_defn()._asdict()) - lons = iris.coords.AuxCoord(y, **lons._as_defn()._asdict()) - self.cube.remove_coord('longitude') - self.cube.remove_coord('latitude') - self.cube.remove_coord('Pressure Slice') - self.cube.add_aux_coord(lons, (1, 2)) - self.cube.add_aux_coord(lats, (1, 2)) - result = regrid(self.cube, grid, 'unstructured_nearest') - expected = np.array([[[3]], [[7]], [[11]]]) - self.assertArrayAlmostEqual(result.data, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/integration/test_data_finder.py b/tests/integration/test_data_finder.py deleted file mode 100644 index 484fdc99b7..0000000000 --- a/tests/integration/test_data_finder.py +++ /dev/null @@ -1,113 +0,0 @@ -"""Tests for _data_finder.py.""" -import os -import shutil -import tempfile - -import pytest -import yaml - -import esmvaltool._config -from esmvaltool._data_finder import (get_input_filelist, get_input_fx_filelist, - get_output_file) -from esmvaltool.cmor.table import read_cmor_tables - -# Initialize with standard config developer file -esmvaltool._config.CFG = esmvaltool._config.read_config_developer_file() -# Initialize CMOR tables -read_cmor_tables(esmvaltool._config.CFG) - -# Load test configuration -with open(os.path.join(os.path.dirname(__file__), 'data_finder.yml')) as file: - CONFIG = yaml.safe_load(file) - - -def print_path(path): - """Print path.""" - txt = path - if os.path.isdir(path): - txt += '/' - if os.path.islink(path): - txt += ' -> ' + os.readlink(path) - print(txt) - - -def tree(path): - """Print path, similar to the the `tree` command.""" - print_path(path) - for dirpath, dirnames, filenames in os.walk(path): - for dirname in dirnames: - print_path(os.path.join(dirpath, dirname)) - for filename in filenames: - print_path(os.path.join(dirpath, filename)) - - -def create_file(filename): - """Create an empty file.""" - dirname = os.path.dirname(filename) - if not os.path.exists(dirname): - os.makedirs(dirname) - - with open(filename, 'a'): - pass - - -def create_tree(path, filenames=None, symlinks=None): - """Create directory structure and files.""" - for filename in filenames or []: - create_file(os.path.join(path, filename)) - - for symlink in symlinks or []: - link_name = os.path.join(path, symlink['link_name']) - os.symlink(symlink['target'], link_name) - - -@pytest.mark.parametrize('cfg', CONFIG['get_output_file']) -def test_get_output_file(cfg): - """Test getting output name for preprocessed files.""" - output_file = get_output_file(cfg['variable'], cfg['preproc_dir']) - assert output_file == cfg['output_file'] - - -@pytest.fixture -def root(): - """Root function for tests.""" - dirname = tempfile.mkdtemp() - yield os.path.join(dirname, 'output1') - print("Directory structure was:") - tree(dirname) - shutil.rmtree(dirname) - - -@pytest.mark.parametrize('cfg', CONFIG['get_input_filelist']) -def test_get_input_filelist(root, cfg): - """Test retrieving input filelist.""" - create_tree(root, cfg.get('available_files'), - cfg.get('available_symlinks')) - - # Find files - rootpath = {cfg['variable']['project']: [root]} - drs = {cfg['variable']['project']: cfg['drs']} - input_filelist = get_input_filelist(cfg['variable'], rootpath, drs) - - # Test result - reference = [os.path.join(root, file) for file in cfg['found_files']] - assert sorted(input_filelist) == sorted(reference) - - -@pytest.mark.parametrize('cfg', CONFIG['get_input_fx_filelist']) -def test_get_input_fx_filelist(root, cfg): - """Test retrieving fx filelist.""" - create_tree(root, cfg.get('available_files'), - cfg.get('available_symlinks')) - - # Find files - rootpath = {cfg['variable']['project']: [root]} - drs = {cfg['variable']['project']: cfg['drs']} - fx_files = get_input_fx_filelist(cfg['variable'], rootpath, drs) - - # Test result - reference = { - fx_var: os.path.join(root, filename) if filename else None - for fx_var, filename in cfg['found_files'].items() - } - assert fx_files == reference diff --git a/tests/integration/test_diagnostic_run.py b/tests/integration/test_diagnostic_run.py index d5043284da..c31d223c7b 100644 --- a/tests/integration/test_diagnostic_run.py +++ b/tests/integration/test_diagnostic_run.py @@ -5,9 +5,8 @@ import pytest import yaml -from six import text_type -from esmvaltool._main import run +from esmvalcore._main import run def write_config_user_file(dirname): @@ -115,7 +114,7 @@ def test_diagnostic_run(tmp_path, script_file, script): result_file = tmp_path / 'result.yml' # Write script to file - script_file.write_text(text_type(script)) + script_file.write_text(str(script)) # Create recipe recipe = dedent(""" @@ -130,7 +129,7 @@ def test_diagnostic_run(tmp_path, script_file, script): script: {} setting_name: {} """.format(script_file, result_file)) - recipe_file.write_text(text_type(recipe)) + recipe_file.write_text(str(recipe)) config_user_file = write_config_user_file(tmp_path) with arguments( diff --git a/tests/integration/test_provenance.py b/tests/integration/test_provenance.py deleted file mode 100644 index 630a7c0517..0000000000 --- a/tests/integration/test_provenance.py +++ /dev/null @@ -1,47 +0,0 @@ -from prov.constants import PROV_ATTR_GENERATED_ENTITY, PROV_ATTR_USED_ENTITY -from prov.model import ProvDerivation - - -def get_file_record(prov, filename): - records = prov.get_record('file:' + filename) - assert records - return records[0] - - -def check_provenance(product): - prov = product.provenance - - entity = get_file_record(prov, product.filename) - assert entity == product.entity - - check_product_wasderivedfrom(product) - - -def check_product_wasderivedfrom(product): - """Check that product.filename was derived from product._ancestors.""" - print('checking provenance of file', product.filename) - prov = product.provenance - - def get_identifier(filename): - record = get_file_record(prov, filename) - return {record.identifier} - - # Check that the input and output file records exist - identifier = get_identifier(product.filename) - - relations = {r for r in prov.records if isinstance(r, ProvDerivation)} - for ancestor in product._ancestors: - input_identifier = get_identifier(ancestor.filename) - for record in relations: - if input_identifier == record.get_attribute(PROV_ATTR_USED_ENTITY): - assert identifier == record.get_attribute( - PROV_ATTR_GENERATED_ENTITY) - break - else: - assert False - - if not product._ancestors: - assert 'tracking_id' in product.attributes - else: - for ancestor in product._ancestors: - check_product_wasderivedfrom(ancestor) diff --git a/tests/integration/test_recipe.py b/tests/integration/test_recipe.py deleted file mode 100644 index aeaaedabd5..0000000000 --- a/tests/integration/test_recipe.py +++ /dev/null @@ -1,730 +0,0 @@ -import os -from pprint import pformat -from textwrap import dedent - -import iris -import pytest -import yaml -from mock import create_autospec -from six import text_type - -import esmvaltool -from esmvaltool._recipe import TASKSEP, read_recipe_file -from esmvaltool._task import DiagnosticTask -from esmvaltool.diag_scripts.shared import ( - ProvenanceLogger, get_diagnostic_filename, get_plot_filename) -from esmvaltool.preprocessor import DEFAULT_ORDER, PreprocessingTask -from esmvaltool.preprocessor._io import concatenate_callback - -from .test_diagnostic_run import write_config_user_file -from .test_provenance import check_provenance - -MANDATORY_DATASET_KEYS = ( - 'cmor_table', - 'dataset', - 'diagnostic', - 'end_year', - 'filename', - 'frequency', - 'institute', - 'long_name', - 'mip', - 'modeling_realm', - 'preprocessor', - 'project', - 'short_name', - 'standard_name', - 'start_year', - 'units', -) - -MANDATORY_SCRIPT_SETTINGS_KEYS = ( - 'log_level', - 'script', - 'plot_dir', - 'run_dir', - 'work_dir', -) - -DEFAULT_PREPROCESSOR_STEPS = ( - 'cleanup', - 'cmor_check_data', - 'cmor_check_metadata', - 'concatenate', - 'extract_time', - 'fix_data', - 'fix_file', - 'fix_metadata', - 'load', - 'save', -) - - -@pytest.fixture -def config_user(tmp_path): - filename = write_config_user_file(tmp_path) - cfg = esmvaltool._config.read_config_user_file(filename, 'recipe_test') - cfg['synda_download'] = False - return cfg - - -def create_test_file(filename, tracking_id=None): - dirname = os.path.dirname(filename) - if not os.path.exists(dirname): - os.makedirs(dirname) - - attributes = {} - if tracking_id is not None: - attributes['tracking_id'] = tracking_id - cube = iris.cube.Cube([], attributes=attributes) - - iris.save(cube, filename) - - -@pytest.fixture -def patched_datafinder(tmp_path, monkeypatch): - def tracking_ids(i=0): - while True: - yield i - i += 1 - - tracking_id = tracking_ids() - - def find_files(_, filenames): - # Any occurrence of [something] in filename should have - # been replaced before this function is called. - for filename in filenames: - assert '[' not in filename - - filename = filenames[0] - filename = str(tmp_path / 'input' / filename) - filenames = [] - if filename.endswith('*.nc'): - filename = filename[:-len('*.nc')] - intervals = [ - '1990_1999', - '2000_2009', - '2010_2019', - ] - for interval in intervals: - filenames.append(filename + interval + '.nc') - else: - filenames.append(filename) - - for file in filenames: - create_test_file(file, next(tracking_id)) - return filenames - - monkeypatch.setattr(esmvaltool._data_finder, 'find_files', find_files) - - -DEFAULT_DOCUMENTATION = dedent(""" - documentation: - description: This is a test recipe. - authors: - - ande_bo - references: - - contact_authors - - acknow_project - projects: - - c3s-magic - """) - - -def get_recipe(tempdir, content, cfg): - """Save and load recipe content.""" - recipe_file = tempdir / 'recipe_test.yml' - # Add mandatory documentation section - content = text_type(DEFAULT_DOCUMENTATION + content) - recipe_file.write_text(content) - - recipe = read_recipe_file(str(recipe_file), cfg) - - return recipe - - -def test_simple_recipe(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - datasets: - - dataset: bcc-csm1-1 - - preprocessors: - preprocessor_name: - extract_levels: - levels: 85000 - scheme: nearest - - diagnostics: - diagnostic_name: - additional_datasets: - - dataset: GFDL-ESM2G - variables: - ta: - preprocessor: preprocessor_name - project: CMIP5 - mip: Amon - exp: historical - ensemble: r1i1p1 - start_year: 1999 - end_year: 2002 - additional_datasets: - - dataset: MPI-ESM-LR - scripts: - script_name: - script: examples/diagnostic.py - custom_setting: 1 - """) - - recipe = get_recipe(tmp_path, content, config_user) - raw = yaml.safe_load(content) - # Perform some sanity checks on recipe expansion/normalization - print("Expanded recipe:") - assert len(recipe.diagnostics) == len(raw['diagnostics']) - for diagnostic_name, diagnostic in recipe.diagnostics.items(): - print(pformat(diagnostic)) - source = raw['diagnostics'][diagnostic_name] - - # Check that 'variables' have been read and updated - assert len(diagnostic['preprocessor_output']) == len( - source['variables']) - for variable_name, variables in diagnostic[ - 'preprocessor_output'].items(): - assert len(variables) == 3 - for variable in variables: - for key in MANDATORY_DATASET_KEYS: - assert key in variable and variable[key] - assert variable_name == variable['short_name'] - - # Check that the correct tasks have been created - variables = recipe.diagnostics['diagnostic_name']['preprocessor_output'][ - 'ta'] - tasks = {t for task in recipe.tasks for t in task.flatten()} - preproc_tasks = {t for t in tasks if isinstance(t, PreprocessingTask)} - diagnostic_tasks = {t for t in tasks if isinstance(t, DiagnosticTask)} - - assert len(preproc_tasks) == 1 - for task in preproc_tasks: - print("Task", task.name) - assert task.order == list(DEFAULT_ORDER) - for product in task.products: - variable = [ - v for v in variables if v['filename'] == product.filename - ][0] - assert product.attributes == variable - for step in DEFAULT_PREPROCESSOR_STEPS: - assert step in product.settings - assert len(product.files) == 2 - - assert len(diagnostic_tasks) == 1 - for task in diagnostic_tasks: - print("Task", task.name) - assert task.ancestors == list(preproc_tasks) - assert task.script == 'examples/diagnostic.py' - for key in MANDATORY_SCRIPT_SETTINGS_KEYS: - assert key in task.settings and task.settings[key] - assert task.settings['custom_setting'] == 1 - - -def test_default_preprocessor(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - diagnostics: - diagnostic_name: - variables: - chl: - project: CMIP5 - mip: Oyr - exp: historical - start_year: 2000 - end_year: 2005 - ensemble: r1i1p1 - additional_datasets: - - {dataset: CanESM2} - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - assert len(recipe.tasks) == 1 - task = recipe.tasks.pop() - assert len(task.products) == 1 - product = task.products.pop() - preproc_dir = os.path.dirname(product.filename) - assert preproc_dir.startswith(str(tmp_path)) - - fix_dir = os.path.join( - preproc_dir, 'CMIP5_CanESM2_Oyr_historical_r1i1p1_chl_2000-2005_fixed') - defaults = { - 'load': { - 'callback': concatenate_callback, - }, - 'concatenate': {}, - 'fix_file': { - 'project': 'CMIP5', - 'dataset': 'CanESM2', - 'short_name': 'chl', - 'output_dir': fix_dir, - }, - 'fix_data': { - 'project': 'CMIP5', - 'dataset': 'CanESM2', - 'short_name': 'chl', - 'cmor_table': 'CMIP5', - 'mip': 'Oyr', - 'frequency': 'yr', - }, - 'fix_metadata': { - 'project': 'CMIP5', - 'dataset': 'CanESM2', - 'short_name': 'chl', - 'cmor_table': 'CMIP5', - 'mip': 'Oyr', - 'frequency': 'yr', - }, - 'extract_time': { - 'start_year': 2000, - 'end_year': 2006, - 'start_month': 1, - 'end_month': 1, - 'start_day': 1, - 'end_day': 1, - }, - 'cmor_check_metadata': { - 'cmor_table': 'CMIP5', - 'mip': 'Oyr', - 'short_name': 'chl', - 'frequency': 'yr', - }, - 'cmor_check_data': { - 'cmor_table': 'CMIP5', - 'mip': 'Oyr', - 'short_name': 'chl', - 'frequency': 'yr', - }, - 'cleanup': { - 'remove': [fix_dir] - }, - 'save': { - 'compress': False, - 'filename': product.filename, - } - } - assert product.settings == defaults - - -def test_empty_variable(tmp_path, patched_datafinder, config_user): - """Test that it is possible to specify all information in the dataset.""" - content = dedent(""" - diagnostics: - diagnostic_name: - additional_datasets: - - dataset: CanESM2 - project: CMIP5 - mip: Amon - exp: historical - start_year: 2000 - end_year: 2005 - ensemble: r1i1p1 - variables: - pr: - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - assert len(recipe.tasks) == 1 - task = recipe.tasks.pop() - assert len(task.products) == 1 - product = task.products.pop() - assert product.attributes['short_name'] == 'pr' - assert product.attributes['dataset'] == 'CanESM2' - - -def test_reference_dataset(tmp_path, patched_datafinder, config_user, - monkeypatch): - - levels = [100] - get_reference_levels = create_autospec( - esmvaltool._recipe.get_reference_levels, return_value=levels) - monkeypatch.setattr(esmvaltool._recipe, 'get_reference_levels', - get_reference_levels) - - content = dedent(""" - preprocessors: - test_from_reference: - regrid: - target_grid: reference_dataset - scheme: linear - extract_levels: - levels: reference_dataset - scheme: linear - test_from_cmor_table: - extract_levels: - levels: - cmor_table: CMIP6 - coordinate: alt16 - scheme: nearest - - diagnostics: - diagnostic_name: - variables: - ta: &var - preprocessor: test_from_reference - project: CMIP5 - mip: Amon - exp: historical - start_year: 2000 - end_year: 2005 - ensemble: r1i1p1 - additional_datasets: - - {dataset: GFDL-CM3} - - {dataset: MPI-ESM-LR} - reference_dataset: MPI-ESM-LR - ch4: - <<: *var - preprocessor: test_from_cmor_table - additional_datasets: - - {dataset: GFDL-CM3} - - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - assert len(recipe.tasks) == 2 - - # Check that the reference dataset has been used - task = next(t for t in recipe.tasks - if t.name == 'diagnostic_name' + TASKSEP + 'ta') - assert len(task.products) == 2 - product = next( - p for p in task.products if p.attributes['dataset'] == 'GFDL-CM3') - reference = next( - p for p in task.products if p.attributes['dataset'] == 'MPI-ESM-LR') - - assert product.settings['regrid']['target_grid'] == reference.files[0] - assert product.settings['extract_levels']['levels'] == levels - - fix_dir = os.path.splitext(reference.filename)[0] + '_fixed' - get_reference_levels.assert_called_once_with( - reference.files[0], - 'CMIP5', - 'MPI-ESM-LR', - 'ta', - fix_dir - ) - - assert 'regrid' not in reference.settings - assert 'extract_levels' not in reference.settings - - # Check that levels have been read from CMOR table - task = next(t for t in recipe.tasks - if t.name == 'diagnostic_name' + TASKSEP + 'ch4') - assert len(task.products) == 1 - product = next(iter(task.products)) - assert product.settings['extract_levels']['levels'] == [ - 0, - 250, - 750, - 1250, - 1750, - 2250, - 2750, - 3500, - 4500, - 6000, - 8000, - 10000, - 12000, - 14500, - 16000, - 18000, - ] - - -def test_custom_preproc_order(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - preprocessors: - default: &default - average_region: - coord1: longitude - coord2: latitude - multi_model_statistics: - span: overlap - statistics: [mean ] - custom: - custom_order: true - <<: *default - - diagnostics: - diagnostic_name: - variables: - chl_default: &chl - short_name: chl - preprocessor: default - project: CMIP5 - mip: Oyr - exp: historical - start_year: 2000 - end_year: 2005 - ensemble: r1i1p1 - additional_datasets: - - {dataset: CanESM2} - chl_custom: - <<: *chl - preprocessor: custom - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - assert len(recipe.tasks) == 2 - - default = next(t for t in recipe.tasks if tuple(t.order) == DEFAULT_ORDER) - custom = next(t for t in recipe.tasks if tuple(t.order) != DEFAULT_ORDER) - - assert custom.order.index('average_region') < custom.order.index( - 'multi_model_statistics') - assert default.order.index('average_region') > default.order.index( - 'multi_model_statistics') - - -def test_derive(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - diagnostics: - diagnostic_name: - variables: - toz: - project: CMIP5 - mip: Amon - exp: historical - start_year: 2000 - end_year: 2005 - derive: true - force_derivation: true - additional_datasets: - - {dataset: GFDL-CM3, ensemble: r1i1p1} - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - # Check generated tasks - assert len(recipe.tasks) == 1 - task = recipe.tasks.pop() - - assert task.name == 'diagnostic_name' + TASKSEP + 'toz' - assert len(task.ancestors) == 2 - assert 'diagnostic_name' + TASKSEP + 'toz_derive_input_ps' in [ - t.name for t in task.ancestors - ] - assert 'diagnostic_name' + TASKSEP + 'toz_derive_input_tro3' in [ - t.name for t in task.ancestors - ] - - # Check product content of tasks - assert len(task.products) == 1 - product = task.products.pop() - assert 'derive' in product.settings - assert product.attributes['short_name'] == 'toz' - assert product.files - - ps_product = next(p for a in task.ancestors for p in a.products - if p.attributes['short_name'] == 'ps') - tro3_product = next(p for a in task.ancestors for p in a.products - if p.attributes['short_name'] == 'tro3') - assert ps_product.filename in product.files - assert tro3_product.filename in product.files - - -def test_derive_not_needed(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - diagnostics: - diagnostic_name: - variables: - toz: - project: CMIP5 - mip: Amon - exp: historical - start_year: 2000 - end_year: 2005 - derive: true - force_derivation: false - additional_datasets: - - {dataset: GFDL-CM3, ensemble: r1i1p1} - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - # Check generated tasks - assert len(recipe.tasks) == 1 - task = recipe.tasks.pop() - - assert task.name == 'diagnostic_name/toz' - assert len(task.ancestors) == 1 - ancestor = [t for t in task.ancestors][0] - assert ancestor.name == 'diagnostic_name/toz_derive_input_toz' - - # Check product content of tasks - assert len(task.products) == 1 - product = task.products.pop() - assert product.attributes['short_name'] == 'toz' - assert 'derive' in product.settings - - assert len(ancestor.products) == 1 - ancestor_product = ancestor.products.pop() - assert ancestor_product.filename in product.files - assert ancestor_product.attributes['short_name'] == 'toz' - assert 'derive' not in ancestor_product.settings - - # Check that fixes are applied just once - fixes = ('fix_file', 'fix_metadata', 'fix_data') - for fix in fixes: - assert fix in ancestor_product.settings - assert fix not in product.settings - - -def test_derive_with_fx(tmp_path, patched_datafinder, config_user): - - content = dedent(""" - diagnostics: - diagnostic_name: - variables: - nbp_grid: - project: CMIP5 - mip: Lmon - exp: historical - start_year: 2000 - end_year: 2005 - derive: true - force_derivation: true - additional_datasets: - - {dataset: GFDL-CM3, ensemble: r1i1p1} - scripts: null - """) - - recipe = get_recipe(tmp_path, content, config_user) - - # Check generated tasks - assert len(recipe.tasks) == 1 - task = recipe.tasks.pop() - - assert task.name == 'diagnostic_name' + TASKSEP + 'nbp_grid' - assert len(task.ancestors) == 1 - ancestor = [t for t in task.ancestors][0] - assert ancestor.name == 'diagnostic_name/nbp_grid_derive_input_nbp' - - # Check product content of tasks - assert len(task.products) == 1 - product = task.products.pop() - assert 'derive' in product.settings - assert product.attributes['short_name'] == 'nbp_grid' - assert 'fx_files' in product.settings['derive'] - assert 'sftlf' in product.settings['derive']['fx_files'] - assert product.settings['derive']['fx_files']['sftlf'] is not None - - assert len(ancestor.products) == 1 - ancestor_product = ancestor.products.pop() - assert ancestor_product.filename in product.files - assert ancestor_product.attributes['short_name'] == 'nbp' - - -def test_diagnostic_task_provenance(tmp_path, patched_datafinder, config_user): - - script = tmp_path / 'diagnostic.py' - with script.open('w'): - pass - - content = dedent(""" - diagnostics: - diagnostic_name: - themes: - - phys - realms: - - atmos - variables: - chl: - project: CMIP5 - mip: Oyr - exp: historical - start_year: 2000 - end_year: 2005 - ensemble: r1i1p1 - additional_datasets: - - dataset: CanESM2 - scripts: - script_name: - script: {script} - """.format(script=script)) - - recipe = get_recipe(tmp_path, content, config_user) - diagnostic_task = recipe.tasks.pop() - - # Simulate Python diagnostic run - cfg = diagnostic_task.settings - input_files = [ - p.filename for a in diagnostic_task.ancestors for p in a.products - ] - record = { - 'caption': 'Test plot', - 'plot_file': get_plot_filename('test', cfg), - 'statistics': ['mean', 'var'], - 'domains': ['trop', 'et'], - 'plot_type': 'zonal', - 'authors': ['ande_bo'], - 'references': ['acknow_project'], - 'ancestors': input_files, - } - - diagnostic_file = get_diagnostic_filename('test', cfg) - create_test_file(diagnostic_file) - with ProvenanceLogger(cfg) as provenance_logger: - provenance_logger.log(diagnostic_file, record) - - diagnostic_task._collect_provenance() - # Done simulating diagnostic run - - # Check resulting product - product = diagnostic_task.products.pop() - check_provenance(product) - for key in ('caption', 'plot_file'): - assert product.attributes[key] == record[key] - assert product.entity.get_attribute('attribute:' + - key).pop() == record[key] - - # Check that diagnostic script tags have been added - with open( - os.path.join( - os.path.dirname(esmvaltool.__file__), - 'config-references.yml')) as file: - tags = yaml.safe_load(file) - for key in ('statistics', 'domains', 'authors', 'references'): - assert product.attributes[key] == tuple( - tags[key][k] for k in record[key]) - - # Check that recipe diagnostic tags have been added - src = yaml.safe_load(DEFAULT_DOCUMENTATION + content) - for key in ('realms', 'themes'): - value = src['diagnostics']['diagnostic_name'][key] - assert product.attributes[key] == tuple(tags[key][k] for k in value) - - # Check that recipe tags have been added - recipe_record = product.provenance.get_record('recipe:recipe_test.yml') - assert len(recipe_record) == 1 - for key in ('description', 'references'): - value = src['documentation'][key] - if key == 'references': - value = ', '.join(tags[key][k] for k in value) - assert recipe_record[0].get_attribute('attribute:' + - key).pop() == value - - # Test that provenance was saved to netcdf, xml and svg plot - cube = iris.load(product.filename)[0] - assert 'provenance' in cube.attributes - prefix = os.path.splitext(product.filename)[0] + '_provenance' - assert os.path.exists(prefix + '.xml') - assert os.path.exists(prefix + '.svg') diff --git a/tests/system/data_simulator.py b/tests/system/data_simulator.py index 3efb5a79a0..07cd395cd5 100644 --- a/tests/system/data_simulator.py +++ b/tests/system/data_simulator.py @@ -6,13 +6,13 @@ import numpy as np -from esmvaltool._config import read_config_user_file -from esmvaltool._recipe import read_recipe_file +from esmvalcore._config import read_config_user_file +from esmvalcore._recipe import read_recipe_file def get_input_filename(variable, rootpath, drs): """Get a valid input filename.""" - # TODO: implement this according to esmvaltool._data_finder.py + # TODO: implement this according to esmvalcore._data_finder.py # or patch get_input_filelist there. return tempfile.NamedTemporaryFile().name + '.nc' diff --git a/tests/unit/cmor/__init__.py b/tests/unit/cmor/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/cmor/test_cmor_check.py b/tests/unit/cmor/test_cmor_check.py deleted file mode 100644 index 010b144d54..0000000000 --- a/tests/unit/cmor/test_cmor_check.py +++ /dev/null @@ -1,605 +0,0 @@ -"""Unit tests for the CMORCheck class.""" - -import sys -import unittest -from io import StringIO - -import iris -import iris.coord_categorisation -import iris.coords -import iris.util -import numpy -from cf_units import Unit - -from esmvaltool.cmor.check import CMORCheck, CMORCheckError - - -class VariableInfoMock: - """Mock for the variables defintion""" - - def __init__(self): - self.table_type = 'CMIP5' - self.short_name = 'short_name' - self.standard_name = 'age_of_sea_ice' # Iris don't accept fakes ... - self.long_name = 'Long Name' - self.units = 'years' # ... nor in the units - self.valid_min = '0' - self.valid_max = '100' - self.frequency = 'day' - self.positive = '' - - generic_level = CoordinateInfoMock('depth') - generic_level.generic_level = True - generic_level.axis = 'Z' - - requested = CoordinateInfoMock('air_pressure') - requested.requested = [str(number) for number in range(20)] - - self.coordinates = { - 'time': CoordinateInfoMock('time'), - 'lat': CoordinateInfoMock('lat'), - 'lon': CoordinateInfoMock('lon'), - 'air_pressure': requested, - 'depth': generic_level - } - - -class CoordinateInfoMock: - """Mock for the coordinates info""" - - def __init__(self, name): - self.name = name - self.generic_level = False - - self.axis = "" - self.value = "" - standard_names = {'lat': 'latitude', 'lon': 'longitude'} - if name in standard_names: - self.standard_name = standard_names[name] - else: - self.standard_name = name - self.long_name = "Long name" - self.out_name = self.name - self.var_name = self.name - - units = { - 'lat': 'degrees_north', - 'lon': 'degrees_east', - 'time': 'days since 1950-01-01 00:00:00' - } - if name in units: - self.units = units[name] - else: - self.units = "units" - - self.stored_direction = "increasing" - self.requested = [] - - valid_limits = {'lat': ('-90', '90'), 'lon': ('0', '360')} - if name in valid_limits: - self.valid_min = valid_limits[name][0] - self.valid_max = valid_limits[name][1] - else: - self.valid_min = "" - self.valid_max = "" - - -class TestCMORCheck(unittest.TestCase): - """Test CMORCheck class""" - - def setUp(self): - self.var_info = VariableInfoMock() - self.cube = self.get_cube(self.var_info) - - def test_report_error(self): - """Test report error function""" - checker = CMORCheck(self.cube, self.var_info) - self.assertFalse(checker.has_errors()) - checker.report_error('New error: {}', 'something failed') - self.assertTrue(checker.has_errors()) - - def test_fail_on_error(self): - """Test exception is raised if fail_on_error is activated""" - checker = CMORCheck(self.cube, self.var_info, fail_on_error=True) - with self.assertRaises(CMORCheckError): - checker.report_error('New error: {}', 'something failed') - - def test_report_warning(self): - """Test report warning function""" - checker = CMORCheck(self.cube, self.var_info) - self.assertFalse(checker.has_errors()) - checker.report_warning('New error: {}', 'something failed') - self.assertTrue(checker.has_warnings()) - - def test_warning_fail_on_error(self): - """Test report warning function with fail_on_error""" - checker = CMORCheck(self.cube, self.var_info, fail_on_error=True) - stdout = sys.stdout - sys.stdout = StringIO() - checker.report_warning('New error: {}', 'something failed') - output = sys.stdout.getvalue().strip() - sys.stdout = stdout - self.assertEqual(output, 'WARNING: New error: something failed') - - def test_check(self): - """Test checks succeeds for a good cube""" - self._check_cube() - - def _check_cube(self, automatic_fixes=False, frequency=None): - """Apply checks and optionally automatic fixes to self.cube.""" - - def checker(cube): - return CMORCheck( - cube, - self.var_info, - automatic_fixes=automatic_fixes, - frequency=frequency) - - self.cube = checker(self.cube).check_metadata() - self.cube = checker(self.cube).check_data() - - def test_check_with_month_number(self): - """Test checks succeeds for a good cube with month number""" - iris.coord_categorisation.add_month_number(self.cube, 'time') - self._check_cube() - - def test_check_with_day_of_month(self): - """Test checks succeeds for a good cube with day of month""" - iris.coord_categorisation.add_day_of_month(self.cube, 'time') - self._check_cube() - - def test_check_with_day_of_year(self): - """Test checks succeeds for a good cube with day of year""" - iris.coord_categorisation.add_day_of_year(self.cube, 'time') - self._check_cube() - - def test_check_with_year(self): - """Test checks succeeds for a good cube with year""" - iris.coord_categorisation.add_year(self.cube, 'time') - self._check_cube() - - def test_check_with_unit_conversion(self): - """Test check succeeds for a good cube requiring unit conversion""" - self.cube.units = 'days' - self._check_cube() - - def test_check_with_psu_units(self): - """Test check succeeds for a good cube with psu units""" - self.var_info.units = 'psu' - self.cube = self.get_cube(self.var_info) - self._check_cube(automatic_fixes=True) - - def test_check_with_positive(self): - """Check variable with positive attribute""" - self.var_info.positive = 'up' - self.cube = self.get_cube(self.var_info) - self._check_cube() - - def test_check_with_no_positive_CMIP5(self): - """Check CMIP5 variable with no positive attribute report warning""" - self.cube = self.get_cube(self.var_info) - self.var_info.positive = 'up' - self._check_warnings_on_metadata() - - def test_check_with_no_positive_CMIP6(self): - """Check CMIP6 variable with no positive attribute report warning.""" - self.cube = self.get_cube(self.var_info) - self.var_info.positive = 'up' - self.var_info.table_type = 'CMIP6' - self._check_warnings_on_metadata() - - def test_invalid_rank(self): - """Test check fails in metadata step when rank is not correct""" - lat = iris.coords.AuxCoord.from_coord(self.cube.coord('latitude')) - self.cube.remove_coord('latitude') - self.cube.add_aux_coord(lat, self.cube.coord_dims('longitude')) - self._check_fails_in_metadata() - - def test_rank_with_aux_coords(self): - """Check succeeds even if a required coordinate is an aux coord""" - iris.util.demote_dim_coord_to_aux_coord(self.cube, 'latitude') - self._check_cube() - - def test_rank_with_scalar_coords(self): - """Check succeeds even if a required coordinate is a scalar coord""" - self.cube = self.cube.extract( - iris.Constraint(time=self.cube.coord('time').cell(0))) - self._check_cube() - - def test_rank_unestructured_grid(self): - """Check succeeds even if two required coordinates share a dimension""" - self.cube = self.cube.extract( - iris.Constraint(latitude=self.cube.coord('latitude').points[0])) - self.cube.remove_coord('latitude') - iris.util.demote_dim_coord_to_aux_coord(self.cube, 'longitude') - new_lat = self.cube.coord('longitude').copy() - new_lat.var_name = 'lat' - new_lat.standard_name = 'latitude' - new_lat.long_name = 'Latitude' - self.cube.add_aux_coord(new_lat, 1) - self._check_cube() - - def _check_fails_in_metadata(self, automatic_fixes=False, frequency=None): - checker = CMORCheck( - self.cube, - self.var_info, - automatic_fixes=automatic_fixes, - frequency=frequency) - with self.assertRaises(CMORCheckError): - checker.check_metadata() - - def _check_warnings_on_metadata(self): - checker = CMORCheck(self.cube, self.var_info) - checker.check_metadata() - self.assertTrue(checker.has_warnings()) - - def test_non_requested(self): - """ - Warning if requested values are not present - - Check issue a warning if a values requested - for a coordinate are not correct in the metadata step - """ - coord = self.cube.coord('air_pressure') - values = numpy.linspace(0, 40, len(coord.points)) - self._update_coordinate_values(self.cube, coord, values) - checker = CMORCheck(self.cube, self.var_info) - checker.check_metadata() - self.assertTrue(checker.has_warnings()) - - def test_non_increasing(self): - """Fail in metadata if increasing coordinate is decreasing""" - coord = self.cube.coord('latitude') - values = numpy.linspace(coord.points[-1], coord.points[0], - len(coord.points)) - self._update_coordinate_values(self.cube, coord, values) - self._check_fails_in_metadata() - - def test_non_decreasing(self): - """Fail in metadata if decreasing coordinate is increasing""" - self.var_info.coordinates['lat'].stored_direction = 'decreasing' - self._check_fails_in_metadata() - - def test_non_decreasing_fix(self): - """Check automatic fix for non decreasing coordinate""" - self.cube.data[0, 0, 0, 0, 0] = 70 - self.var_info.coordinates['lat'].stored_direction = 'decreasing' - self._check_cube(automatic_fixes=True) - self._check_cube() - index = [0, 0, 0, 0, 0] - index[self.cube.coord_dims('latitude')[0]] = -1 - self.assertEqual(self.cube.data.item(tuple(index)), 70) - self.assertEqual(self.cube.data[0, 0, 0, 0, 0], 50) - cube_points = self.cube.coord('latitude').points - reference = numpy.linspace(90, -90, 20, endpoint=True) - for index in range(20): - self.assertTrue( - iris.util.approx_equal(cube_points[index], reference[index])) - - def test_not_correct_lons(self): - """Fail if longitudes are not correct in metadata step""" - self.cube = self.cube.intersection(longitude=(-180., 180.)) - self._check_fails_in_metadata() - - def test_lons_automatic_fix(self): - """Test automatic fixes for bad longitudes""" - self.cube = self.cube.intersection(longitude=(-180., 180.)) - self._check_cube(automatic_fixes=True) - - def test_high_lons_automatic_fix(self): - """Test automatic fixes for high longitudes""" - self.cube = self.cube.intersection(longitude=(180., 520.)) - self._check_cube(automatic_fixes=True) - - def test_not_valid_min(self): - """Fail if coordinate values below valid_min""" - coord = self.cube.coord('latitude') - values = numpy.linspace(coord.points[0] - 1, coord.points[-1], - len(coord.points)) - self._update_coordinate_values(self.cube, coord, values) - self._check_fails_in_metadata() - - def test_not_valid_max(self): - """Fail if coordinate values above valid_max""" - coord = self.cube.coord('latitude') - values = numpy.linspace(coord.points[0], coord.points[-1] + 1, - len(coord.points)) - self._update_coordinate_values(self.cube, coord, values) - self._check_fails_in_metadata() - - @staticmethod - def _update_coordinate_values(cube, coord, values): - [dimension] = cube.coord_dims(coord) - cube.remove_coord(coord) - new_coord = iris.coords.DimCoord( - values, - standard_name=coord.standard_name, - long_name=coord.long_name, - var_name=coord.var_name, - units=coord.units) - cube.add_dim_coord(new_coord, dimension) - - def test_bad_units(self): - """Fail if coordinates have bad units""" - self.cube.coord('latitude').units = 'degrees_n' - self._check_fails_in_metadata() - - def test_units_automatic_fix(self): - """Test automatic fix for bad coordinate units""" - self.cube.coord('latitude').units = 'degrees_n' - self._check_cube(automatic_fixes=True) - - def test_units_automatic_fix_failed(self): - """Test automatic fix fail for incompatible coordinate units""" - self.cube.coord('latitude').units = 'degC' - self._check_fails_in_metadata(automatic_fixes=True) - - def test_bad_time(self): - """Fail if time have bad units""" - self.cube.coord('time').units = 'days' - self._check_fails_in_metadata() - - def test_time_automatic_fix(self): - """Test automatic fix for time units""" - self.cube.coord('time').units = 'days since 1860-1-1 00:00:00' - self._check_cube() - assert (self.cube.coord('time').units.origin == - 'days since 1950-1-1 00:00:00') - - def test_time_automatic_fix_failed(self): - """Test automatic fix fail for incompatible time units""" - self.cube.coord('time').units = 'K' - self._check_fails_in_metadata(automatic_fixes=True) - - def test_bad_standard_name(self): - """Fail if coordinates have bad standard names at metadata step""" - self.cube.coord('time').standard_name = 'region' - self._check_fails_in_metadata() - - def test_bad_out_name(self): - """Fail if coordinates have bad short names at metadata step""" - self.cube.coord('latitude').var_name = 'region' - self._check_fails_in_metadata() - - def test_bad_data_units(self): - """Fail if data has bad units at metadata step""" - self.cube.units = 'hPa' - self._check_fails_in_metadata() - - def test_bad_data_standard_name(self): - """Fail if data have bad standard_name at metadata step""" - self.cube.standard_name = 'wind_speed' - self._check_fails_in_metadata() - - def test_bad_positive(self): - """Fail if positive value is incorrect at metadata step""" - self.cube.attributes['positive'] = 'up' - self.var_info.positive = 'down' - self._check_fails_in_metadata() - - def test_bad_standard_name_genlevel(self): - """Check if generic level has a different""" - self.cube.coord('depth').standard_name = None - self._check_cube() - - def test_frequency_month_not_same_day(self): - """Fail at metadata if frequency (day) not matches data frequency""" - self.cube = self.get_cube(self.var_info, frequency='mon') - time = self.cube.coord('time') - points = numpy.array(time.points) - points[1] = points[1] + 12 - dims = self.cube.coord_dims(time) - self.cube.remove_coord(time) - self.cube.add_dim_coord(time.copy(points), dims) - self._check_cube(frequency='mon') - - def test_bad_frequency_day(self): - """Fail at metadata if frequency (day) not matches data frequency""" - self.cube = self.get_cube(self.var_info, frequency='mon') - self._check_fails_in_metadata(frequency='day') - - def test_bad_frequency_subhr(self): - """Fail at metadata if frequency (subhr) not matches data frequency""" - self._check_fails_in_metadata(frequency='subhr') - - def test_bad_frequency_dec(self): - """Fail at metadata if frequency (dec) not matches data frequency""" - self._check_fails_in_metadata(frequency='d') - - def test_bad_frequency_yr(self): - """Fail at metadata if frequency (yr) not matches data frequency""" - self._check_fails_in_metadata(frequency='yr') - - def test_bad_frequency_mon(self): - """Fail at metadata if frequency (mon) not matches data frequency""" - self._check_fails_in_metadata(frequency='mon') - - def test_bad_frequency_hourly(self): - """Fail at metadata if frequency (3hr) not matches data frequency""" - self._check_fails_in_metadata(frequency='3hr') - - def test_frequency_not_supported(self): - """Fail at metadata if frequency is not supported""" - self._check_fails_in_metadata(frequency='wrong_freq') - - def _check_fails_on_data(self): - checker = CMORCheck(self.cube, self.var_info) - checker.check_metadata() - with self.assertRaises(CMORCheckError): - checker.check_data() - - def _check_warnings_on_data(self): - checker = CMORCheck(self.cube, self.var_info) - checker.check_metadata() - checker.check_data() - self.assertTrue(checker.has_warnings()) - - def get_cube(self, - var_info, - set_time_units="days since 1850-1-1 00:00:00", - frequency=None): - """ - Create a cube based on a specification - - Parameters - ---------- - var_info: - variable specification - set_time_units: str - units for the time coordinate - frequency: None or str - frequency of the generated data - - Returns - ------- - iris.cube.Cube - - """ - coords = [] - scalar_coords = [] - index = 0 - if not frequency: - frequency = var_info.frequency - for dim_spec in var_info.coordinates.values(): - coord = self._create_coord_from_spec(dim_spec, set_time_units, - frequency) - if isinstance(coord, iris.coords.DimCoord): - coords.append((coord, index)) - index += 1 - elif isinstance(coord, iris.coords.AuxCoord): - scalar_coords.append(coord) - - if var_info.valid_min: - valid_min = float(var_info.valid_min) - else: - valid_min = 0 - - if var_info.valid_max: - valid_max = float(var_info.valid_max) - else: - valid_max = valid_min + 100 - - var_data = (numpy.ones(len(coords) * [20], 'f') * - (valid_min + (valid_max - valid_min) / 2)) - - if var_info.units == 'psu': - units = None - attributes = {'invalid_units': 'psu'} - else: - units = var_info.units - attributes = None - - cube = iris.cube.Cube( - var_data, - standard_name=var_info.standard_name, - long_name=var_info.long_name, - var_name=var_info.short_name, - units=units, - attributes=attributes, - ) - if var_info.positive: - cube.attributes['positive'] = var_info.positive - - for coord, i in coords: - cube.add_dim_coord(coord, i) - - for coord in scalar_coords: - cube.add_aux_coord(coord) - - return cube - - @staticmethod - def _construct_scalar_coord(coord_spec): - return iris.coords.AuxCoord( - coord_spec.value, - standard_name=coord_spec.standard_name, - long_name=coord_spec.long_name, - var_name=coord_spec.out_name, - units=coord_spec.units, - attributes=None) - - def _create_coord_from_spec(self, coord_spec, set_time_units, frequency): - if coord_spec.units.startswith("days since "): - coord_spec.units = set_time_units - coord_spec.frequency = frequency - - if coord_spec.value: - return self._construct_scalar_coord(coord_spec) - - return self._construct_array_coord(coord_spec) - - def _construct_array_coord(self, dim_spec): - if dim_spec.units.startswith("days since "): - values = self._get_time_values(dim_spec) - unit = Unit(dim_spec.units, calendar='360_day') - else: - values = self._get_values(dim_spec) - unit = Unit(dim_spec.units) - # Set up attributes dictionary - coord_atts = {'stored_direction': dim_spec.stored_direction} - coord = iris.coords.DimCoord( - values, - standard_name=dim_spec.standard_name, - long_name=dim_spec.long_name, - var_name=dim_spec.out_name, - attributes=coord_atts, - units=unit, - ) - return coord - - @staticmethod - def _get_values(dim_spec): - valid_min = dim_spec.valid_min - if valid_min: - valid_min = float(valid_min) - else: - valid_min = 0.0 - valid_max = dim_spec.valid_max - if valid_max: - valid_max = float(valid_max) - else: - valid_max = 100.0 - decreasing = dim_spec.stored_direction == 'decreasing' - endpoint = not dim_spec.standard_name == 'longitude' - if decreasing: - values = numpy.linspace( - valid_max, valid_min, 20, endpoint=endpoint) - else: - values = numpy.linspace( - valid_min, valid_max, 20, endpoint=endpoint) - values = numpy.array(values) - if dim_spec.requested: - requested = [float(val) for val in dim_spec.requested] - requested.sort(reverse=decreasing) - for j, request in enumerate(requested): - values[j] = request - if decreasing: - extra_values = numpy.linspace( - len(requested), valid_min, 20 - len(requested)) - else: - extra_values = numpy.linspace( - len(requested), valid_max, 20 - len(requested)) - - for j in range(len(requested), 20): - values[j] = extra_values[j - len(requested)] - - return values - - @staticmethod - def _get_time_values(dim_spec): - frequency = dim_spec.frequency - if frequency == 'mon': - delta = 30 - elif frequency == 'day': - delta = 1 - elif frequency.ends_with('hr'): - delta = float(frequency[:-2]) / 24 - else: - raise Exception('Frequency {} not supported'.format(frequency)) - start = 0 - end = start + delta * 20 - return numpy.arange(start, end, step=delta) - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/unit/cmor/test_fix.py b/tests/unit/cmor/test_fix.py deleted file mode 100644 index 1e9832ea50..0000000000 --- a/tests/unit/cmor/test_fix.py +++ /dev/null @@ -1,172 +0,0 @@ -"""Unit tests for the variable_info module.""" - -import unittest - -import mock - -from esmvaltool.cmor.fix import Fix, fix_data, fix_file, fix_metadata - - -class TestFixFile(unittest.TestCase): - """Fix file tests""" - - def setUp(self): - """Prepare for testing""" - self.filename = 'filename' - self.mock_fix = mock.Mock() - self.mock_fix.fix_file.return_value = 'new_filename' - - def test_fix(self): - """Check that the returned fix is applied""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', - return_value=[self.mock_fix]): - file_returned = fix_file('filename', 'short_name', 'project', - 'model', 'output_dir') - self.assertNotEqual(file_returned, self.filename) - self.assertEqual(file_returned, 'new_filename') - - def test_nofix(self): - """Check that the same file is returned if no fix is available""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', return_value=[]): - file_returned = fix_file('filename', 'short_name', 'project', - 'model', 'output_dir') - self.assertEqual(file_returned, self.filename) - - -class TestGetCube(unittest.TestCase): - """Test get cube by var_name method""" - - def setUp(self): - """Prepare for testing""" - self.cube_1 = mock.Mock() - self.cube_1.var_name = 'cube1' - self.cube_2 = mock.Mock() - self.cube_2.var_name = 'cube2' - self.cubes = [self.cube_1, self.cube_2] - self.fix = Fix() - - def test_get_first_cube(self): - """Test selecting first cube""" - self.assertIs(self.cube_1, - self.fix.get_cube_from_list(self.cubes, "cube1")) - - def test_get_second_cube(self): - """Test selecting second cube.""" - self.assertIs(self.cube_2, - self.fix.get_cube_from_list(self.cubes, "cube2")) - - def test_get_default_raises(self): - """Check that the default raises (Fix is not a cube).""" - with self.assertRaises(Exception): - self.fix.get_cube_from_list(self.cubes) - - def test_get_default(self): - """Check that the default raises (Fix is a cube).""" - self.cube_1.var_name = 'Fix' - self.assertIs(self.cube_1, self.fix.get_cube_from_list(self.cubes)) - - -class TestFixMetadata(unittest.TestCase): - """Fix metadata tests.""" - - def setUp(self): - """Prepare for testing.""" - self.cube = mock.Mock() - self.cube.attributes = {'source_file': 'source_file'} - self.fixed_cube = mock.Mock() - self.fixed_cube.attributes = {'source_file': 'source_file'} - self.mock_fix = mock.Mock() - self.mock_fix.fix_metadata.return_value = [self.fixed_cube] - - def test_fix(self): - """Check that the returned fix is applied.""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', - return_value=[self.mock_fix]): - cube_returned = fix_metadata([self.cube], 'short_name', 'project', - 'model')[0] - self.assertTrue(cube_returned is not self.cube) - self.assertTrue(cube_returned is self.fixed_cube) - - def test_nofix(self): - """Check that the same cube is returned if no fix is available.""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', return_value=[]): - cube_returned = fix_metadata([self.cube], 'short_name', 'project', - 'model')[0] - self.assertTrue(cube_returned is self.cube) - self.assertTrue(cube_returned is not self.fixed_cube) - - def test_cmor_checker_called(self): - """Check that the cmor check is done.""" - checker = mock.Mock() - checker.return_value = mock.Mock() - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', return_value=[]): - with mock.patch( - 'esmvaltool.cmor.fix._get_cmor_checker', - return_value=checker) as get_mock: - fix_metadata([self.cube], 'short_name', 'project', 'model', - 'cmor_table', 'mip', 'frequency') - get_mock.assert_called_once_with( - automatic_fixes=True, - fail_on_error=False, - frequency='frequency', - mip='mip', - short_name='short_name', - table='cmor_table') - checker.assert_called_once_with(self.cube) - checker.return_value.check_metadata.assert_called_once_with() - - -class TestFixData(unittest.TestCase): - """Fix data tests.""" - - def setUp(self): - """Prepare for testing.""" - self.cube = mock.Mock() - self.fixed_cube = mock.Mock() - self.mock_fix = mock.Mock() - self.mock_fix.fix_data.return_value = self.fixed_cube - - def test_fix(self): - """Check that the returned fix is applied.""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', - return_value=[self.mock_fix]): - cube_returned = fix_data(self.cube, 'short_name', 'project', - 'model') - self.assertTrue(cube_returned is not self.cube) - self.assertTrue(cube_returned is self.fixed_cube) - - def test_nofix(self): - """Check that the same cube is returned if no fix is available.""" - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', return_value=[]): - cube_returned = fix_data(self.cube, 'short_name', 'project', - 'model') - self.assertTrue(cube_returned is self.cube) - self.assertTrue(cube_returned is not self.fixed_cube) - - def test_cmor_checker_called(self): - """Check that the cmor check is done""" - checker = mock.Mock() - checker.return_value = mock.Mock() - with mock.patch( - 'esmvaltool.cmor._fixes.fix.Fix.get_fixes', return_value=[]): - with mock.patch( - 'esmvaltool.cmor.fix._get_cmor_checker', - return_value=checker) as get_mock: - fix_data(self.cube, 'short_name', 'project', 'model', - 'cmor_table', 'mip', 'frequency') - get_mock.assert_called_once_with( - automatic_fixes=True, - fail_on_error=False, - frequency='frequency', - mip='mip', - short_name='short_name', - table='cmor_table') - checker.assert_called_once_with(self.cube) - checker.return_value.check_data.assert_called_once_with() diff --git a/tests/unit/cmor/test_table.py b/tests/unit/cmor/test_table.py deleted file mode 100644 index db9b57e5bf..0000000000 --- a/tests/unit/cmor/test_table.py +++ /dev/null @@ -1,129 +0,0 @@ -"""Unit tests for the variable_info module.""" - -import unittest - -from esmvaltool.cmor.table import CoordinateInfo, VariableInfo - - -class TestVariableInfo(unittest.TestCase): - """Variable info tests.""" - - def setUp(self): - """Prepare for testing.""" - self.value = 'value' - - def test_constructor(self): - """Test basic constructor.""" - info = VariableInfo('table_type', 'var') - self.assertEqual('table_type', info.table_type) - self.assertEqual('var', info.short_name) - - def test_read_empty_dictionary(self): - """Test read empty dict.""" - info = VariableInfo('table_type', 'var') - info.read_json({}) - self.assertEqual('', info.standard_name) - - def test_read_standard_name(self): - """Test standard_name.""" - info = VariableInfo('table_type', 'var') - info.read_json({'standard_name': self.value}) - self.assertEqual(info.standard_name, self.value) - - def test_read_long_name(self): - """Test long_name.""" - info = VariableInfo('table_type', 'var') - info.read_json({'long_name': self.value}) - self.assertEqual(info.long_name, self.value) - - def test_read_units(self): - """Test units.""" - info = VariableInfo('table_type', 'var') - info.read_json({'units': self.value}) - self.assertEqual(info.units, self.value) - - def test_read_valid_min(self): - """Test valid_min.""" - info = VariableInfo('table_type', 'var') - info.read_json({'valid_min': self.value}) - self.assertEqual(info.valid_min, self.value) - - def test_read_valid_max(self): - """Test valid_max.""" - info = VariableInfo('table_type', 'var') - info.read_json({'valid_max': self.value}) - self.assertEqual(info.valid_max, self.value) - - def test_read_positive(self): - """Test positive.""" - info = VariableInfo('table_type', 'var') - info.read_json({'positive': self.value}) - self.assertEqual(info.positive, self.value) - - -class TestCoordinateInfo(unittest.TestCase): - """Tests for CoordinataInfo.""" - - def setUp(self): - """Prepare for testing.""" - self.value = 'value' - - def test_constructor(self): - """Test constructor.""" - info = CoordinateInfo('var') - self.assertEqual('var', info.name) - - def test_read_empty_dictionary(self): - """Test empty dict.""" - info = CoordinateInfo('var') - info.read_json({}) - self.assertEqual('', info.standard_name) - - def test_read_standard_name(self): - """Test standard_name.""" - info = CoordinateInfo('var') - info.read_json({'standard_name': self.value}) - self.assertEqual(info.standard_name, self.value) - - def test_read_var_name(self): - """Test var_name.""" - info = CoordinateInfo('var') - info.read_json({'var_name': self.value}) - self.assertEqual(info.var_name, self.value) - - def test_read_out_name(self): - """Test out_name.""" - info = CoordinateInfo('var') - info.read_json({'out_name': self.value}) - self.assertEqual(info.out_name, self.value) - - def test_read_units(self): - """Test units.""" - info = CoordinateInfo('var') - info.read_json({'units': self.value}) - self.assertEqual(info.units, self.value) - - def test_read_valid_min(self): - """Test valid_min.""" - info = CoordinateInfo('var') - info.read_json({'valid_min': self.value}) - self.assertEqual(info.valid_min, self.value) - - def test_read_valid_max(self): - """Test valid_max.""" - info = CoordinateInfo('var') - info.read_json({'valid_max': self.value}) - self.assertEqual(info.valid_max, self.value) - - def test_read_value(self): - """Test value.""" - info = CoordinateInfo('var') - info.read_json({'value': self.value}) - self.assertEqual(info.value, self.value) - - def test_read_requested(self): - """Test requested.""" - value = ['value1', 'value2'] - info = CoordinateInfo('var') - info.read_json({'requested': value}) - self.assertEqual(info.requested, value) diff --git a/tests/unit/data_finder/test_get_start_end_year.py b/tests/unit/data_finder/test_get_start_end_year.py deleted file mode 100644 index 348018c4e5..0000000000 --- a/tests/unit/data_finder/test_get_start_end_year.py +++ /dev/null @@ -1,76 +0,0 @@ -"""Unit tests for :func:`esmvaltool._data_finder.regrid._stock_cube`""" - -import unittest - -from esmvaltool._data_finder import get_start_end_year - - -class TestGetStartEndYear(unittest.TestCase): - """Tests for get_start_end_year function""" - - def test_years_at_the_end(self): - """Test parse files with two years at the end""" - start, end = get_start_end_year('var_whatever_1980-1981') - self.assertEqual(1980, start) - self.assertEqual(1981, end) - - def test_one_year_at_the_end(self): - """Test parse files with one year at the end""" - start, end = get_start_end_year('var_whatever_1980.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_full_dates_at_the_end(self): - """Test parse files with two dates at the end""" - start, end = get_start_end_year('var_whatever_19800101-19811231.nc') - self.assertEqual(1980, start) - self.assertEqual(1981, end) - - def test_one_fulldate_at_the_end(self): - """Test parse files with one date at the end""" - start, end = get_start_end_year('var_whatever_19800101.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_years_at_the_start(self): - """Test parse files with two years at the start""" - start, end = get_start_end_year('1980-1981_var_whatever.nc') - self.assertEqual(1980, start) - self.assertEqual(1981, end) - - def test_one_year_at_the_start(self): - """Test parse files with one year at the start""" - start, end = get_start_end_year('1980_var_whatever.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_full_dates_at_the_start(self): - """Test parse files with two dates at the start""" - start, end = get_start_end_year('19800101-19811231_var_whatever.nc') - self.assertEqual(1980, start) - self.assertEqual(1981, end) - - def test_one_fulldate_at_the_start(self): - """Test parse files with one date at the start""" - start, end = get_start_end_year('19800101_var_whatever.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_start_and_date_in_name(self): - """Test parse one date at the start and one in experiment's name""" - start, end = get_start_end_year( - '19800101_var_control-1950_whatever.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_end_and_date_in_name(self): - """Test parse one date at the end and one in experiment's name""" - start, end = get_start_end_year( - 'var_control-1950_whatever_19800101.nc') - self.assertEqual(1980, start) - self.assertEqual(1980, end) - - def test_fails_if_no_date_present(self): - """Test raises if no date is present""" - with self.assertRaises(ValueError): - get_start_end_year('var_whatever') diff --git a/tests/unit/preprocessor/__init__.py b/tests/unit/preprocessor/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/preprocessor/_area/__init__.py b/tests/unit/preprocessor/_area/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/preprocessor/_area/test_area.py b/tests/unit/preprocessor/_area/test_area.py deleted file mode 100644 index 3f85825f42..0000000000 --- a/tests/unit/preprocessor/_area/test_area.py +++ /dev/null @@ -1,155 +0,0 @@ -"""Unit tests for the :func:`esmvaltool.preprocessor._area` module.""" - -import unittest - -import iris -import numpy as np -from cf_units import Unit - -import tests -from esmvaltool.preprocessor._area import ( - average_region, extract_named_regions, extract_region) - - -class Test(tests.Test): - """Test class for the :func:`esmvaltool.preprocessor._area_pp` module.""" - - def setUp(self): - """Prepare tests.""" - self.coord_sys = iris.coord_systems.GeogCS( - iris.fileformats.pp.EARTH_RADIUS) - data = np.ones((5, 5)) - lons = iris.coords.DimCoord( - [i + .5 for i in range(5)], - standard_name='longitude', - bounds=[[i, i + 1.] for i in range(5)], # [0,1] to [4,5] - units='degrees_east', - coord_system=self.coord_sys) - lats = iris.coords.DimCoord([i + .5 for i in range(5)], - standard_name='latitude', - bounds=[[i, i + 1.] for i in range(5)], - units='degrees_north', - coord_system=self.coord_sys) - coords_spec = [(lats, 0), (lons, 1)] - self.grid = iris.cube.Cube(data, dim_coords_and_dims=coords_spec) - - ndata = np.ones((6, 6)) - nlons = iris.coords.DimCoord( - [i - 2.5 for i in range(6)], - standard_name='longitude', - bounds=[[i - 3., i - 2.] for i in range(6)], # [3,2] to [4,5] - units='degrees_east', - coord_system=self.coord_sys) - nlats = iris.coords.DimCoord( - [i - 2.5 for i in range(6)], - standard_name='latitude', - bounds=[[i - 3., i - 2.] for i in range(6)], - units='degrees_north', - coord_system=self.coord_sys) - coords_spec = [(nlats, 0), (nlons, 1)] - self.negative_grid = iris.cube.Cube( - ndata, dim_coords_and_dims=coords_spec) - - def test_average_region_mean(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude') - expected = np.array([1.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_min(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude', - operator='min') - expected = np.array([1.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_max(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude', - operator='max') - expected = np.array([1.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_median(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude', - operator='median') - expected = np.array([1.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_std_dev(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude', - operator='std_dev') - expected = np.array([0.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_variance(self): - """Test for area average of a 2D field.""" - result = average_region(self.grid, 'latitude', 'longitude', - operator='variance') - expected = np.array([0.]) - self.assertArrayEqual(result.data, expected) - - def test_average_region_neg_lon(self): - """Test for area average of a 2D field.""" - result = average_region(self.negative_grid, 'latitude', 'longitude') - expected = np.array([1.]) - self.assertArrayEqual(result.data, expected) - - def test_extract_region(self): - """Test for extracting a region from a 2D field.""" - result = extract_region(self.grid, 1.5, 2.5, 1.5, 2.5) - # expected outcome - expected = np.ones((2, 2)) - self.assertArrayEqual(result.data, expected) - - def test_extract_region_neg_lon(self): - """Test for extracting a region with a negative longitude field.""" - result = extract_region(self.negative_grid, -0.5, 0.5, -0.5, 0.5) - expected = np.ones((2, 2)) - self.assertArrayEqual(result.data, expected) - - def test_extract_named_region(self): - """Test for extracting a named region.""" - # tests: - # Create a cube with regions - times = np.array([15., 45., 75.]) - bounds = np.array([[0., 30.], [30., 60.], [60., 90.]]) - time = iris.coords.DimCoord( - times, - bounds=bounds, - standard_name='time', - units=Unit('days since 1950-01-01', calendar='gregorian')) - - regions = ['region1', 'region2', 'region3'] - region = iris.coords.AuxCoord( - regions, - standard_name='region', - units='1', - ) - - data = np.ones((3, 3)) - region_cube = iris.cube.Cube( - data, - dim_coords_and_dims=[(time, 0)], - aux_coords_and_dims=[(region, 1)]) - - # test string region - result1 = extract_named_regions(region_cube, 'region1') - expected = np.ones((3, )) - self.assertArrayEqual(result1.data, expected) - - # test list of regions - result2 = extract_named_regions(region_cube, ['region1', 'region2']) - expected = np.ones((3, 2)) - self.assertArrayEqual(result2.data, expected) - - # test for expected failures: - with self.assertRaises(ValueError): - extract_named_regions(region_cube, 'reg_A') - extract_named_regions(region_cube, ['region1', 'reg_A']) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_derive/__init__.py b/tests/unit/preprocessor/_derive/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/preprocessor/_derive/test_fgco2_grid.py b/tests/unit/preprocessor/_derive/test_fgco2_grid.py deleted file mode 100644 index bb670ecc70..0000000000 --- a/tests/unit/preprocessor/_derive/test_fgco2_grid.py +++ /dev/null @@ -1,16 +0,0 @@ -"""Test derivation of `fgco2_grid`.""" -import mock - -import esmvaltool.preprocessor._derive.fgco2_grid as fgco2_grid - -CUBES = 'mocked cubes' -STD_NAME = 'surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon' - - -@mock.patch.object(fgco2_grid, 'grid_area_correction', autospec=True) -def test_fgco2_grid_calculation(mock_grid_area_correction): - """Test calculation of `fgco2_grid.""" - derived_var = fgco2_grid.DerivedVariable() - derived_var.calculate(CUBES) - mock_grid_area_correction.assert_called_once_with( - CUBES, STD_NAME, ocean_var=True) diff --git a/tests/unit/preprocessor/_derive/test_nbp_grid.py b/tests/unit/preprocessor/_derive/test_nbp_grid.py deleted file mode 100644 index 9c7d8d1f73..0000000000 --- a/tests/unit/preprocessor/_derive/test_nbp_grid.py +++ /dev/null @@ -1,16 +0,0 @@ -"""Test derivation of `nbp_grid`.""" -import mock - -import esmvaltool.preprocessor._derive.nbp_grid as nbp_grid - -CUBES = 'mocked cubes' -STD_NAME = ('surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_' - 'carbon_due_to_all_land_processes') - - -@mock.patch.object(nbp_grid, 'grid_area_correction', autospec=True) -def test_nbp_grid_calculation(mock_grid_area_correction): - """Test calculation of `nbp_grid.""" - derived_var = nbp_grid.DerivedVariable() - derived_var.calculate(CUBES) - mock_grid_area_correction.assert_called_once_with(CUBES, STD_NAME) diff --git a/tests/unit/preprocessor/_derive/test_p_level_widths.py b/tests/unit/preprocessor/_derive/test_p_level_widths.py deleted file mode 100644 index 35ba177a92..0000000000 --- a/tests/unit/preprocessor/_derive/test_p_level_widths.py +++ /dev/null @@ -1,88 +0,0 @@ -"""Tests for toz variable derivation functions.""" - -import numpy as np -import pytest - -from esmvaltool.preprocessor._derive.toz import _p_level_widths - - -def test_col_is_not_monotonic(): - """Test for non-monotonic column.""" - plev = 1000 - top_limit = 5 - col = np.array([1, 2, 3, 2, 1]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - with pytest.raises(ValueError): - _p_level_widths(col) - - -def test_keeping_column_length(): - """Test for level widths keeping column lenght.""" - plev = 1000 - top_limit = 5 - col = np.array([1000, 900, 800]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - assert len(_p_level_widths(col)) == len(col) - 2 - - -def test_low_lev_surf_press(): - """Test for lowest level equal to surface pressure.""" - plev = 1000 - top_limit = 5 - col = np.array([1000, 900, 800]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - result = np.array([50, 100, 845]) - assert all(_p_level_widths(col) == result) - - -def test_low_lev_above_surf_press(): - """Test for lowest level above surface pressure.""" - plev = 1020 - top_limit = 5 - col = np.array([1000, 900, 800]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - result = np.array([70, 100, 845]) - assert all(_p_level_widths(col) == result) - - -def test_low_lev_below_surf_press(): - """Test for lowest level below surface pressure.""" - plev = 970 - top_limit = 5 - col = np.array([np.NaN, 900, 800]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - result = np.array([0, 120, 845]) - assert all(_p_level_widths(col) == result) - - col = np.array([np.NaN, np.NaN, 900, 800]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - result = np.array([0, 0, 120, 845]) - assert all(_p_level_widths(col) == result) - - -def test_high_level_top_limit(): - """Test for highest level equal to top limit.""" - plev = 1020 - top_limit = 5 - col = np.array([1000, 900, 5]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - result = np.array([70, 50 + 895 / 2, 895 / 2]) - assert all(_p_level_widths(col) == result) - - -def test_high_level_above_top_limit(): - """Test for highest level above top limit.""" - plev = 1020 - top_limit = 5 - col = np.array([1000, 900, 3]) - col = np.insert(col, 0, plev) - col = np.append(col, top_limit) - with pytest.raises(ValueError): - _p_level_widths(col) diff --git a/tests/unit/preprocessor/_derive/test_shared.py b/tests/unit/preprocessor/_derive/test_shared.py deleted file mode 100644 index cc6915416a..0000000000 --- a/tests/unit/preprocessor/_derive/test_shared.py +++ /dev/null @@ -1,143 +0,0 @@ -"""Tests for the shared functions of the derive preprocessor.""" -import copy - -import numpy as np -import pytest -import iris -from iris.cube import CubeList -from cf_units import Unit - -import esmvaltool.preprocessor._derive._shared as shared - -O_NAME = 'sea_surface_temperature' -L_NAME = 'air_temperature' -SFTOF_CUBE = iris.cube.Cube( - [100.0, 0.0, 50.0, 70.0], - var_name='sftof', - standard_name='sea_area_fraction', - units=Unit('%'), -) -SFTLF_CUBE = iris.cube.Cube( - [10.0, 0.0, 100.0], - var_name='sftlf', - standard_name='land_area_fraction', - units=Unit('%'), -) -O_CUBE_1 = iris.cube.Cube( - [1.0, 2.0, -1.0, 2.0], - standard_name=O_NAME, -) -O_CUBE_2 = iris.cube.Cube( - [1.0, -1.0, 3.0], - standard_name=O_NAME, -) -L_CUBE = iris.cube.Cube( - [10.0, 20.0, 0.0], - standard_name=L_NAME, -) -FRAC_O = np.array([0.0, 1.0, 0.5, 0.3]) -FRAC_L = np.array([0.1, 0.0, 1.0]) - -GET_LAND_FRACTION = [ - (CubeList([L_CUBE]), L_NAME, False, None), - (CubeList([L_CUBE]), L_NAME, True, None), - (CubeList([SFTLF_CUBE, L_CUBE]), L_NAME, False, FRAC_L), - (CubeList([SFTLF_CUBE, O_CUBE_1]), O_NAME, False, None), - (CubeList([SFTLF_CUBE, O_CUBE_1]), O_NAME, True, None), - (CubeList([SFTLF_CUBE, O_CUBE_2]), O_NAME, False, FRAC_L), - (CubeList([SFTLF_CUBE, O_CUBE_2]), O_NAME, True, FRAC_L), - (CubeList([SFTOF_CUBE, L_CUBE]), L_NAME, False, None), - (CubeList([SFTOF_CUBE, L_CUBE]), L_NAME, True, None), - (CubeList([SFTOF_CUBE, O_CUBE_1]), O_NAME, False, None), - (CubeList([SFTOF_CUBE, O_CUBE_1]), O_NAME, True, FRAC_O), - (CubeList([SFTOF_CUBE, O_CUBE_2]), O_NAME, True, None), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_2]), O_NAME, True, FRAC_L), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_2]), O_NAME, False, FRAC_L), -] - - -@pytest.mark.parametrize('cubes,std_name,ocean_var,out', GET_LAND_FRACTION) -def test_get_land_fraction(cubes, std_name, ocean_var, out): - """Test retrieving of land fraction from list of cubes.""" - land_fraction = shared._get_land_fraction( - cubes, std_name, derive_from_ocean_fraction=ocean_var) - if land_fraction is None or out is None: - assert land_fraction is out - return - land_fraction = np.array(land_fraction) - assert np.allclose(land_fraction, out) - - -SHAPES_TO_BROADCAST = [ - ((), (1, ), True), - ((), (10, 10), True), - ((1, ), (10, ), True), - ((1, ), (10, 10), True), - ((2, ), (10, ), False), - ((10, ), (), True), - ((10, ), (1, ), True), - ((10, ), (10, ), True), - ((10, ), (10, 10), True), - ((10, ), (7, 1), True), - ((10, ), (10, 7), False), - ((10, ), (7, 1, 10), True), - ((10, ), (7, 1, 1), True), - ((10, ), (7, 1, 7), False), - ((10, ), (7, 10, 7), False), - ((10, 1), (1, 1), True), - ((10, 1), (1, 100), True), - ((10, 1), (10, 7), True), - ((10, 12), (10, 1), True), - ((10, 12), (), True), - ((10, 12), (1, ), True), - ((10, 12), (12, ), True), - ((10, 12), (1, 1), True), - ((10, 12), (1, 12), True), - ((10, 12), (10, 10, 1), True), - ((10, 12), (10, 12, 1), False), - ((10, 12), (10, 12, 12), False), - ((10, 12), (10, 10, 12), True), -] - - -@pytest.mark.parametrize('shape_1,shape_2,out', SHAPES_TO_BROADCAST) -def test_shape_is_broadcastable(shape_1, shape_2, out): - """Test check if two shapes are broadcastable.""" - is_broadcastable = shared._shape_is_broadcastable(shape_1, shape_2) - assert is_broadcastable == out - - -O_CUBE_1_OUT = O_CUBE_1.copy([1.0, 0.0, -0.5, 1.4]) -O_CUBE_2_OUT = O_CUBE_2.copy([0.9, -1.0, 0.0]) -O_CUBE_2_OUT_WRONG = O_CUBE_2.copy([0.1, 0.0, 3.0]) -L_CUBE_OUT = L_CUBE.copy([1.0, 0.0, 0.0]) -L_CUBE_OUT_WRONG = L_CUBE.copy([9.0, 20.0, 0.0]) - -CUBES_GRID_AREA_CORRECTION = [ - (CubeList([L_CUBE]), L_NAME, False, L_CUBE), - (CubeList([L_CUBE]), L_NAME, True, L_CUBE), - (CubeList([SFTLF_CUBE, L_CUBE]), L_NAME, False, L_CUBE_OUT), - (CubeList([SFTLF_CUBE, L_CUBE]), L_NAME, True, L_CUBE_OUT_WRONG), - (CubeList([SFTLF_CUBE, O_CUBE_1]), O_NAME, False, O_CUBE_1), - (CubeList([SFTLF_CUBE, O_CUBE_1]), O_NAME, True, O_CUBE_1), - (CubeList([SFTLF_CUBE, O_CUBE_2]), O_NAME, False, O_CUBE_2_OUT_WRONG), - (CubeList([SFTLF_CUBE, O_CUBE_2]), O_NAME, True, O_CUBE_2_OUT), - (CubeList([SFTOF_CUBE, O_CUBE_1]), O_NAME, False, O_CUBE_1), - (CubeList([SFTOF_CUBE, O_CUBE_1]), O_NAME, True, O_CUBE_1_OUT), - (CubeList([SFTOF_CUBE, O_CUBE_2]), O_NAME, False, O_CUBE_2), - (CubeList([SFTOF_CUBE, O_CUBE_2]), O_NAME, True, O_CUBE_2), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_1]), O_NAME, False, O_CUBE_1), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_1]), O_NAME, True, O_CUBE_1_OUT), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_2]), O_NAME, False, - O_CUBE_2_OUT_WRONG), - (CubeList([SFTOF_CUBE, SFTLF_CUBE, O_CUBE_2]), O_NAME, True, O_CUBE_2_OUT), -] - - -@pytest.mark.parametrize('cubes,std_name,ocean_var,out', - CUBES_GRID_AREA_CORRECTION) -def test_grid_area_correction(cubes, std_name, ocean_var, out): - """Test grid area correction.""" - cubes = copy.deepcopy(cubes) - cube = shared.grid_area_correction(cubes, std_name, ocean_var=ocean_var) - assert cube == out diff --git a/tests/unit/preprocessor/_mapping/__init__.py b/tests/unit/preprocessor/_mapping/__init__.py deleted file mode 100644 index 367e65a2b8..0000000000 --- a/tests/unit/preprocessor/_mapping/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Unit tests for the :mod:`esmvaltool.preprocessor._mapping` module.""" diff --git a/tests/unit/preprocessor/_mapping/test_mapping.py b/tests/unit/preprocessor/_mapping/test_mapping.py deleted file mode 100644 index ba1b9b7118..0000000000 --- a/tests/unit/preprocessor/_mapping/test_mapping.py +++ /dev/null @@ -1,255 +0,0 @@ -"""Unit tests for the esmvaltool.preprocessor._mapping module.""" -import cf_units -import iris -import mock -import numpy as np - -import tests -from esmvaltool.preprocessor._mapping import (get_empty_data, map_slices, - ref_to_dims_index) - - -class TestHelpers(tests.Test): - """Unit tests for all helper methods.""" - - def setUp(self): - """Set up basic fixtures.""" - self.coord_system = mock.Mock(return_value=None) - self.scalar_coord = mock.sentinel.scalar_coord - self.scalar_coord.name = lambda: 'scalar_coord' - self.coord = mock.sentinel.coord - self.coords = mock.Mock(return_value=[self.scalar_coord, self.coord]) - - def coord(name_or_coord): - """Return coord for mock cube.""" - if name_or_coord == 'coord': - return self.coord - elif name_or_coord == 'scalar_coord': - return self.scalar_coord - else: - raise iris.exceptions.CoordinateNotFoundError('') - - def coord_dims(coord): - """Return associated dims for coord in mock cube.""" - if coord == self.coord: - return [0] - elif coord == self.scalar_coord: - return [] - else: - raise iris.exceptions.CoordinateNotFoundError('') - - self.cube = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - coord_system=self.coord_system, - coords=self.coords, - coord=coord, - coord_dims=coord_dims, - ndim=4, - ) - - def test_get_empty_data(self): - """Test creation of empty data.""" - shape = (3, 3) - data = get_empty_data(shape) - self.assertIsInstance(data, np.ma.MaskedArray) - self.assertEqual(data.shape, shape) - - def test_ref_to_dims_index__int(self): - """Test ref_to_dims_index with valid integer.""" - dims = ref_to_dims_index(self.cube, 0) - self.assertEqual([0], dims) - - def test_ref_to_dims_index__invalid_int(self): - """Test ref_to_dims_index with invalid integer.""" - self.assertRaises(ValueError, ref_to_dims_index, self.cube, -1) - self.assertRaises(ValueError, ref_to_dims_index, self.cube, 100) - - def test_ref_to_dims_index__scalar_coord(self): - """Test ref_to_dims_index with scalar coordinate.""" - self.assertRaises(ValueError, ref_to_dims_index, self.cube, - 'scalar_coord') - - def test_ref_to_dims_index__valid_coordinate_name(self): - """Test ref_to_dims_index with valid coordinate name.""" - dims = ref_to_dims_index(self.cube, 'coord') - self.assertEqual([0], dims) - - def test_ref_to_dims_index__invalid_coordinate_name(self): - """Test ref_to_dims_index with invalid coordinate name.""" - self.assertRaises(iris.exceptions.CoordinateNotFoundError, - ref_to_dims_index, self.cube, 'test') - - def test_ref_to_dims_index__invalid_type(self): - """Test ref_to_dims_index with invalid argument.""" - self.assertRaises(ValueError, ref_to_dims_index, self.cube, - mock.sentinel.something) - - -class Test(tests.Test): - """Unit tests for the main mapping method.""" - - # pylint: disable=too-many-instance-attributes - - def setup_coordinates(self): - """Set up coordinates for mock cube.""" - self.time = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='time', - long_name='time', - shape=(3, ), - ) - self.z = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='height', - long_name='height', - shape=(4, ), - ) - self.src_latitude = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='latitude', - long_name='latitude', - shape=(5, ), - points=np.array([1.1, 2.2, 3.3, 4.4, 5.5]), - ) - self.src_longitude = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='longitude', - long_name='longitude', - shape=(6, ), - points=np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]), - ) - self.dst_latitude = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='latitude', - long_name='latitude', - shape=(2, ), - points=np.array([1.1, 2.2]), - ) - self.dst_longitude = mock.Mock( - spec=iris.coords.DimCoord, - standard_name='longitude', - long_name='longitude', - shape=(2, ), - points=np.array([1.1, 2.2]), - ) - - def setUp(self): - """Set up fixtures for mapping test.""" - self.coord_system = mock.Mock(return_value=None) - self.scalar_coord = mock.sentinel.scalar_coord - self.scalar_coord.name = lambda: 'scalar_coord' - self.setup_coordinates() - - def src_coord(name_or_coord): - """Return coord for mock source cube.""" - if name_or_coord in ['latitude', self.src_latitude]: - return self.src_latitude - elif name_or_coord in ['longitude', self.src_longitude]: - return self.src_longitude - elif name_or_coord == 'scalar_coord': - return self.scalar_coord - else: - raise iris.exceptions.CoordinateNotFoundError('') - - def coord_dims(coord): - """Return coord dim for mock cubes.""" - if coord in [self.time, self.dst_latitude]: - return [0] - elif coord in [self.z, self.dst_longitude]: - return [1] - elif coord in [self.src_latitude]: - return [2] - elif coord in [self.src_longitude]: - return [3] - elif coord == self.scalar_coord: - return [] - else: - raise iris.exceptions.CoordinateNotFoundError('') - - def src_coords(*args, **kwargs): - """Return selected coords for source cube.""" - # pylint: disable=unused-argument - # Here, args is ignored. - dim_coords_list = [ - self.time, self.z, self.src_latitude, self.src_longitude - ] - contains_dimension = kwargs.get('contains_dimension', None) - if contains_dimension is not None: - return [dim_coords_list[contains_dimension]] - dim_coords = kwargs.get('dim_coords', None) - if dim_coords: - return dim_coords_list - return [self.scalar_coord] + dim_coords_list - - def src_repr_coords(*args, **kwargs): - """Return selected coords for source representant cube.""" - # pylint: disable=unused-argument - # Here, args is ignored. - dim_coords = [self.src_latitude, self.src_longitude] - if kwargs.get('dim_coords', False): - return dim_coords - if 'contains_dimension' in kwargs: - return dim_coords - return [self.scalar_coord] + dim_coords - - def dst_repr_coords(*args, **kwargs): - """Return selected coords for destination representant cube.""" - # pylint: disable=unused-argument - # Here, args is ignored. - dim_coords = [self.dst_latitude, self.dst_longitude] - if kwargs.get('dim_coords', False): - return dim_coords - return [self.scalar_coord] + dim_coords - - self.src_cube = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - coord_system=self.coord_system, - coords=src_coords, - coord=src_coord, - coord_dims=coord_dims, - ndim=4, - shape=(3, 4, 5, 6), - standard_name='sea_surface_temperature', - long_name='Sea surface temperature', - var_name='tos', - units=cf_units.Unit('K'), - attributes={}, - cell_methods={}, - __getitem__=lambda a, b: mock.sentinel.src_data, - ) - self.src_repr = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - coords=src_repr_coords, - ndim=2, - ) - self.dst_repr = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - coords=dst_repr_coords, - shape=(2, 2), - ) - - @mock.patch('esmvaltool.preprocessor._mapping.get_empty_data') - @mock.patch('iris.cube.Cube') - def test_map_slices(self, mock_cube, mock_get_empty_data): - """Test map_slices.""" - mock_get_empty_data.return_value = mock.sentinel.empty_data - dst = map_slices(self.src_cube, lambda s: np.ones((2, 2)), - self.src_repr, self.dst_repr) - self.assertEqual(dst, mock_cube.return_value) - dim_coords = self.src_cube.coords(dim_coords=True)[:2] \ - + self.dst_repr.coords(dim_coords=True) - dim_coords_and_dims = [(c, i) for i, c in enumerate(dim_coords)] - mock_cube.assert_called_once_with( - data=mock.sentinel.empty_data, - standard_name=self.src_cube.standard_name, - long_name=self.src_cube.long_name, - var_name=self.src_cube.var_name, - units=self.src_cube.units, - attributes=self.src_cube.attributes, - cell_methods=self.src_cube.cell_methods, - dim_coords_and_dims=dim_coords_and_dims, - ) diff --git a/tests/unit/preprocessor/_mask/__init__.py b/tests/unit/preprocessor/_mask/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/preprocessor/_mask/test_mask.py b/tests/unit/preprocessor/_mask/test_mask.py deleted file mode 100644 index e2a3e88f67..0000000000 --- a/tests/unit/preprocessor/_mask/test_mask.py +++ /dev/null @@ -1,60 +0,0 @@ -"""Unit test for the :func:`esmvaltool.preprocessor._mask` function""" - -import unittest - -import iris -import numpy as np - -import tests -from esmvaltool.preprocessor._mask import ( - mask_above_threshold, mask_below_threshold, mask_inside_range, - mask_outside_range) - - -class Test(tests.Test): - """Test class for _mask""" - - def setUp(self): - """Prepare tests""" - coord_sys = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - self.data2 = np.array([[0., 1.], [2., 3.]]) - lons2 = iris.coords.DimCoord([1.5, 2.5], - standard_name='longitude', - bounds=[[1., 2.], [2., 3.]], - units='degrees_east', - coord_system=coord_sys) - lats2 = iris.coords.DimCoord([1.5, 2.5], - standard_name='latitude', - bounds=[[1., 2.], [2., 3.]], - units='degrees_north', - coord_system=coord_sys) - coords_spec3 = [(lats2, 0), (lons2, 1)] - self.arr = iris.cube.Cube(self.data2, dim_coords_and_dims=coords_spec3) - - def test_mask_above_threshold(self): - """Test to mask above a threshold.""" - result = mask_above_threshold(self.arr, 1.5) - expected = np.ma.array(self.data2, mask=[[False, False], [True, True]]) - self.assertArrayEqual(result.data, expected) - - def test_mask_below_threshold(self): - """Test to mask below a threshold.""" - result = mask_below_threshold(self.arr, 1.5) - expected = np.ma.array(self.data2, mask=[[True, True], [False, False]]) - self.assertArrayEqual(result.data, expected) - - def test_mask_inside_range(self): - """Test to mask inside a range.""" - result = mask_inside_range(self.arr, 0.5, 2.5) - expected = np.ma.array(self.data2, mask=[[False, True], [True, False]]) - self.assertArrayEqual(result.data, expected) - - def test_mask_outside_range(self): - """Test to mask outside a range.""" - result = mask_outside_range(self.arr, 0.5, 2.5) - expected = np.ma.array(self.data2, mask=[[True, False], [False, True]]) - self.assertArrayEqual(result.data, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_regrid/__init__.py b/tests/unit/preprocessor/_regrid/__init__.py deleted file mode 100644 index 0692e0b44b..0000000000 --- a/tests/unit/preprocessor/_regrid/__init__.py +++ /dev/null @@ -1,113 +0,0 @@ -""" -Unit tests for the :mod:`esmvaltool.preprocessor.regrid` module. - -""" - -import iris -import numpy as np -from iris.coords import AuxCoord, CellMethod, DimCoord - - -def _make_vcoord(data, dtype=None): - """ - Create a synthetic test vertical coordinate. - - """ - if dtype is None: - dtype = np.dtype('int8') - - if isinstance(data, int): - data = np.arange(data, dtype=dtype) - elif not isinstance(data, np.ndarray): - data = np.asarray(data, dtype=dtype) - - # Create a pressure vertical coordinate. - kwargs = dict( - standard_name='air_pressure', - long_name='Pressure', - var_name='plev', - units='hPa', - attributes=dict(positive='down'), - coord_system=None) - - try: - zcoord = DimCoord(data, **kwargs) - except ValueError: - zcoord = AuxCoord(data, **kwargs) - - return zcoord - - -def _make_cube(data, aux_coord=True, dim_coord=True, dtype=None): - """ - Create a 3d synthetic test cube. - - """ - if dtype is None: - dtype = np.dtype('int8') - - if not isinstance(data, np.ndarray): - data = np.empty(data, dtype=dtype) - - z, y, x = data.shape - - # Create the cube. - cm = CellMethod( - method='mean', coords='time', intervals='20 minutes', comments=None) - kwargs = dict( - standard_name='air_temperature', - long_name='Air Temperature', - var_name='ta', - units='K', - attributes=dict(cube='attribute'), - cell_methods=(cm, )) - cube = iris.cube.Cube(data, **kwargs) - - # Create a synthetic test vertical coordinate. - if dim_coord: - cube.add_dim_coord(_make_vcoord(z, dtype=dtype), 0) - - # Create a synthetic test latitude coordinate. - data = np.arange(y, dtype=dtype) + 1 - cs = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - kwargs = dict( - standard_name='latitude', - long_name='Latitude', - var_name='lat', - units='degrees_north', - attributes=dict(latitude='attribute'), - coord_system=cs) - ycoord = DimCoord(data, **kwargs) - if data.size > 1: - ycoord.guess_bounds() - cube.add_dim_coord(ycoord, 1) - - # Create a synthetic test longitude coordinate. - data = np.arange(x, dtype=dtype) + 1 - kwargs = dict( - standard_name='longitude', - long_name='Longitude', - var_name='lon', - units='degrees_east', - attributes=dict(longitude='attribute'), - coord_system=cs) - xcoord = DimCoord(data, **kwargs) - if data.size > 1: - xcoord.guess_bounds() - cube.add_dim_coord(xcoord, 2) - - # Create a synthetic test 2d auxiliary coordinate - # that spans the vertical dimension. - if aux_coord: - data = np.arange(np.prod((z, y)), dtype=dtype).reshape(z, y) - kwargs = dict( - standard_name=None, - long_name='Pressure Slice', - var_name='aplev', - units='hPa', - attributes=dict(positive='down'), - coord_system=None) - zycoord = AuxCoord(data, **kwargs) - cube.add_aux_coord(zycoord, (0, 1)) - - return cube diff --git a/tests/unit/preprocessor/_regrid/test__create_cube.py b/tests/unit/preprocessor/_regrid/test__create_cube.py deleted file mode 100644 index 016926ceda..0000000000 --- a/tests/unit/preprocessor/_regrid/test__create_cube.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Unit tests for the :func:`esmvaltool.preprocessor.regrid._create_cube` -function. - -""" - -import unittest - -import numpy as np - -import tests -from esmvaltool.preprocessor._regrid import _create_cube as create_cube -from tests.unit.preprocessor._regrid import _make_cube, _make_vcoord - - -class Test(tests.Test): - def setUp(self): - shape = (3, 2, 1) - self.dtype = np.dtype('int8') - self.cube = _make_cube(shape, dtype=self.dtype) - - def test_invalid_shape__data_mismatch_with_levels(self): - levels = np.array([0, 1]) - emsg = 'Mismatch between data and levels' - with self.assertRaisesRegex(ValueError, emsg): - create_cube(self.cube, self.cube.data, levels) - - def test(self): - shape = (2, 2, 1) - data = np.empty(shape) - levels = np.array([10, 20]) - result = create_cube(self.cube, data, levels) - expected = _make_cube(data, aux_coord=False, dim_coord=False) - vcoord = _make_vcoord(levels) - expected.add_dim_coord(vcoord, 0) - self.assertEqual(result, expected) - - def test_non_monotonic(self): - shape = (2, 2, 1) - data = np.empty(shape) - levels = np.array([10, 10]) - result = create_cube(self.cube, data, levels) - expected = _make_cube(data, aux_coord=False, dim_coord=False) - vcoord = _make_vcoord(levels) - expected.add_aux_coord(vcoord, 0) - self.assertEqual(result, expected) - - def test_collapse(self): - shape = (1, 2, 1) - data = np.empty(shape) - levels = np.array([123]) - result = create_cube(self.cube, data, levels) - expected = _make_cube(data, aux_coord=False, dim_coord=False)[0] - vcoord = _make_vcoord(levels) - expected.add_aux_coord(vcoord) - self.assertEqual(result, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_regrid/test__stock_cube.py b/tests/unit/preprocessor/_regrid/test__stock_cube.py deleted file mode 100644 index cd1b15f47a..0000000000 --- a/tests/unit/preprocessor/_regrid/test__stock_cube.py +++ /dev/null @@ -1,115 +0,0 @@ -""" -Unit tests for the :func:`esmvaltool.preprocessor.regrid._stock_cube` -function. - -""" - -import unittest - -import iris -import mock -import numpy as np - -import tests -from esmvaltool.preprocessor._regrid import (_LAT_MAX, _LAT_MIN, _LAT_RANGE, - _LON_MAX, _LON_MIN, _LON_RANGE) -from esmvaltool.preprocessor._regrid import _stock_cube as stock_cube - - -class Test(tests.Test): - def _check(self, dx, dy, lat_off=True, lon_off=True): - # Generate the expected stock cube coordinate points. - dx, dy = float(dx), float(dy) - mid_dx, mid_dy = dx / 2, dy / 2 - if lat_off and lon_off: - expected_lat_points = np.linspace( - _LAT_MIN + mid_dy, _LAT_MAX - mid_dy, _LAT_RANGE / dy) - expected_lon_points = np.linspace( - _LON_MIN + mid_dx, _LON_MAX - mid_dx, _LON_RANGE / dx) - else: - expected_lat_points = np.linspace(_LAT_MIN, _LAT_MAX, - _LAT_RANGE / dy + 1) - expected_lon_points = np.linspace(_LON_MIN, _LON_MAX - dx, - _LON_RANGE / dx) - - # Check the stock cube coordinates. - self.assertEqual(self.mock_DimCoord.call_count, 2) - call_lats, call_lons = self.mock_DimCoord.call_args_list - - # Check the latitude coordinate creation. - [args], kwargs = call_lats - self.assertArrayEqual(args, expected_lat_points) - expected_lat_kwargs = dict( - standard_name='latitude', units='degrees_north', var_name='lat') - self.assertEqual(kwargs, expected_lat_kwargs) - - # Check the longitude coordinate creation. - [args], kwargs = call_lons - self.assertArrayEqual(args, expected_lon_points) - expected_lon_kwargs = dict( - standard_name='longitude', units='degrees_east', var_name='lon') - self.assertEqual(kwargs, expected_lon_kwargs) - - # Check that the coordinate guess_bounds method has been called. - expected_calls = [mock.call.guess_bounds()] * 2 - self.assertEqual(self.mock_coord.mock_calls, expected_calls) - - # Check the stock cube creation. - self.mock_Cube.assert_called_once() - _, kwargs = self.mock_Cube.call_args - spec = [(self.mock_coord, 0), (self.mock_coord, 1)] - expected_cube_kwargs = dict(dim_coords_and_dims=spec) - self.assertEqual(kwargs, expected_cube_kwargs) - - # Reset the mocks to enable multiple calls per test-case. - for mocker in self.mocks: - mocker.reset_mock() - - def setUp(self): - self.Cube = mock.sentinel.Cube - self.mock_Cube = self.patch('iris.cube.Cube', return_value=self.Cube) - self.mock_coord = mock.Mock(spec=iris.coords.DimCoord) - self.mock_DimCoord = self.patch( - 'iris.coords.DimCoord', return_value=self.mock_coord) - self.mocks = [self.mock_Cube, self.mock_coord, self.mock_DimCoord] - - def test_invalid_cell_spec__alpha(self): - emsg = 'Invalid MxN cell specification' - with self.assertRaisesRegex(ValueError, emsg): - stock_cube('Ax1') - - def test_invalid_cell_spec__separator(self): - emsg = 'Invalid MxN cell specification' - with self.assertRaisesRegex(ValueError, emsg): - stock_cube('1y1') - - def test_invalid_cell_spec__longitude(self): - emsg = 'Invalid longitude delta in MxN cell specification' - with self.assertRaisesRegex(ValueError, emsg): - stock_cube('1.3x1') - - def test_invalid_cell_spec__latitude(self): - emsg = 'Invalid latitude delta in MxN cell specification' - with self.assertRaisesRegex(ValueError, emsg): - stock_cube('1x2.3') - - def test_specs(self): - specs = ['0.5x0.5', '1x1', '2.5x2.5', '5x5', '10x10'] - for spec in specs: - result = stock_cube(spec) - self.assertEqual(result, self.Cube) - self._check(*list(map(float, spec.split('x')))) - - def test_specs_no_offset(self): - specs = ['0.5x0.5', '1x1', '2.5x2.5', '5x5', '10x10'] - for spec in specs: - result = stock_cube(spec, lat_offset=False, lon_offset=False) - self.assertEqual(result, self.Cube) - self._check( - *list(map(float, spec.split('x'))), - lat_off=False, - lon_off=False) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_regrid/test_extract_levels.py b/tests/unit/preprocessor/_regrid/test_extract_levels.py deleted file mode 100644 index 5f4442357c..0000000000 --- a/tests/unit/preprocessor/_regrid/test_extract_levels.py +++ /dev/null @@ -1,177 +0,0 @@ -"""Unit tests for :func:`esmvaltool.preprocessor.regrid.extract_levels`.""" - -import unittest - -import iris -import mock -import numpy as np -from numpy import ma - -import tests -from esmvaltool.preprocessor._regrid import (_MDI, VERTICAL_SCHEMES, - extract_levels) -from tests.unit.preprocessor._regrid import _make_cube, _make_vcoord - - -class Test(tests.Test): - def setUp(self): - self.shape = (3, 2, 1) - self.z = self.shape[0] - self.dtype = np.dtype('int8') - data = np.arange( - np.prod(self.shape), dtype=self.dtype).reshape(self.shape) - self.cube = _make_cube(data, dtype=self.dtype) - self.created_cube = mock.sentinel.created_cube - self.mock_create_cube = self.patch( - 'esmvaltool.preprocessor._regrid._create_cube', - return_value=self.created_cube) - self.schemes = [ - 'linear', 'nearest', 'linear_horizontal_extrapolate_vertical', - 'nearest_horizontal_extrapolate_vertical' - ] - - def test_invalid_scheme__unknown(self): - levels = mock.sentinel.levels - scheme = mock.sentinel.scheme - emsg = 'Unknown vertical interpolation scheme' - with self.assertRaisesRegex(ValueError, emsg): - extract_levels(self.cube, levels, scheme) - - def test_vertical_schemes(self): - self.assertEqual(set(VERTICAL_SCHEMES), set(self.schemes)) - - def test_nop__levels_match(self): - vcoord = _make_vcoord(self.z, dtype=self.dtype) - self.assertEqual(self.cube.coord(axis='z', dim_coords=True), vcoord) - levels = vcoord.points - result = extract_levels(self.cube, levels, 'linear') - self.assertEqual(id(result), id(self.cube)) - self.assertEqual(result, self.cube) - - def test_extraction(self): - levels = [0, 2] - result = extract_levels(self.cube, levels, 'linear') - data = np.array([0, 1, 4, 5], dtype=self.dtype).reshape(2, 2, 1) - expected = _make_cube( - data, aux_coord=False, dim_coord=False, dtype=self.dtype) - coord = self.cube.coord('Pressure Slice').copy() - expected.add_aux_coord(coord[levels], (0, 1)) - coord = self.cube.coord('air_pressure').copy() - expected.add_dim_coord(coord[levels], 0) - self.assertEqual(result, expected) - - def test_extraction__failure(self): - levels = [0, 2] - with mock.patch('iris.cube.Cube.extract', return_value=None): - emsg = 'Failed to extract levels' - with self.assertRaisesRegex(ValueError, emsg): - extract_levels(self.cube, levels, 'linear') - - def test_interpolation(self): - new_data = np.array(True) - levels = np.array([0.5, 1.5]) - scheme = 'linear' - with mock.patch( - 'stratify.interpolate', return_value=new_data) as mocker: - result = extract_levels(self.cube, levels, scheme) - self.assertEqual(result, self.created_cube) - args, kwargs = mocker.call_args - # Check the stratify.interpolate args ... - self.assertEqual(len(args), 3) - self.assertArrayEqual(args[0], levels) - pts = self.cube.coord(axis='z', dim_coords=True).points - src_levels_broadcast = np.broadcast_to( - pts.reshape(self.z, 1, 1), self.cube.shape) - self.assertArrayEqual(args[1], src_levels_broadcast) - self.assertArrayEqual(args[2], self.cube.data) - # Check the stratify.interpolate kwargs ... - self.assertEqual( - kwargs, dict( - axis=0, interpolation=scheme, extrapolation='nan')) - args, kwargs = self.mock_create_cube.call_args - # Check the _create_cube args ... - self.assertEqual(len(args), 3) - self.assertEqual(args[0], self.cube) - self.assertArrayEqual(args[1], new_data) - self.assertArrayEqual(args[2], levels) - # Check the _create_cube kwargs ... - self.assertEqual(kwargs, dict()) - - def test_interpolation__extrapolated_NaN_filling(self): - new_data = np.array([0, np.nan]) - levels = [0.5, 1.5] - scheme = 'nearest' - with mock.patch( - 'stratify.interpolate', return_value=new_data) as mocker: - result = extract_levels(self.cube, levels, scheme) - self.assertEqual(result, self.created_cube) - args, kwargs = mocker.call_args - # Check the stratify.interpolate args ... - self.assertEqual(len(args), 3) - self.assertArrayEqual(args[0], levels) - pts = self.cube.coord(axis='z', dim_coords=True).points - src_levels_broadcast = np.broadcast_to( - pts.reshape(self.z, 1, 1), self.cube.shape) - self.assertArrayEqual(args[1], src_levels_broadcast) - self.assertArrayEqual(args[2], self.cube.data) - # Check the stratify.interpolate kwargs ... - self.assertEqual( - kwargs, dict( - axis=0, interpolation=scheme, extrapolation='nan')) - args, kwargs = self.mock_create_cube.call_args - # Check the _create_cube args ... - self.assertEqual(len(args), 3) - self.assertArrayEqual(args[0], self.cube) - new_data[np.isnan(new_data)] = _MDI - self.assertArrayEqual(args[1], new_data) - self.assertArrayEqual(args[2], levels) - # Check the _create_cube kwargs ... - self.assertEqual(kwargs, dict()) - - def test_interpolation__masked(self): - levels = np.array([0.5, 1.5]) - new_data = np.empty([len(levels)] + list(self.shape[1:]), dtype=float) - new_data[:, 0, :] = np.nan - new_data_mask = np.isnan(new_data) - scheme = 'linear' - mask = [[[False], [True]], [[True], [False]], [[False], [False]]] - masked = ma.empty(self.shape) - masked.mask = mask - cube = _make_cube(masked, dtype=self.dtype) - with mock.patch( - 'stratify.interpolate', return_value=new_data) as mocker: - result = extract_levels(cube, levels, scheme) - self.assertEqual(result, self.created_cube) - args, kwargs = mocker.call_args - # Check the stratify.interpolate args ... - self.assertEqual(len(args), 3) - self.assertArrayEqual(args[0], levels) - pts = cube.coord(axis='z', dim_coords=True).points - src_levels_broadcast = np.broadcast_to( - pts.reshape(self.z, 1, 1), cube.shape) - self.assertArrayEqual(args[1], src_levels_broadcast) - self.assertArrayEqual(args[2], cube.data) - # Check the stratify.interpolate kwargs ... - self.assertEqual( - kwargs, dict( - axis=0, interpolation=scheme, extrapolation='nan')) - args, kwargs = self.mock_create_cube.call_args - # in-place for new extract_levels with nan's - new_data[np.isnan(new_data)] = _MDI - # Check the _create_cube args ... - self.assertEqual(len(args), 3) - self.assertEqual(args[0].metadata, cube.metadata) - coord_comparison = iris.analysis.coord_comparison(args[0], cube) - self.assertFalse(coord_comparison['not_equal'] - or coord_comparison['non_equal_data_dimension']) - self.assertArrayEqual(args[0].data, cube.data) - self.assertArrayEqual(args[1], new_data) - self.assertTrue(ma.isMaskedArray(args[1])) - self.assertArrayEqual(args[1].mask, new_data_mask) - self.assertArrayEqual(args[2], levels) - # Check the _create_cube kwargs ... - self.assertEqual(kwargs, dict()) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_regrid/test_regrid.py b/tests/unit/preprocessor/_regrid/test_regrid.py deleted file mode 100644 index 346850709a..0000000000 --- a/tests/unit/preprocessor/_regrid/test_regrid.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -Unit tests for the :func:`esmvaltool.preprocessor.regrid.regrid` function. - -""" - -import unittest - -import iris -import mock - -import tests -from esmvaltool.preprocessor import regrid -from esmvaltool.preprocessor._regrid import _CACHE, HORIZONTAL_SCHEMES - - -class Test(tests.Test): - def _check(self, tgt_grid, scheme, spec=False): - expected_scheme = HORIZONTAL_SCHEMES[scheme] - - if spec: - spec = tgt_grid - self.assertIn(spec, _CACHE) - self.assertEqual(_CACHE[spec], self.tgt_grid) - self.coord_system.asset_called_once() - expected_calls = [ - mock.call(axis='x', dim_coords=True), - mock.call(axis='y', dim_coords=True) - ] - self.assertEqual(self.tgt_grid_coord.mock_calls, expected_calls) - self.regrid.assert_called_once_with(self.tgt_grid, expected_scheme) - else: - if scheme == 'unstructured_nearest': - expected_calls = [ - mock.call(axis='x', dim_coords=True), - mock.call(axis='y', dim_coords=True) - ] - self.assertEqual(self.coords.mock_calls, expected_calls) - expected_calls = [mock.call(self.coord), mock.call(self.coord)] - self.assertEqual(self.remove_coord.mock_calls, expected_calls) - self.regrid.assert_called_once_with(tgt_grid, expected_scheme) - - # Reset the mocks to enable multiple calls per test-case. - for mocker in self.mocks: - mocker.reset_mock() - - def setUp(self): - self.coord_system = mock.Mock(return_value=None) - self.coord = mock.sentinel.coord - self.coords = mock.Mock(return_value=[self.coord]) - self.remove_coord = mock.Mock() - self.regridded_cube = mock.sentinel.regridded_cube - self.regrid = mock.Mock(return_value=self.regridded_cube) - self.src_cube = mock.Mock( - spec=iris.cube.Cube, - coord_system=self.coord_system, - coords=self.coords, - remove_coord=self.remove_coord, - regrid=self.regrid) - self.tgt_grid_coord = mock.Mock() - self.tgt_grid = mock.Mock( - spec=iris.cube.Cube, coord=self.tgt_grid_coord) - self.regrid_schemes = [ - 'linear', 'linear_extrapolate', 'nearest', 'area_weighted', - 'unstructured_nearest' - ] - - def _return_mock_stock_cube(spec, lat_offset=True, lon_offset=True): - return self.tgt_grid - - self.mock_stock = self.patch( - 'esmvaltool.preprocessor._regrid._stock_cube', - side_effect=_return_mock_stock_cube) - self.mocks = [ - self.coord_system, self.coords, self.regrid, self.src_cube, - self.tgt_grid_coord, self.tgt_grid, self.mock_stock - ] - - def test_invalid_tgt_grid__unknown(self): - dummy = mock.sentinel.dummy - scheme = 'linear' - emsg = 'Expecting a cube' - with self.assertRaisesRegex(ValueError, emsg): - regrid(self.src_cube, dummy, scheme) - - def test_invalid_scheme__unknown(self): - dummy = mock.sentinel.dummy - emsg = 'Unknown regridding scheme' - with self.assertRaisesRegex(ValueError, emsg): - regrid(dummy, dummy, 'wibble') - - def test_horizontal_schemes(self): - self.assertEqual( - set(HORIZONTAL_SCHEMES.keys()), set(self.regrid_schemes)) - - def test_regrid__horizontal_schemes(self): - for scheme in self.regrid_schemes: - result = regrid(self.src_cube, self.tgt_grid, scheme) - self.assertEqual(result, self.regridded_cube) - self._check(self.tgt_grid, scheme) - - def test_regrid__cell_specification(self): - specs = ['1x1', '2x2', '3x3', '4x4', '5x5'] - scheme = 'linear' - for spec in specs: - result = regrid(self.src_cube, spec, scheme) - self.assertEqual(result, self.regridded_cube) - self._check(spec, scheme, spec=True) - self.assertEqual(set(_CACHE.keys()), set(specs)) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_regrid_esmpy/__init__.py b/tests/unit/preprocessor/_regrid_esmpy/__init__.py deleted file mode 100644 index fc186bf9ed..0000000000 --- a/tests/unit/preprocessor/_regrid_esmpy/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Unit tests for the :mod:`esmvaltool.preprocessor._regrid_esmpy` module.""" diff --git a/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py b/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py deleted file mode 100644 index bde05f7894..0000000000 --- a/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py +++ /dev/null @@ -1,660 +0,0 @@ -"""Unit tests for the esmvaltool.preprocessor._regrid_esmpy module.""" -import cf_units -import iris -import mock -import numpy as np -from iris.exceptions import CoordinateNotFoundError - -import tests -from esmvaltool.preprocessor._regrid_esmpy import ( - build_regridder, build_regridder_2d, coords_iris_to_esmpy, - cube_to_empty_field, get_grid, get_grid_representant, - get_grid_representants, get_representant, is_lon_circular, regrid) - - -def identity(*args, **kwargs): - """Return args, acting as identity for mocking functions.""" - # pylint: disable=unused-argument - # Here, kwargs will be ignored. - if len(args) == 1: - return args[0] - return args - - -def mock_cube_to_empty_field(cube): - """Return associated field for mock cube.""" - return cube.field - - -class MockGrid(mock.MagicMock): - """Mock ESMF grid.""" - - get_coords = mock.Mock(return_value=mock.MagicMock()) - add_coords = mock.Mock() - add_item = mock.Mock() - get_item = mock.Mock(return_value=mock.MagicMock()) - - -class MockGridItem(mock.Mock): - """Mock ESMF enum for grid items.""" - - MASK = mock.sentinel.gi_mask - - -class MockRegridMethod(mock.Mock): - """Mock ESMF enum for regridding methods.""" - - BILINEAR = mock.sentinel.rm_bilinear - CONSERVE = mock.sentinel.rm_conserve - NEAREST_STOD = mock.sentinel.rm_nearest_stod - - -class MockStaggerLoc(mock.Mock): - """Mock ESMF enum for stagger locations.""" - - CENTER = mock.sentinel.sl_center - CORNER = mock.sentinel.sl_corner - - -class MockUnmappedAction(mock.Mock): - """Mock ESMF enum for unmapped actions.""" - - IGNORE = mock.sentinel.ua_ignore - - -ESMF_REGRID_METHODS = { - 'linear': MockRegridMethod.BILINEAR, - 'area_weighted': MockRegridMethod.CONSERVE, - 'nearest': MockRegridMethod.NEAREST_STOD, -} - -MASK_REGRIDDING_MASK_VALUE = { - mock.sentinel.rm_bilinear: np.array([1]), - mock.sentinel.rm_conserve: np.array([1]), - mock.sentinel.rm_nearest_stod: np.array([]), -} - - -@mock.patch('esmvaltool.preprocessor._regrid_esmpy.MASK_REGRIDDING_MASK_VALUE', - MASK_REGRIDDING_MASK_VALUE) -@mock.patch('esmvaltool.preprocessor._regrid_esmpy.ESMF_REGRID_METHODS', - ESMF_REGRID_METHODS) -@mock.patch('ESMF.Manager', mock.Mock) -@mock.patch('ESMF.GridItem', MockGridItem) -@mock.patch('ESMF.RegridMethod', MockRegridMethod) -@mock.patch('ESMF.StaggerLoc', MockStaggerLoc) -@mock.patch('ESMF.UnmappedAction', MockUnmappedAction) -class TestHelpers(tests.Test): - """Unit tests for helper functions.""" - - # pylint: disable=too-many-instance-attributes, too-many-public-methods - def setUp(self): - """Set up fixtures.""" - # pylint: disable=too-many-locals - lat_1d_pre_bounds = np.linspace(-90, 90, 5) - lat_1d_bounds = np.stack( - [lat_1d_pre_bounds[:-1], lat_1d_pre_bounds[1:]], axis=1) - lat_1d_points = lat_1d_bounds.mean(axis=1) - lon_1d_pre_bounds = np.linspace(0, 360, 5) - lon_1d_bounds = np.stack( - [lon_1d_pre_bounds[:-1], lon_1d_pre_bounds[1:]], axis=1) - lon_1d_points = lon_1d_bounds.mean(axis=1) - lon_2d_points, lat_2d_points = np.meshgrid(lon_1d_points, - lat_1d_points) - (lon_2d_pre_bounds, lat_2d_pre_bounds) = np.meshgrid( - lon_1d_pre_bounds, lat_1d_pre_bounds) - lat_2d_bounds = np.stack([ - lat_2d_pre_bounds[:-1, :-1], lat_2d_pre_bounds[:-1, 1:], - lat_2d_pre_bounds[1:, 1:], lat_2d_pre_bounds[1:, :-1] - ], - axis=2) - lon_2d_bounds = np.stack([ - lon_2d_pre_bounds[:-1, :-1], lon_2d_pre_bounds[:-1, 1:], - lon_2d_pre_bounds[1:, 1:], lon_2d_pre_bounds[1:, :-1] - ], - axis=2) - self.lat_1d = mock.Mock( - iris.coords.DimCoord, - standard_name='latitude', - long_name='latitude', - ndim=1, - points=lat_1d_points, - bounds=lat_1d_bounds, - has_bounds=mock.Mock(return_value=True)) - self.lat_1d_no_bounds = mock.Mock( - iris.coords.DimCoord, - standard_name='latitude', - ndim=1, - points=lat_1d_points, - has_bounds=mock.Mock(return_value=False), - bounds=lat_1d_bounds, - guess_bounds=mock.Mock()) - self.lon_1d = mock.Mock( - iris.coords.DimCoord, - standard_name='longitude', - long_name='longitude', - ndim=1, - points=lon_1d_points, - bounds=lon_1d_bounds, - has_bounds=mock.Mock(return_value=True), - circular=True) - self.lon_1d_aux = mock.Mock( - iris.coords.AuxCoord, - standard_name='longitude', - long_name='longitude', - ndim=1, - shape=lon_1d_points.shape, - points=lon_1d_points, - bounds=lon_1d_bounds, - has_bounds=mock.Mock(return_value=True)) - self.lat_2d = mock.Mock( - iris.coords.AuxCoord, - standard_name='latitude', - long_name='latitude', - ndim=2, - points=lat_2d_points, - bounds=lat_2d_bounds, - has_bounds=mock.Mock(return_value=True)) - self.lon_2d = mock.Mock( - iris.coords.AuxCoord, - standard_name='longitude', - long_name='longitude', - ndim=2, - points=lon_2d_points, - bounds=lon_2d_bounds, - has_bounds=mock.Mock(return_value=True)) - self.lon_2d_non_circular = mock.Mock( - iris.coords.AuxCoord, - standard_name='longitude', - ndim=2, - points=lon_2d_points[:, 1:-1], - bounds=lon_2d_bounds[:, 1:-1], - has_bounds=mock.Mock(return_value=True)) - self.lat_3d = mock.Mock( - iris.coords.AuxCoord, - standard_name='latitude', - long_name='latitude', - ndim=3) - self.lon_3d = mock.Mock( - iris.coords.AuxCoord, - standard_name='longitude', - long_name='longitude', - ndim=3) - depth_pre_bounds = np.linspace(0, 5000, 5) - depth_bounds = np.stack([depth_pre_bounds[:-1], depth_pre_bounds[1:]], - axis=1) - depth_points = depth_bounds.mean(axis=1) - self.depth = mock.Mock( - iris.coords.DimCoord, - standard_name='depth', - long_name='depth', - ndim=1, - shape=depth_points.shape, - points=depth_points, - bounds=depth_bounds, - has_bounds=mock.Mock(return_value=True)) - data_shape = lon_2d_points.shape - raw_data = np.arange(np.prod(data_shape)).reshape(data_shape) - mask = np.zeros(data_shape) - mask[:data_shape[0] // 2] = True - self.data = np.ma.masked_array(raw_data, mask) - self.data_3d = np.repeat( - self.data[..., np.newaxis], depth_points.shape[0], axis=-1) - self.expected_esmpy_lat = np.array([[-67.5, -22.5, 22.5, 67.5], - [-67.5, -22.5, 22.5, 67.5], - [-67.5, -22.5, 22.5, 67.5], - [-67.5, -22.5, 22.5, 67.5]]) - self.expected_esmpy_lon = np.array([[45., 45., 45., 45.], - [135., 135., 135., 135.], - [225., 225., 225., 225.], - [315., 315., 315., 315.]]) - self.expected_esmpy_lat_corners = np.array([[-90., -45., 0., 45., 90.], - [-90., -45., 0., 45., 90.], - [-90., -45., 0., 45., 90.], - [-90., -45., 0., 45., 90.], - [-90., -45., 0., 45., - 90.]]) - self.expected_esmpy_lon_corners = np.array( - [[0., 0., 0., 0., 0.], [90., 90., 90., 90., 90.], - [180., 180., 180., 180., 180.], [270., 270., 270., 270., 270.], - [360., 360., 360., 360., 360.]]) - self.coords = { - 'latitude': self.lat_2d, - 'longitude': self.lon_2d, - 'depth': self.depth - } - self.coord_dims = { - 'latitude': (0, 1), - 'longitude': (0, 1), - self.lat_2d: (0, 1), - self.lon_2d: (0, 1), - } - - def coord(name=None, axis=None): - """Return selected coordinate for mock cube.""" - if axis == 'Z': - raise CoordinateNotFoundError() - return self.coords[name] - - def coords(dim_coords=None): - """Return coordinates for mock cube.""" - if dim_coords: - return [] - return list(self.coords.values()) - - self.cube = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - long_name='longname', - ndim=2, - shape=self.data.shape, - data=self.data, - coord=coord, - coord_dims=lambda name: self.coord_dims[name], - coords=coords, - ) - self.cube.__getitem__ = mock.Mock(return_value=self.cube) - self.unmasked_cube = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - long_name='longname', - ) - self.coord_dims_3d = { - 'latitude': (1, 2), - 'longitude': (1, 2), - self.lat_2d: (1, 2), - self.lon_2d: (1, 2), - 'depth': (0, ), - self.depth: (0, ), - } - - def coord_3d(name=None, dimensions=None, dim_coords=None, axis=None): - """Return coord for 3d mock cube.""" - # pylint: disable=unused-argument - if axis == 'Z' or dimensions == [0]: - return self.coords['depth'] - return self.coords[name] - - self.cube_3d = mock.Mock( - spec=iris.cube.Cube, - dtype=np.float32, - standard_name=None, - long_name='longname', - var_name='ln', - units=cf_units.Unit('1'), - attributes={}, - cell_methods=[], - ndim=3, - shape=self.data_3d.shape, - data=self.data_3d, - coord=coord_3d, - coord_dims=lambda name: self.coord_dims_3d[name], - ) - self.cube.__getitem__ = mock.Mock(return_value=self.cube) - - def test_coords_iris_to_esmpy_mismatched_dimensions(self): - """Test coord conversion with mismatched dimensions.""" - self.assertRaises(ValueError, coords_iris_to_esmpy, self.lat_1d, - self.lon_2d, True) - - def test_coords_iris_to_esmpy_invalid_dimensions(self): - """Test coord conversion with invalid dimensions.""" - self.assertRaises(NotImplementedError, coords_iris_to_esmpy, - self.lat_3d, self.lon_3d, True) - - def test_coords_iris_to_esmpy_call_guess_bounds(self): - """Test coord conversion with missing bounds.""" - coords_iris_to_esmpy(self.lat_1d_no_bounds, self.lon_1d, True) - self.lat_1d_no_bounds.guess_bounds.assert_called_once() - - def test_coords_iris_to_esmpy_1d_circular(self): - """Test coord conversion with 1d coords and circular longitudes.""" - (esmpy_lat, esmpy_lon, - esmpy_lat_corners, esmpy_lon_corners) = coords_iris_to_esmpy( - self.lat_1d, self.lon_1d, True) - self.assertArrayEqual(esmpy_lat, self.expected_esmpy_lat) - self.assertArrayEqual(esmpy_lon, self.expected_esmpy_lon) - self.assertArrayEqual(esmpy_lat_corners, - self.expected_esmpy_lat_corners[:-1]) - self.assertArrayEqual(esmpy_lon_corners, - self.expected_esmpy_lon_corners[:-1]) - - def test_coords_iris_to_esmpy_1d_non_circular(self): - """Test coord conversion with 1d coords and non circular longitudes.""" - (esmpy_lat, esmpy_lon, - esmpy_lat_corners, esmpy_lon_corners) = coords_iris_to_esmpy( - self.lat_1d, self.lon_1d, False) - self.assertArrayEqual(esmpy_lat, self.expected_esmpy_lat) - self.assertArrayEqual(esmpy_lon, self.expected_esmpy_lon) - self.assertArrayEqual(esmpy_lat_corners, - self.expected_esmpy_lat_corners) - self.assertArrayEqual(esmpy_lon_corners, - self.expected_esmpy_lon_corners) - - def test_coords_iris_to_esmpy_2d_circular(self): - """Test coord conversion with 2d coords and circular longitudes.""" - (esmpy_lat, esmpy_lon, - esmpy_lat_corners, esmpy_lon_corners) = coords_iris_to_esmpy( - self.lat_2d, self.lon_2d, True) - self.assertArrayEqual(esmpy_lat, self.expected_esmpy_lat) - self.assertArrayEqual(esmpy_lon, self.expected_esmpy_lon) - self.assertArrayEqual(esmpy_lat_corners, - self.expected_esmpy_lat_corners[:-1]) - self.assertArrayEqual(esmpy_lon_corners, - self.expected_esmpy_lon_corners[:-1]) - - def test_coords_iris_to_esmpy_2d_non_circular(self): - """Test coord conversion with 2d coords and non circular longitudes.""" - (esmpy_lat, esmpy_lon, - esmpy_lat_corners, esmpy_lon_corners) = coords_iris_to_esmpy( - self.lat_2d, self.lon_2d, False) - self.assertArrayEqual(esmpy_lat, self.expected_esmpy_lat) - self.assertArrayEqual(esmpy_lon, self.expected_esmpy_lon) - self.assertArrayEqual(esmpy_lat_corners, - self.expected_esmpy_lat_corners) - self.assertArrayEqual(esmpy_lon_corners, - self.expected_esmpy_lon_corners) - - def test_get_grid_circular(self): - """Test building of ESMF grid from iris cube circular longitude.""" - expected_get_coords_calls = [ - mock.call(0), - mock.call(1), - mock.call(0, staggerloc=mock.sentinel.sl_corner), - mock.call(1, staggerloc=mock.sentinel.sl_corner), - ] - with mock.patch('ESMF.Grid', MockGrid) as mg: - mg.get_coords.reset_mock() - mg.add_coords.reset_mock() - mg.add_item.reset_mock() - get_grid(self.expected_esmpy_lat, self.expected_esmpy_lon, - self.expected_esmpy_lat_corners[:-1], - self.expected_esmpy_lon_corners[:-1], True) - mg.get_coords.assert_has_calls(expected_get_coords_calls) - mg.add_coords.assert_called_once_with([mock.sentinel.sl_corner]) - mg.add_item.assert_called_once_with(mock.sentinel.gi_mask, - mock.sentinel.sl_center) - - def test_get_grid_non_circular(self): - """Test building of ESMF grid from iris cube non circular longitude.""" - expected_get_coords_calls = [ - mock.call(0), - mock.call(1), - mock.call(0, staggerloc=mock.sentinel.sl_corner), - mock.call(1, staggerloc=mock.sentinel.sl_corner), - ] - with mock.patch('ESMF.Grid', MockGrid) as mg: - mg.get_coords.reset_mock() - mg.add_coords.reset_mock() - mg.add_item.reset_mock() - get_grid(self.expected_esmpy_lat, self.expected_esmpy_lon, - self.expected_esmpy_lat_corners, - self.expected_esmpy_lon_corners, False) - mg.get_coords.assert_has_calls(expected_get_coords_calls) - mg.add_coords.assert_called_once_with([mock.sentinel.sl_corner]) - mg.add_item.assert_called_once_with(mock.sentinel.gi_mask, - mock.sentinel.sl_center) - - def test_is_lon_circular_dim_coords_true(self): - """Test detection of circular longitudes 1d dim coords.""" - is_circ = is_lon_circular(self.lon_1d) - self.assertTrue(is_circ) - - def test_is_lon_circular_dim_coords_false(self): - """Test detection of non circular longitudes 1d dim coords.""" - self.lon_1d.circular = False - is_circ = is_lon_circular(self.lon_1d) - self.assertFalse(is_circ) - - def test_is_lon_circular_1d_aux_coords(self): - """Test detection of circular longitudes 1d aux coords.""" - is_circ = is_lon_circular(self.lon_1d_aux) - self.assertTrue(is_circ) - - def test_is_lon_circular_invalid_dimension(self): - """Test detection of circular longitudes, invalid coordinates.""" - self.assertRaises(NotImplementedError, is_lon_circular, self.lon_3d) - - def test_is_lon_circular_invalid_argument(self): - """Test detection of circular longitudes, invalid argument.""" - self.assertRaises(ValueError, is_lon_circular, None) - - def test_is_lon_circular_2d_aux_coords(self): - """Test detection of circular longitudes 2d aux coords.""" - is_circ = is_lon_circular(self.lon_2d) - self.assertTrue(is_circ) - - def test_is_lon_circular_2d_aux_coords_non_circ(self): - """Test detection of non circular longitudes 2d aux coords.""" - is_circ = is_lon_circular(self.lon_2d_non_circular) - self.assertFalse(is_circ) - - @mock.patch('ESMF.Grid', MockGrid) - @mock.patch('ESMF.Field') - def test_cube_to_empty_field(self, mock_field): - """Test building of empty field from iris cube.""" - field = cube_to_empty_field(self.cube) - self.assertEqual(mock_field.return_value, field) - mock_field.assert_called_once() - ckwargs = mock_field.call_args[1] - self.assertEqual('longname', ckwargs['name']) - self.assertEqual(mock.sentinel.sl_center, ckwargs['staggerloc']) - - def test_get_representant(self): - """Test extraction of horizontal representant from iris cube.""" - horizontal_slice = ['latitude', 'longitude'] - get_representant(self.cube, horizontal_slice) - self.cube.__getitem__.assert_called_once_with((slice(None, None, None), - slice(None, None, - None))) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.cube_to_empty_field', - mock_cube_to_empty_field) - @mock.patch('ESMF.Regrid') - def test_build_regridder_2d_unmasked_data(self, mock_regrid): - """Test building of 2d regridder for unmasked data.""" - self.cube.data = self.cube.data.data - self.cube.field = mock.Mock() - mock.sentinel.dst_rep.field = mock.Mock() - build_regridder_2d(self.cube, mock.sentinel.dst_rep, - mock.sentinel.regrid_method, .99) - expected_kwargs = { - 'src_mask_values': np.array([1]), - 'dst_mask_values': np.array([1]), - 'regrid_method': mock.sentinel.regrid_method, - 'srcfield': self.cube.field, - 'dstfield': mock.sentinel.dst_rep.field, - 'unmapped_action': mock.sentinel.ua_ignore, - 'ignore_degenerate': True, - } - mock_regrid.assert_called_once_with(**expected_kwargs) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.cube_to_empty_field', - mock_cube_to_empty_field) - @mock.patch('ESMF.Regrid') - def test_build_regridder_2d_masked_data(self, mock_regrid): - """Test building of 2d regridder for masked data.""" - mock_regrid.return_value = mock.Mock( - return_value=mock.Mock(data=self.data.T)) - regrid_method = mock.sentinel.rm_bilinear - src_rep = mock.MagicMock(data=self.data) - dst_rep = mock.MagicMock() - src_rep.field = mock.MagicMock(data=self.data.copy()) - dst_rep.field = mock.MagicMock() - build_regridder_2d(src_rep, dst_rep, regrid_method, .99) - expected_calls = [ - mock.call( - src_mask_values=np.array([]), - dst_mask_values=np.array([]), - srcfield=src_rep.field, - dstfield=dst_rep.field, - unmapped_action=mock.sentinel.ua_ignore, - ignore_degenerate=True, - regrid_method=regrid_method), - mock.call( - src_mask_values=np.array([1]), - dst_mask_values=np.array([1]), - regrid_method=regrid_method, - srcfield=src_rep.field, - dstfield=dst_rep.field, - unmapped_action=mock.sentinel.ua_ignore, - ignore_degenerate=True), - ] - kwargs = mock_regrid.call_args_list[0][-1] - expected_kwargs = expected_calls[0][-1] - self.assertEqual(expected_kwargs.keys(), kwargs.keys()) - array_keys = set(['src_mask_values', 'dst_mask_values']) - for key in kwargs.keys(): - if key in array_keys: - self.assertTrue((expected_kwargs[key] == kwargs[key]).all()) - else: - self.assertEqual(expected_kwargs[key], kwargs[key]) - self.assertTrue(mock_regrid.call_args_list[1] == expected_calls[1]) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.cube_to_empty_field', - mock_cube_to_empty_field) - @mock.patch('ESMF.Regrid') - def test_regridder_2d_unmasked_data(self, mock_regrid): - """Test regridder for unmasked 2d data.""" - field_regridder = mock.Mock(return_value=mock.Mock(data=self.data.T)) - mock_regrid.return_value = field_regridder - regrid_method = mock.sentinel.rm_bilinear - src_rep = mock.MagicMock(data=self.data, dtype=np.float32) - dst_rep = mock.MagicMock(shape=(4, 4)) - regridder = build_regridder_2d(src_rep, dst_rep, regrid_method, .99) - field_regridder.reset_mock() - regridder(src_rep) - field_regridder.assert_called_once_with(src_rep.field, dst_rep.field) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.cube_to_empty_field', - mock_cube_to_empty_field) - @mock.patch('ESMF.Regrid') - def test_regridder_2d_masked_data(self, mock_regrid): - """Test regridder for masked 2d data.""" - field_regridder = mock.Mock(return_value=mock.Mock(data=self.data.T)) - mock_regrid.return_value = field_regridder - regrid_method = mock.sentinel.rm_bilinear - src_rep = mock.MagicMock(data=self.data) - dst_rep = mock.MagicMock(shape=(4, 4)) - regridder = build_regridder_2d(src_rep, dst_rep, regrid_method, .99) - field_regridder.reset_mock() - regridder(self.cube) - field_regridder.assert_called_once_with(src_rep.field, dst_rep.field) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.build_regridder_3d') - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.build_regridder_2d') - def test_build_regridder_2(self, mock_regridder_2d, mock_regridder_3d): - """Test build regridder for 2d data.""" - # pylint: disable=no-self-use - src_rep = mock.Mock(ndim=2) - dst_rep = mock.Mock(ndim=2) - build_regridder(src_rep, dst_rep, 'nearest') - mock_regridder_2d.assert_called_once_with( - src_rep, dst_rep, mock.sentinel.rm_nearest_stod, .99) - mock_regridder_3d.assert_not_called() - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.build_regridder_3d') - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.build_regridder_2d') - def test_build_regridder_3(self, mock_regridder_2d, mock_regridder_3d): - """Test build regridder for 3d data.""" - # pylint: disable=no-self-use - src_rep = mock.Mock(ndim=3) - dst_rep = mock.Mock(ndim=3) - build_regridder(src_rep, dst_rep, 'nearest') - mock_regridder_3d.assert_called_once_with( - src_rep, dst_rep, mock.sentinel.rm_nearest_stod, .99) - mock_regridder_2d.assert_not_called() - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_representant') - def test_get_grid_representant_2d(self, mock_get_representant): - """Test extraction of 2d grid representant from 2 spatial d cube.""" - mock_get_representant.return_value = mock.sentinel.ret - ret = get_grid_representant(self.cube) - self.assertEqual(mock.sentinel.ret, ret) - mock_get_representant.assert_called_once_with( - self.cube, ['latitude', 'longitude']) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_representant') - def test_get_grid_representant_2d_horiz_only(self, mock_get_representant): - """Test extraction of forced 2d grid representant from 2d cube.""" - mock_get_representant.return_value = mock.sentinel.ret - ret = get_grid_representant(self.cube, True) - self.assertEqual(mock.sentinel.ret, ret) - mock_get_representant.assert_called_once_with( - self.cube, ['latitude', 'longitude']) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_representant') - def test_get_grid_representant_3d(self, mock_get_representant): - """Test extraction of 3d grid representant from 3 spatial d cube.""" - mock_get_representant.return_value = mock.sentinel.ret - ret = get_grid_representant(self.cube_3d) - self.assertEqual(mock.sentinel.ret, ret) - mock_get_representant.assert_called_once_with( - self.cube_3d, [self.depth, 'latitude', 'longitude']) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_representant') - def test_get_grid_representant_3d_horiz_only(self, mock_get_representant): - """Test extraction of 2d grid representant from 3 spatial d cube.""" - mock_get_representant.return_value = mock.sentinel.ret - ret = get_grid_representant(self.cube_3d, True) - self.assertEqual(mock.sentinel.ret, ret) - mock_get_representant.assert_called_once_with( - self.cube_3d, ['latitude', 'longitude']) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_grid_representant', - mock.Mock(side_effect=identity)) - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_empty_data') - @mock.patch('iris.cube.Cube') - def test_get_grid_representants_3d_src(self, mock_cube, - mock_get_empty_data): - """Test extraction of grid representants from 3 spatial d cube.""" - src = self.cube_3d - mock_get_empty_data.return_value = mock.sentinel.empty_data - src_rep = get_grid_representants(src, self.cube)[0] - self.assertEqual(src, src_rep) - mock_cube.assert_called_once_with( - data=mock.sentinel.empty_data, - standard_name=src.standard_name, - long_name=src.long_name, - var_name=src.var_name, - units=src.units, - attributes=src.attributes, - cell_methods=src.cell_methods, - dim_coords_and_dims=[(self.depth, 0)], - ) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_grid_representant', - mock.Mock(side_effect=identity)) - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_empty_data') - @mock.patch('iris.cube.Cube') - def test_get_grid_representants_2d_src(self, mock_cube, - mock_get_empty_data): - """Test extraction of grid representants from 2 spatial d cube.""" - src = self.cube - mock_get_empty_data.return_value = mock.sentinel.empty_data - src_rep = get_grid_representants(src, self.cube)[0] - self.assertEqual(src, src_rep) - mock_cube.assert_called_once_with( - data=mock.sentinel.empty_data, - standard_name=src.standard_name, - long_name=src.long_name, - var_name=src.var_name, - units=src.units, - attributes=src.attributes, - cell_methods=src.cell_methods, - dim_coords_and_dims=[], - ) - - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.map_slices') - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.build_regridder') - @mock.patch('esmvaltool.preprocessor._regrid_esmpy.get_grid_representants', - mock.Mock(side_effect=identity)) - def test_regrid(self, mock_build_regridder, mock_map_slices): - """Test full regrid method.""" - mock_build_regridder.return_value = mock.sentinel.regridder - mock_map_slices.return_value = mock.sentinel.regridded - regrid(self.cube_3d, self.cube) - mock_build_regridder.assert_called_once_with(self.cube_3d, self.cube, - 'linear') - mock_map_slices.assert_called_once_with( - self.cube_3d, mock.sentinel.regridder, self.cube_3d, self.cube) diff --git a/tests/unit/preprocessor/_time/__init__.py b/tests/unit/preprocessor/_time/__init__.py deleted file mode 100644 index 720cc45c94..0000000000 --- a/tests/unit/preprocessor/_time/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Test suite for _time module.""" diff --git a/tests/unit/preprocessor/_time/test_time.py b/tests/unit/preprocessor/_time/test_time.py deleted file mode 100644 index bcb635d700..0000000000 --- a/tests/unit/preprocessor/_time/test_time.py +++ /dev/null @@ -1,332 +0,0 @@ -"""Unit tests for the :func:`esmvaltool.preprocessor._time` module.""" - -import unittest - -import iris -import iris.coord_categorisation -import iris.coords -import numpy as np -import pytest -from cf_units import Unit -from iris.cube import Cube -from numpy.testing import assert_array_equal - -import tests -from esmvaltool.preprocessor._time import (annual_mean, extract_month, - extract_season, extract_time, - regrid_time, time_average) - - -def _create_sample_cube(): - cube = Cube(np.arange(1, 25), var_name='co2', units='J') - cube.add_dim_coord( - iris.coords.DimCoord( - np.arange(15., 720., 30.), - standard_name='time', - units=Unit('days since 1950-01-01 00:00:00', calendar='gregorian'), - ), - 0, - ) - iris.coord_categorisation.add_month_number(cube, 'time') - return cube - - -def add_auxiliary_coordinate(cubeList): - """Add AuxCoords to cubes in cubeList.""" - for cube in cubeList: - iris.coord_categorisation.add_day_of_month(cube, cube.coord('time')) - iris.coord_categorisation.add_day_of_year(cube, cube.coord('time')) - - -class TestExtractMonth(tests.Test): - """Tests for extract_month.""" - - def setUp(self): - """Prepare tests""" - self.cube = _create_sample_cube() - - def test_get_january(self): - """Test january extraction""" - sliced = extract_month(self.cube, 1) - print(sliced) - assert_array_equal( - np.array([1, 1]), - sliced.coord('month_number').points) - - -class TestTimeSlice(tests.Test): - """Tests for extract_time.""" - - def setUp(self): - """Prepare tests""" - self.cube = _create_sample_cube() - - def test_extract_time(self): - """Test extract_time.""" - sliced = extract_time(self.cube, 1950, 1, 1, 1950, 12, 31) - print(sliced) - assert_array_equal( - np.arange(1, 13, 1), - sliced.coord('month_number').points) - - def test_extract_time_no_slice(self): - """Test fail of extract_time.""" - with self.assertRaises(ValueError): - extract_time(self.cube, 2200, 1, 1, 2200, 12, 31) - - def test_extract_time_one_time(self): - """Test extract_time with one time step.""" - cube = _create_sample_cube() - cube = cube.collapsed('time', iris.analysis.MEAN) - sliced = extract_time(cube, 1950, 1, 1, 1952, 12, 31) - print(sliced) - assert_array_equal(np.array([360.]), sliced.coord('time').points) - - def test_extract_time_no_time(self): - """Test extract_time with no time step.""" - cube = _create_sample_cube()[0] - sliced = extract_time(cube, 1950, 1, 1, 1950, 12, 31) - print('sliced', sliced, sliced.shape) - print('cube', cube, cube.shape) - assert cube == sliced - - -class TestExtractSeason(tests.Test): - """Tests for extract_season.""" - - def setUp(self): - """Prepare tests""" - self.cube = _create_sample_cube() - - def test_get_djf(self): - """Test function for winter""" - sliced = extract_season(self.cube, 'djf') - print(sliced) - assert_array_equal( - np.array([1, 2, 12, 1, 2, 12]), - sliced.coord('month_number').points) - - def test_get_djf_caps(self): - """Test function works when season specified in caps""" - sliced = extract_season(self.cube, 'DJF') - print(sliced) - assert_array_equal( - np.array([1, 2, 12, 1, 2, 12]), - sliced.coord('month_number').points) - - def test_get_mam(self): - """Test function for spring""" - sliced = extract_season(self.cube, 'mam') - print(sliced) - assert_array_equal( - np.array([3, 4, 5, 3, 4, 5]), - sliced.coord('month_number').points) - - def test_get_jja(self): - """Test function for summer""" - sliced = extract_season(self.cube, 'jja') - print(sliced) - assert_array_equal( - np.array([6, 7, 8, 6, 7, 8]), - sliced.coord('month_number').points) - - def test_get_son(self): - """Test function for summer""" - sliced = extract_season(self.cube, 'son') - print(sliced) - assert_array_equal( - np.array([9, 10, 11, 9, 10, 11]), - sliced.coord('month_number').points) - - -class TestTimeAverage(tests.Test): - """Test class for the :func:`esmvaltool.preprocessor._time_pp` module""" - - def test_time_average(self): - """Test for time average of a 1D field.""" - data = np.ones((3)) - times = np.array([15., 45., 75.]) - bounds = np.array([[0., 30.], [30., 60.], [60., 90.]]) - time = iris.coords.DimCoord( - times, - bounds=bounds, - standard_name='time', - units=Unit('days since 1950-01-01', calendar='gregorian')) - cube = iris.cube.Cube(data, dim_coords_and_dims=[(time, 0)]) - - result = time_average(cube) - expected = np.array([1.]) - assert_array_equal(result.data, expected) - - def test_time_average_uneven(self): - """Test for time average of a 1D field with uneven time boundaries.""" - data = np.array([1., 5.]) - times = np.array([5., 25.]) - bounds = np.array([[0., 1.], [1., 4.]]) - time = iris.coords.DimCoord( - times, - bounds=bounds, - standard_name='time', - units=Unit('days since 1950-01-01', calendar='gregorian')) - cube = iris.cube.Cube(data, dim_coords_and_dims=[(time, 0)]) - - result = time_average(cube) - expected = np.array([4.]) - assert_array_equal(result.data, expected) - - def test_time_average_365_day(self): - """Test for time avg of a realisitc time axis and 365 day calendar""" - data = np.ones((6, )) - times = np.array([15, 45, 74, 105, 135, 166]) - bounds = np.array([[0, 31], [31, 59], [59, 90], [90, 120], [120, 151], - [151, 181]]) - time = iris.coords.DimCoord( - times, - bounds=bounds, - standard_name='time', - var_name='time', - units=Unit('days since 1950-01-01', calendar='365_day')) - cube = iris.cube.Cube(data, dim_coords_and_dims=[(time, 0)]) - - result = time_average(cube) - expected = np.array([1.]) - assert_array_equal(result.data, expected) - - -class TestRegridTimeMonthly(tests.Test): - """Tests for regrid_time with monthly frequency.""" - - def setUp(self): - """Prepare tests""" - self.cube_1 = _create_sample_cube() - self.cube_2 = _create_sample_cube() - self.cube_2.data = self.cube_2.data * 2. - self.cube_2.remove_coord('time') - self.cube_2.add_dim_coord( - iris.coords.DimCoord( - np.arange(14., 719., 30.), - standard_name='time', - units=Unit( - 'days since 1950-01-01 00:00:00', calendar='360_day'), - ), - 0, - ) - add_auxiliary_coordinate([self.cube_1, self.cube_2]) - - def test_regrid_time_mon(self): - """Test changes to cubes.""" - # test monthly - newcube_1 = regrid_time(self.cube_1, frequency='mon') - newcube_2 = regrid_time(self.cube_2, frequency='mon') - # no changes to core data - assert_array_equal(newcube_1.data, self.cube_1.data) - assert_array_equal(newcube_2.data, self.cube_2.data) - # no changes to number of coords and aux_coords - assert len(newcube_1.coords()) == len(self.cube_1.coords()) - assert len(newcube_1.aux_coords) == len(self.cube_1.aux_coords) - # test difference; also diff is zero - expected = self.cube_1.data - diff_cube = newcube_2 - newcube_1 - assert_array_equal(diff_cube.data, expected) - - -class TestRegridTimeDaily(tests.Test): - """Tests for regrid_time with daily frequency.""" - - def setUp(self): - """Prepare tests""" - self.cube_1 = _create_sample_cube() - self.cube_2 = _create_sample_cube() - self.cube_2.data = self.cube_2.data * 2. - self.cube_1.remove_coord('time') - self.cube_2.remove_coord('time') - self.cube_1.add_dim_coord( - iris.coords.DimCoord( - np.arange(14. * 24. + 6., 38. * 24. + 6., 24.), - standard_name='time', - units=Unit( - 'hours since 1950-01-01 00:00:00', calendar='360_day'), - ), - 0, - ) - self.cube_2.add_dim_coord( - iris.coords.DimCoord( - np.arange(14. * 24. + 3., 38. * 24. + 3., 24.), - standard_name='time', - units=Unit( - 'hours since 1950-01-01 00:00:00', calendar='360_day'), - ), - 0, - ) - add_auxiliary_coordinate([self.cube_1, self.cube_2]) - - def test_regrid_time_day(self): - """Test changes to cubes.""" - # test daily - newcube_1 = regrid_time(self.cube_1, frequency='day') - newcube_2 = regrid_time(self.cube_2, frequency='day') - # no changes to core data - self.assertArrayEqual(newcube_1.data, self.cube_1.data) - self.assertArrayEqual(newcube_2.data, self.cube_2.data) - # no changes to number of coords and aux_coords - assert len(newcube_1.coords()) == len(self.cube_1.coords()) - assert len(newcube_1.aux_coords) == len(self.cube_1.aux_coords) - # test difference; also diff is zero - expected = self.cube_1.data - diff_cube = newcube_2 - newcube_1 - self.assertArrayEqual(diff_cube.data, expected) - - -def make_time_series(number_years=2): - """Make a cube with time only dimension.""" - times = np.array([i * 30 + 15 for i in range(0, 12 * number_years, 1)]) - bounds = np.array([i * 30 for i in range(0, 12 * number_years + 1, 1)]) - bounds = np.array( - [[bnd, bounds[index + 1]] for index, bnd in enumerate(bounds[:-1])]) - data = np.ones_like(times) - time = iris.coords.DimCoord( - times, - bounds=bounds, - standard_name='time', - units=Unit('days since 1950-01-01', calendar='360_day')) - cube = iris.cube.Cube(data, dim_coords_and_dims=[(time, 0)]) - return cube - - -@pytest.mark.parametrize('existing_coord', [True, False]) -def test_annual_average(existing_coord): - """Test for annual average.""" - cube = make_time_series(number_years=2) - if existing_coord: - iris.coord_categorisation.add_year(cube, 'time') - - result = annual_mean(cube, decadal=False) - expected = np.array([1., 1.]) - assert_array_equal(result.data, expected) - expected_time = np.array([180., 540.]) - assert_array_equal(result.coord('time').points, expected_time) - - -@pytest.mark.parametrize('existing_coord', [True, False]) -def test_decadal_average(existing_coord): - """Test for decadal average.""" - cube = make_time_series(number_years=20) - if existing_coord: - - def get_decade(coord, value): - """Callback function to get decades from cube.""" - date = coord.units.num2date(value) - return date.year - date.year % 10 - - iris.coord_categorisation.add_categorised_coord( - cube, 'decade', 'time', get_decade) - - result = annual_mean(cube, decadal=True) - expected = np.array([1., 1.]) - assert_array_equal(result.data, expected) - expected_time = np.array([1800., 5400.]) - assert_array_equal(result.coord('time').points, expected_time) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/_volume/__init__.py b/tests/unit/preprocessor/_volume/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/unit/preprocessor/_volume/test_volume.py b/tests/unit/preprocessor/_volume/test_volume.py deleted file mode 100644 index 59071b2925..0000000000 --- a/tests/unit/preprocessor/_volume/test_volume.py +++ /dev/null @@ -1,136 +0,0 @@ -"""Unit test for :func:`esmvaltool.preprocessor._volume`.""" - -import unittest - -import iris -import numpy as np -from cf_units import Unit - -import tests -from esmvaltool.preprocessor._volume import (average_volume, depth_integration, - extract_trajectory, - extract_transect, extract_volume) - - -class Test(tests.Test): - """Test class for _volume_pp""" - - def setUp(self): - """Prepare tests""" - coord_sys = iris.coord_systems.GeogCS(iris.fileformats.pp.EARTH_RADIUS) - data1 = np.ones((3, 2, 2)) - data2 = np.ma.ones((2, 3, 2, 2)) - data3 = np.ma.ones((4, 3, 2, 2)) - mask3 = np.full((4, 3, 2, 2), False) - mask3[0, 0, 0, 0] = True - data3 = np.ma.array(data3, mask=mask3) - - time = iris.coords.DimCoord([15, 45], - standard_name='time', - bounds=[[1., 30.], [30., 60.]], - units=Unit( - 'days since 1950-01-01', - calendar='gregorian')) - time2 = iris.coords.DimCoord([1., 2., 3., 4.], - standard_name='time', - bounds=[ - [0.5, 1.5], - [1.5, 2.5], - [2.5, 3.5], - [3.5, 4.5], - ], - units=Unit( - 'days since 1950-01-01', - calendar='gregorian')) - - zcoord = iris.coords.DimCoord([0.5, 5., 50.], - long_name='zcoord', - bounds=[[0., 2.5], [2.5, 25.], - [25., 250.]], - units='m', - attributes={'positive': 'down'}) - lons2 = iris.coords.DimCoord([1.5, 2.5], - standard_name='longitude', - bounds=[[1., 2.], [2., 3.]], - units='degrees_east', - coord_system=coord_sys) - lats2 = iris.coords.DimCoord([1.5, 2.5], - standard_name='latitude', - bounds=[[1., 2.], [2., 3.]], - units='degrees_north', - coord_system=coord_sys) - - coords_spec3 = [(zcoord, 0), (lats2, 1), (lons2, 2)] - self.grid_3d = iris.cube.Cube(data1, dim_coords_and_dims=coords_spec3) - - coords_spec4 = [(time, 0), (zcoord, 1), (lats2, 2), (lons2, 3)] - self.grid_4d = iris.cube.Cube(data2, dim_coords_and_dims=coords_spec4) - - coords_spec5 = [(time2, 0), (zcoord, 1), (lats2, 2), (lons2, 3)] - self.grid_4d_2 = iris.cube.Cube( - data3, dim_coords_and_dims=coords_spec5) - - # allow iris to figure out the axis='z' coordinate - iris.util.guess_coord_axis(self.grid_3d.coord('zcoord')) - iris.util.guess_coord_axis(self.grid_4d.coord('zcoord')) - iris.util.guess_coord_axis(self.grid_4d_2.coord('zcoord')) - - def test_extract_volume(self): - """Test to extract the top two layers of a 3 layer depth column.""" - result = extract_volume(self.grid_3d, 0., 10.) - expected = np.ones((2, 2, 2)) - print(result.data, expected.data) - self.assertArrayEqual(result.data, expected) - - def test_average_volume(self): - """Test to take the volume weighted average of a (2,3,2,2) cube.""" - result = average_volume(self.grid_4d, 'latitude', 'longitude') - expected = np.array([1., 1.]) - self.assertArrayEqual(result.data, expected) - - def test_average_volume_long(self): - """ - Test to take the volume weighted average of a (4,3,2,2) cube. - - This extra time is needed, as the volume average calculation uses - different methods for small and large cubes. - """ - result = average_volume(self.grid_4d_2, 'latitude', 'longitude') - expected = np.array([1., 1., 1., 1.]) - self.assertArrayEqual(result.data, expected) - - def test_depth_integration_1d(self): - """Test to take the depth integration of a 3 layer cube.""" - result = depth_integration(self.grid_3d[:, 0, 0]) - expected = np.ones((1, 1)) * 250. - print(result.data, expected.data) - self.assertArrayEqual(result.data, expected) - - def test_depth_integration_3d(self): - """Test to take the depth integration of a 3 layer cube.""" - result = depth_integration(self.grid_3d) - expected = np.ones((2, 2)) * 250. - print(result.data, expected.data) - self.assertArrayEqual(result.data, expected) - - def test_extract_transect_latitude(self): - """Test to extract a transect from a (3, 2, 2) cube.""" - result = extract_transect(self.grid_3d, latitude=1.5) - expected = np.ones((3, 2)) - self.assertArrayEqual(result.data, expected) - - def test_extract_transect_longitude(self): - """Test to extract a transect from a (3, 2, 2) cube.""" - result = extract_transect(self.grid_3d, longitude=1.5) - expected = np.ones((3, 2)) - self.assertArrayEqual(result.data, expected) - - def test_extract_trajectory(self): - """Test to extract a trajectory from a (3, 2, 2) cube.""" - result = extract_trajectory(self.grid_3d, [1.5, 2.5], [2., 2.], 2) - expected = np.ones((3, 2)) - self.assertArrayEqual(result.data, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/unit/preprocessor/test_runner.py b/tests/unit/preprocessor/test_runner.py deleted file mode 100644 index 8814c5fd4a..0000000000 --- a/tests/unit/preprocessor/test_runner.py +++ /dev/null @@ -1,16 +0,0 @@ -from esmvaltool.preprocessor import (DEFAULT_ORDER, MULTI_MODEL_FUNCTIONS, - _get_itype) - - -def test_first_argument_name(): - """Check that the input type of all preprocessor functions is valid.""" - valid_itypes = ('file', 'files', 'cube', 'cubes', 'products') - for step in DEFAULT_ORDER: - itype = _get_itype(step) - assert itype in valid_itypes, ( - "Invalid preprocessor function definition {}, first argument " - "should be one of {} but is {}".format(step, valid_itypes, itype)) - - -def test_multi_model_exist(): - assert MULTI_MODEL_FUNCTIONS.issubset(set(DEFAULT_ORDER)) diff --git a/tests/unit/test_lint.py b/tests/unit/test_lint.py index b07ae55f25..4d3513b15b 100644 --- a/tests/unit/test_lint.py +++ b/tests/unit/test_lint.py @@ -16,7 +16,7 @@ def test_pep8_conformance(): ] exclude_paths = [ 'esmvaltool/doc', 'esmvaltool/diag_scripts/cvdp/cvdp', - 'esmvaltool/cmor/tables' + 'esmvalcore.cmor/tables' ] print("PEP8 check of directories: {}\n".format(', '.join(check_paths)))