diff --git a/.circleci/config.yml b/.circleci/config.yml index fc51394184..1560a9b8b9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -245,6 +245,31 @@ jobs: - store_artifacts: path: /logs + conda_install: + # Test conda package installation + working_directory: /esmvaltool + docker: + - image: continuumio/miniconda + steps: + - run: + command: | + set -x + # Install prerequisites + mkdir /logs + apt-get update > /logs/apt.txt 2>&1 + apt-get install -y build-essential >> /logs/apt.txt 2>&1 + conda update -y conda > /logs/conda.txt 2>&1 + # Create and activate conda environment + conda create -y --name esmvaltool python=3 + set +x; source activate esmvaltool; set -x + # Install + conda install -y esmvaltool -c esmvalgroup -c conda-forge -c birdhouse + # Log versions + conda env export > /logs/environment.yml + # Test installation + esmvaltool -h + ncl -V + ncl: # Test ncl conda package working_directory: /ncl @@ -296,4 +321,5 @@ workflows: - develop - doc - conda_build + - conda_install - ncl diff --git a/.gitignore b/.gitignore index 7d3cbe00cb..484a57a9ee 100644 --- a/.gitignore +++ b/.gitignore @@ -43,8 +43,12 @@ __pycache__/ .pydevproject .settings +#Create by VSCode +.vscode + #pytest .cache +.pytest_cache # PyInstaller # Usually these files are written by a python script from a template @@ -82,3 +86,13 @@ test-reports/ doc/sphinx/source/diag_scripts/** doc/sphinx/source/plot_scripts/** doc/sphinx/build + +# Data files +*.nc +*.nc4 +*.grb +*.grib +*.RData +*.Rdata +*.rdata +*.pkl diff --git a/.pylintrc b/.pylintrc index 4094c1f4b0..4a799b2118 100644 --- a/.pylintrc +++ b/.pylintrc @@ -65,7 +65,7 @@ confidence= # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" -disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating +disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating,import-error [REPORTS] diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 4925bc2836..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM centos:7 - -# install development tools -RUN yum clean all && yum makecache && yum update -y && \ - yum groupinstall -y "Development tools" - -# create directory for downloaded files -RUN mkdir /src -WORKDIR /src - -# isntall conda -RUN curl -L -O https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -RUN bash ./Miniconda2-latest-Linux-x86_64.sh -p /miniconda -b -ENV PATH=/miniconda/bin:${PATH} -RUN conda update -y conda -RUN conda update -y pip - -# install python packages specified in conda environment file (copied from context) -COPY environment.yml /src/environment.yml -RUN conda env update -f /src/environment.yml - -#Copy entire ESMValTool source into the container -RUN mkdir /src/ESMValTool -COPY . /src/ESMValTool/ - -WORKDIR /src/ESMValTool - -#overwrite default config_private with one specifically created for Docker -COPY docker/1.1.0/centos/7/config_private.xml /src/ESMValTool/config_private.xml - -ENTRYPOINT ["python", "main.py"] -CMD ["nml/namelist_test.xml"] diff --git a/NOTICE b/NOTICE index 1b96809b01..ae97a93604 100644 --- a/NOTICE +++ b/NOTICE @@ -30,37 +30,37 @@ und Raumfahrt e.V. (DLR), ESMValTool Project PI “Entire ESMValTool” Copyright 2011- Swedish Meteorological and Hydrological Institute (SMHI) “Entire ESMValTool” -British Crown Copyright 2015 “namelist_SAMonsoon.xml, namelist_SAMonsoon_AMIP.xml, -namelist_SAMonsoon_daily.xml, SPHINX” +British Crown Copyright 2015 “recipe_SAMonsoon.yml, recipe_SAMonsoon_AMIP.yml, +recipe_SAMonsoon_daily.yml, SPHINX” -Copyright 2014-2015 University of Exeter “Carbon Cycle “namelist_anav13jclim.xml” +Copyright 2014-2015 University of Exeter “Carbon Cycle “recipe_anav13jclim.yml” Copyright 2014-2015 Tyndall Centre for Climate Change Research, School of Environmental -Sciences, University of East Anglia, Norwich “namelist_GlobalOcean.xml” +Sciences, University of East Anglia, Norwich “recipe_GlobalOcean.yml” -Copyright 2015 Agenzia nazionale per le nuove tecnologie, l’energia e lo sviluppo economico sostenibile (ENEA) “Ozone (namelist_eyring13jgr.xml; namelist_eyring06jgr.xml) +Copyright 2015 Agenzia nazionale per le nuove tecnologie, l’energia e lo sviluppo economico sostenibile (ENEA) “Ozone (recipe_eyring13jgr.yml; recipe_eyring06jgr.yml) -Copyright 2014-2015 ETH Zurich, Switzerland “namelist_Evapotransport.xml, namelist_SPI.xml” +Copyright 2014-2015 ETH Zurich, Switzerland “recipe_Evapotransport.yml, recipe_SPI.yml” -Copyright 2015 University Corporation for Atmospheric Research (UCAR) “Climate Variability Diagnostic Package (namelist_CVDP.xml)” +Copyright 2015 University Corporation for Atmospheric Research (UCAR) “Climate Variability Diagnostic Package (recipe_CVDP.yml)” Copyright 2015 Deutsches Klimarechenzentrum (DKRZ) “ESGF coupling“ -Copyright 2015 Max-Planck-Institute for Meteorology (MPI) “namelist_runoff_et.xml” +Copyright 2015 Max-Planck-Institute for Meteorology (MPI) “recipe_runoff_et.yml” Copyright 2015 National Centre for Atmospheric Science, British Atmospheric Data Centre, STFC Rutherford Appleton Laboratory “ESGF coupling” -Copyright 2015-2016 Ludwig Maximilians University Munich (LMU) “Automated Testing”, contributions to “namelist_lauer17rse.xml” +Copyright 2015-2016 Ludwig Maximilians University Munich (LMU) “Automated Testing”, contributions to “recipe_lauer17rse.yml” -Copyright 2015 Finnish Meteorological Institute (FMI) “namelist_TropicalVariability.xml, namelist_SouthernHemisphere.xml” +Copyright 2015 Finnish Meteorological Institute (FMI) “recipe_TropicalVariability.yml, recipe_SouthernHemisphere.yml” -Copyright 2015 Institut Pierre Simon Laplace, “namelist_diurnalcycle.xml” +Copyright 2015 Institut Pierre Simon Laplace, “recipe_diurnalcycle.yml” Copyright 2015 University of Reading “ESGF coupling” -Copyright 2015 CNRM-GAME, Météo France and CNRS, “namelist_WAMonsoon.xml” +Copyright 2015 CNRM-GAME, Météo France and CNRS, “recipe_WAMonsoon.yml” -Copyright 2014-2015 Royal Netherlands Meteorological Institute (KNMI) “namelist_SouthernOcean.xml” +Copyright 2014-2015 Royal Netherlands Meteorological Institute (KNMI) “recipe_SouthernOcean.yml” Copyright 2008- 2012 UCAR “Chemistry-Climate Model Validation (CCMVal) Diagnostic Tool” diff --git a/README.md b/README.md index 13316bb9d5..1266d14d35 100644 --- a/README.md +++ b/README.md @@ -13,18 +13,19 @@ This is the development branch for version 2 of ESMValTool. To get started devel ### Getting started To install in development mode, follow these instructions. -- [Download and install conda](https://conda.io/docs/user-guide/install/linux.html) +- [Download and install conda](https://conda.io/docs/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) +- If using (t)csh shell, do not prepend the installation path (``) to the environment variable PATH (as recommended by the installation procedure), but add `source /etc/profile.d/conda.csh` to the `.cshrc`/`.tcshrc` file instead - Update conda: `conda update -y conda` - Create a conda environment: `conda create -y -n esmvaltool python=3` -- Activate the esmvaltool environment: `source activate esmvaltool` +- Activate the esmvaltool environment: `source activate esmvaltool` (or `conda activate esmvaltool` if using (t)csh shell) - Clone the ESMValTool github repository: `git clone git@github.com/ESMValGroup/ESMValTool` - Go to the esmvaltool directory: `cd ESMValTool` - Check out the version 2 development branch: `git checkout version2_development` - Update the esmvaltool conda environment `conda env update` -- Install in development mode: `pip install -e .[develop]` +- Install in development mode: `pip install -e .[develop]` (or `pip install -e '.[develop]'` if using (t)csh shell) - Test that your installation was succesful by running `esmvaltool -h`. - 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 namelists are located in the directory `esmvaltool/namelists`. +- Available recipes are located in the directory `esmvaltool/recipes`. ### Running tests Go to the directory where the repository is cloned and run `./setup.py test`. Tests will also be run automatically by CircleCI. diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 9a18d75165..4ddd688a88 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -18,10 +18,10 @@ GENERAL DIAGNOSTIC AND PLOT ROUTINES - added sea-ice, xco2 and soil moisture to perfmetrics -- added optional uncertainty estimates to Taylor diagrams (namelist_lauer17rse.xml) +- added optional uncertainty estimates to Taylor diagrams (recipe_lauer17rse.yml) - new ESA CCI diagnostics for SST, soil moisture, land cover, xco2 - (namelist_lauer17rse.xml) -- added IPCC ch.9 figs. 9.28 and 9.30 (namelist_flato13ipcc.xml) + (recipe_lauer17rse.yml) +- added IPCC ch.9 figs. 9.28 and 9.30 (recipe_flato13ipcc.yml) - new variables including error estimates for extisting variables (Stderr) - added summary plot (various campaigns) for aerosol vertical profiles @@ -37,28 +37,28 @@ MINOR CHANGES AND BUG FIXES - remove inappropriate conversion (C-->K) from recognized_units.dat (only multiplicative factors are allowed) - added depth info for mrsos in reformat -- added diagnostic for calculating multi-model means (namelist_mmm.xml) +- added diagnostic for calculating multi-model means (recipe_mmm.yml) =============================================================================== Version 1.0.1 - June 2016 =============================================================================== GENERAL - paths to workdir, climodir, plotdir, model and observational data can now be - set in a single configuration file (config_private.xml) and included in the - main namelists using the @{} syntax (e.g., @{MODELPATH}/CMIP5/MPI-ESM-LR/...) -- reformat scripts for the observations can now be defined in a main namelist - (namelist_reformat_obs.xml) and passed to main.py with the -r option: - python main.py -r nml/namelist_reformat_obs.xml + set in a single configuration file (config_private.yml) and included in the + main recipes using the @{} syntax (e.g., @{MODELPATH}/CMIP5/MPI-ESM-LR/...) +- reformat scripts for the observations can now be defined in a main recipe + (recipe_reformat_obs.yml) and passed to main.py with the -r option: + python main.py -r nml/recipe_reformat_obs.yml DIAGNOSTIC AND PLOT ROUTINES - new diagnostics for precipitation over soil moisture anomalies in - namelist_sm_pr.xml + recipe_sm_pr.yml - enabled detrending in nml/cfg_GO/spco2compmapDiag.ncl -- added od870aer, abs550aer, od550lt1aer, toz to namelist_perfmetrics_CMIP5 +- added od870aer, abs550aer, od550lt1aer, toz to recipe_perfmetrics_CMIP5 - added display name wrapper to all(?) model entries for the Tropical Variability diagnostics - added option to alternative panelling of Tropical variability scatter plots -- added more options for plotting in namelist_aerosol_EMAC.xml +- added more options for plotting in recipe_aerosol_EMAC.yml OBSERVATIONS - added reformat_obs_ACCESS-2 and reformat_obs_HadCRUT4 @@ -67,16 +67,16 @@ OBSERVATIONS od550lt1aer MINOR CHANGES AND BUG FIXES -- cleaned up config files for namelist_perfmetrics_CMIP5 +- cleaned up config files for recipe_perfmetrics_CMIP5 - added fix file for CMIP5_CNRM-CM5 -- added dpi option to namelist for Python based diagnostics +- added dpi option to recipe for Python based diagnostics - added routines to use external file for model display names in Python - added functionality to switch display names in Python plots - small generalization and bugfix in logging routine in esmval_lib - added functionality for mapping model name onto display model names for figure headings -- added explanatory comment how to run the pybot easytest namelist test cases -- added namelist switch to control PNG figure resolution from namelist +- added explanatory comment how to run the pybot easytest recipe test cases +- added recipe switch to control PNG figure resolution from recipe - generalized handling of styles with Python diagnostics diff --git a/doc/ESMValTool_Users_Guide.pdf b/doc/ESMValTool_Users_Guide.pdf deleted file mode 100644 index e22b940ef6..0000000000 Binary files a/doc/ESMValTool_Users_Guide.pdf and /dev/null differ diff --git a/doc/ESMValTool_Version1.1.0_Software_License.pdf b/doc/ESMValTool_Version1.1.0_Software_License.pdf deleted file mode 100644 index cbe052f282..0000000000 Binary files a/doc/ESMValTool_Version1.1.0_Software_License.pdf and /dev/null differ diff --git a/doc/MASTER_authors-refs-acknow.txt b/doc/MASTER_authors-refs-acknow.txt deleted file mode 100644 index 8757da06af..0000000000 --- a/doc/MASTER_authors-refs-acknow.txt +++ /dev/null @@ -1,310 +0,0 @@ -# Full list of authors and references for the currently implemented -# diagnostics. Authors, diagnostics, observations and projects references -# are identified by the tags "A", "D", "E" and "P", respectively. -# -# For reporting, the following additional namelist and diagnostic tags -# are defined: -# "R" = CMIP6 realm, "T" = theme -# "DM" = domain, "PT" = plot type, "ST" = statistics -# -# Add new entries alphabetically (for authors) or at the end of the -# respective lists. Do not change the current entries! -# -# These tags are used by the write_references.ncl function to automatically -# create reference-and-acknowledgements document. -# See ./interface_scripts/write_references.ncl -# -# -### AUTHOR/CONTRIBUTOR LIST ############################################ - -### Core Team (PI and core developers) -A_eyri_ve = Eyring, Veronika (DLR, Germany - veronika.eyring 'at' dlr.de) -A_laue_ax = Lauer, Axel (DLR, Germany - axel.lauer 'at' dlr.de) -A_righ_ma = Righi, Mattia (DLR, Germany - mattia.righi 'at' dlr.de) -A_eval_ma = Evaldsson, Martin (SMHI, Sweden - martin.evaldsson 'at' smhi.se) -A_loew_al = Loew, Alexander (LMU, Germany - alexander.loew 'at' lmu.de) - -### Development team -A_anav_al = Anav, Alessandro (Univ. of Exeter, UK - a.anav 'at' exeter.ac.uk) -A_andr_ol = Andrews, Oliver (Tyndall Centre, UK - oliverdandrews 'at' googlemail.com) -A_bock_ls = Bock, Lisa (DLR, Germany - lisa.bock 'at' dlr.de) -A_chen_ja = Chen, Jack (NCAR, USA - cchen 'at' ucar.edu) -A_cion_ir = Cionni, Irene (ENEA, Italy - irene.cionni 'at' enea.it) -A_davi_ed = Davin, Edouard Leopold (ETH, CH, edouard.davin 'at' env.ethz.ch) -A_ehbr_ca = Ehbrecht, Carsten (DKRZ, Germany - ehbrecht 'at' dkrz.de) -A_fran_fr = Frank, Franziska (DLR, Germany - franziska.frank 'at' dlr.de) -A_gain_al = Gainusa-Bogdan, Alina (France) -A_gall_be = Gallego-Elvira, Belen (NERC, UK - belgal 'at' nerc.ac.uk) -A_gett_an = Gettelman, Andrew (NCAR, USA - andrew 'at' ucar.edu) -A_gott_kl = Gottschaldt, Klaus-Dirk (DLR, Germany - klaus-dirk.gottschaldt 'at' dlr.de) -A_hage_st = Hagemann, Stefan (MPI-M, Germany, stefan.hagemann 'at' mpimet.mpg.de) -A_hann_ul = Hansson, Ulf (SMHI, Sweden - 'at') -A_hemp_ni = Hempelmann, Nils (IPSL, France - nils.hempelmann 'at' ipsl.jussieu.fr) -A_hutj_ro = Hutjes, Ronald (Univ. of Wageningen, NL - ronald.hutjes 'at' wur.nl) -A_juck_ma = Juckes, Martin (BADC, UK - martin.juckes 'at' stfc.ac.uk) -A_kady_ni = Kadygrov, Nikolay (IPSL, France - nikolay.kadygrov 'at' ipsl.jussieu.fr) -A_kind_st = Kindermann, Stephan (DKRZ, Germany - kindermann 'at' dkrz.de) -A_kras_jo = Krasting, John (NOAA, USA - john.krasting 'at' noaa.gov) -A_kune_dm = Kunert, Dominik (DLR, Germany - dominik.kunert 'at' dlr.de) -A_levi_ri = Levine, Richard (MetOffice, UK - richard.levine 'at' metoffice.gov.uk) -A_litt_bi = Little, Bill (MetOffice, UK - bill.little 'at' metoffice.gov.uk) -A_maek_ja = Makela, Jarmo ('at') -A_malo_er = Maloney, Eric (Colorado State University - emaloney 'at' atmos.colostate.edu) -A_maso_er = Mason, Erik (NOAA, USA - erik.mason 'at' noaa.gov) -A_mass_fr = Massonnet, Francois (Spain) -A_mart_gi = Martin, Gill (MetOffice, UK - gill.martin 'at' metoffice.gov.uk) -A_mell_fe = Mello, Felipe (INPE, Brazil) -A_mohi_da = Dalvi, Mohit (MetOffice, UK - mohit.dalvi 'at' metoffice.gov.uk) -A_muel_bn = Mueller, Benjamin (LMU, Germany) -A_niku_gr = Nikulin, Grigory (SMHI, Sweden - grigory.nikulin 'at' smhi.se) -A_nobr_pa = Nobre, Paulo (INPE, Brazil) -A_oliv_ar = Oliveira, Arildo (INPE, Brazil) -A_phil_ad = Phillips, Adam (NCAR, USA - asphilli 'at' ucar.edu) -A_pugh_th = Pugh, Thomas (KIT, Germany - thomas.pugh 'at' kit.edu) -A_read_si = Read, Simon (Univ. of Reading, UK - s.read 'at' reading.ac.uk) -A_ring_ma = Ringer, Mark (MetOffice, UK - mark.ringer 'at' metoffice.gov.uk) -A_rio_ca = Rio, Catherine (IPSL, France - catherine.rio 'at' lmd.jussieu.fr) -A_roeh_ro = Roehrig, Romain (MeteoFr, France - romain.roehrig 'at' meteo.fr) -A_senf_da = Senftleben, Daniel (DLR, Germany - daniel.senftleben 'at' dlr.de) -A_somm_ph = Sommer, Philipp (Univ. of Hamburg, Germany - 'at') -A_ster_an = Sterl, Andreas (KNMI, Netherlands - sterl 'at' knmi.nl) -A_teic_ca = Teichmann, Claas (CSC2, Germany - claas.teichmann 'at' hzg.de) -A_tsus_yo = Tsushima, Yoko (MetOffice, UK - yoko.tsushima 'al' metoffice.gov.uk) -A_vanu_be = van Ulft, Bert (KNMI, Netherlands - bert.van.ulft 'at' knmi.nl) -A_vini_ca = Vinicius, Capistrano (INPE, Brazil) -A_walt_je = Walton, Jeremy (MetOffice, UK - jeremy.walton 'at' metoffice.gov.uk) -A_wang_sh = Wang, Shiyu (SMHI, Sweden - shiyu.wang 'at' smhi.se) -A_wenz_sa = Wenzel, Sabrina (DLR, Germany - sabrina.wenzel 'at' dlr.de) -A_will_ke = Williams, Keith (MetOffice, UK - keith.williams 'at' metoffice.gov.uk) - -A_surn_na = Surname, Name (Institute, Country - E-Mail) - -### Viewers (not active developers) -A_bala_ve = Balaji, Venkatramani (GFDL, USA - balaji 'at' princeton.edu) -A_bunz_fe = Bunzel, Felix (MPI-M, Germany - felix.bunzel 'at' mpimet.mpg.de) -A_char_an = Charlton-Perez, Andrew (Univ. of Reading, UK - a.j.charlton-perez 'at' reading.ac.uk) -A_denn_jo = Dennis, John (NCAR, USA - dennis 'at' ucar.edu) -A_graf_po = Graf, Phoebe (DLR, Germany - phoebe.graf 'at' dlr.de) -A_hegg_mi = Hegglin, Michaela (Univ. of Reading, UK - m.i.hegglin 'at' reading.ac.uk) -A_hend_jo = Hendricks, Johannes (DLR, Germany - johannes.hendricks 'at' dlr.de) -A_john_ja = John, Jasmin (NOAA, USA - jasmin.john 'at' noaa.gov) -A_jone_co = Jones, Colin (MetOffice, UK - colin.jones 'at' metoffice.gov.uk) -A_kais_ch = Kaiser, Christopher (DLR, Germany - christopher.kaiser 'at' dlr.de) -A_karp_al = Karpechko, Alexey, (FMI, Finland - Alexey.Karpechko 'at' fmi.fi) -A_lawr_br = Lawrence, Bryan (STFC, UK - Bryan.Lawrence 'at' stfc.ac.uk) -A_mick_sh = Mickelson, Sheri (NCAR, USA - mickelso 'at' ucar.edu) -A_ocon_fi = OConnor, Fiona (MetOffice, UK - fiona.oconnor 'at' metoffice.gov.uk) -A_radh_ap = Radhakrishnan, Aparna (GFDL, USA - aparna.radhakrishnan 'at' noaa.gov) -A_sell_al = Sellar, Alistair (MetOffice, UK - alistair.sellar 'at' metoffice.gov.uk) -A_wyse_kl = Wyser, Klaus (SMHI, Sweden - klaus.wyser 'at' smhi.se) - -### Former developers -A_brae_me = Braeu, Melanie (DLR, Germany - braeu.melanie 'at' physik.uni-muenchen.de) -A_dusc_ch = Duscha, Christiane (DLR, Germany - christiane.duscha 'at' dlr.de) -A_enri_cl = Enright, Clare (UEA, UK - c.enright 'at' uea.ac.uk) -A_halu_al = Haluszczynski, Alexander (DLR, Germany - alexander.haluszczynski 'at' dlr.de) -A_herm_mi = Herman, Michael (New Mexico Tech, USA - mherman 'at' nmt.edu) -A_hueb_mi = Huebner, Michael (DLR, Germany - michael.huebner 'at' dlr.de) -A_john_ma = Johnston, Marston (SMHI, Sweden - shejo284 'at' gmail.com) -A_klin_ca = Klinger, Carolin (DLR, Germany - carolin.klinger 'at' physik.uni-muenchen.de) -A_kola_mi = Kolax, Michael ('at') -A_neal_ri = Neale, Richard (NCAR, US - rneale 'at' ucar.edu) -A_orlo_bo = Orlowsky, Boris (ETH, Switzerland - boris.orlowsky 'at' env.ethz.ch) -A_pasc_st = Pascoe, Stephen (STFC, UK - stephen.pascoe 'at' stfc.ac.uk) -A_stev_ma = Stevens, Mark (NCAR, US - stevens 'at' ucar.edu) - -### Former viewers (not active viewers) -A_butc_ne = Butchart, Neal (MetOffice, UK- neal.butchart 'at' metoffice.gov.uk) -A_hass_da = Hassell, David (Univ. of Reading, UK - d.c.hassell 'at' reading.ac.uk) -A_ivan_de = Ivanova, Detelina (NERSC, Norway - detelina.ivanova 'at' nersc.no) -A_mois_au = Moise, Aurel (BOM, Australia - a.moise 'at' bom.gov.au) -A_pend_di = Pendlebury, Diane (Univ. of Toronto, Canada - diane 'at' atmosp.physics.utoronto.ca) -A_step_da = Stepanova, Daria (FMI, Finland - daria.stepanova 'at' fmi.fi) -A_tilm_si = Tilmes, Simone (NCAR, US - tilmes 'at' ucar.edu) - -### DIAGNOSTICS REFERENCES ############################################# - -D_0000 = Please acknowledge the author(s). -D_0001 = Please contact the author(s) to discuss acknowledgment or co-authorship. -D_0002 = Please acknowledge the project(s). -D_anav13jclim = Anav et al., J. Clim., 26, 6801-6843, doi: https://doi.org/10.1175/JCLI-D-12-00417.1, 2013. -D_antonov10usgov = Antonov, J. I. et al., World Ocean Atlas 2009, Volume 2: Salinity. S. Levitus, Ed. NOAA Atlas NESDIS 69, U.S. Government Printing Office, Washington, D.C., 184 pp. (2010) -D_aquila11gmd = Aquila et al., Geosci. Model Dev. 4, 325-355, doi:10.5194/gmd-4-325-2011, 2011. -D_bakker14essd, Bakker, D. C. E. et al., Earth Syst. Sci. Data, 6, 69-90, doi:10.5194/essd-6-69-2014, 2014. -D_bianchi12gbc, Bianchi, D. et al., Global Biogeochem. Cy., 26, GB2009, doi:10.1029/2011GB004209, 2012. -D_cionni11acp = Cionni et al., Atmos. Chem. Phys., 11, 11267-11292, doi:10.5194/acp-11-11267-2011, 2011. -D_clivar09jclim = CLIVAR Madden-Julian Oscillation Working Group, J. Climate, 22, 3006–3030, doi: https://doi.org/10.1175/2008JCLI2731.1 (2009) -D_dong08grl = Dong, S. et al., J. Geophys. Res., 113, C06013, doi:10.1029/2006JC004051 (2008) -D_duemenil00mpimr: Duemenil Gates et al., Observed historical discharge data from major rivers for climate model validation. Max Planck Institute for Meteorology Report 307, Hamburg, Germany (2000) -D_emmons00jgr = Emmons et al., J. Geophys. Res., 105, D16, 20497-20538, 2000. -D_eyring06jgr = Eyring et al., J. Geophys. Res., 111, D22308, doi:10.1029/2006JD007327, 2006. -D_eyring13jgr = Eyring et al., J. Geophys. Res., 118, 5029-5060, doi:10.1002/jgrd.50316, 2013. -D_flato13ipcc = Flato, G. et al., Evaluation of climate models, in: Climate Change 2013: the Physical Science Basis, 2013. -D_gen14jclim = Gen, L. et al., J. Climate, 27, 1765-1780, doi:10.1175/JCLI-D-13-00337.1 (2014) -D_gleckler08jgr = Gleckler et al., J. Geophys. Res., 113, D06104, doi:10.1029/2007JD008972, 2008. -D_goswami99qjrms = Goswami, B., V. Krishnamurthy, and H. Annamalai, Q. J. R. Meteorol. Soc., 125, 611–633, doi:10.1002/qj.49712555412 (1999). -D_hagemann13jadvmodelearthsyst = Hagemann et al., J. Adv. Model. Earth Syst., 5, doi:10.1029/2012MS000173, 2013. -D_jones15james, J. Adv. Model. Earth Syst., 7, 1554-1575, doi:10.1002/2014MS000416, 2015. -D_kerry06jclim = Kerry H. et al, J. Climate, 19, 3681-3703, doi:10.1175/JCLI3814.1 (2006) -D_kim09jclim = Kim, D. et al., J. Climate, 22, 6413-6436, doi:10.1175/2009JCLI3063.1 (2009) -D_kim12grl = Kim and Yu, Geophys. Res. Lett., 39, L11704, doi:10.1029/2012GL052006, 2012. -D_key04gbc = Key, R. M. et al., Global Biogeochem. Cy., 18, GB4031, doi:10.109/2004GB002247, 2004. -D_lauer05acp = Lauer et al., Atmos. Chem. Phys., 5, 3251-3276, doi:10.5194/acp-5-3251-2005, 2005. -D_lauer13jclim = Lauer and Hamilton, J. Climate, 26, 3823-3845, doi:10.1175/JCLI-D-12-00451.1, 2013. -D_lauer17rse = Lauer et al., Remote Sens. Environ., in press, 2017. -D_li14jclim = Li and Xie, J. Climate, 27, 1765-1780, doi:https://doi.org/10.1175/JCLI-D-13-00337.1, 2014. -D_lin08jclim = Lin, J-L. et al., J. Climate, 21, 4541-4567, doi: 10.1175/2008JCLI1816.1, 2008. -D_lloyd-hughes02jclim = Lloyd-Hughes, B. and Saunders, M. A., Int. J. Climatol., 22, 1571-1592, doi:10.1002/joc.846 (2002) -D_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) -D_mueller14grl = Mueller, B. and Seneviratne, S. I. Geophys. Res. Lett., 41, 128-134, doi:10.1002/2013GL058055 (2014) -D_mueller13hess = Mueller, B. et al., Hydrol. Earth Syst. Sci., 17, 3707-3720, doi:10.5194/hess-17-3707-2013 (2013) -D_phillips14eos = Phillips, A. S. et al., EOS T. Am. Geophys. Un., 95, 453-455 (2 -D_righi13acp = Righi et al., Atmos. Chem. Phys., 13, 9939-9970, doi:10.5194/acp-13-9939-2013, 2013. -D_righi15gmd = Righi et al., Geosci. Model Dev., 8, 733-768 doi:10.5194/gmd-8-733-2015, 2015. -D_roedenbeck13os = Roedenbeck, C. et al., Ocean Sci., 9, 193-216, doi:10.5194/os-9-193-2013, 2013. -D_roehrig13jclim = Roehrig, R. et al., J. Climate, 26, 6471-6505, doi:10.1175/JCLI-D-12-00505.1 (2013) -D_sperber12asl = Sperber and Kim, Atmos. Sci. Lett., 13, 3, 187-193, doi:10.1002/asl.378, 2012. -D_stroeve07grl = Stroeve, J. et al., Geophys. Res. Lett., 34, L09501, doi:10.1029/2007GL029703, 2007. -D_taylor12 = Taylor et al., Nature, 489, 423-426, doi:10.1038/nature11377 (2012) -D_takahashi14marchem = Takahashi et al., Mar. Chem., 164, 95-125, doi:10.1016/j.marchem.2014.06.004, 2014. -D_wang99bams = Wang, B. and Z. Fan, Bull. Amer. Meteor. Soc., 80, 629-638, doi:10.1175/1520-0477(1999)080<0629:COSASM>2.0.CO;2 (1999) -D_wang11climdyn = Wang, B. et al., Clim. Dyn., 39, 1123-1135, doi:10.1007/s00382-011-1266-z (2011) -D_webster92qjrms = Webster, P. J. and Yang, S., Q.J.R. Meteorol. Soc., 118: 877-926. doi:10.1002/qj.49711850705 -D_weedon14wrr = Weedon, G. P. et al., Water Resour. Res., 50, 7505-7514, doi:10.1002/2014WR015638 (2014) -D_wenzel14jgr = Wenzel et al., J. Geophys. Res. Biogeosci., 119(5), doi:2013JG002591, 2014. -D_williams09climdyn = Williams and Webb, Clim. Dynam., 33, 141-157, doi:10.1007/s00382-008-0443-1, 2009. - -### OBSERVATIONS REFERENCES ############################################ - -E_access2 = ACCESS2 - Roiger et al., accepted -E_aeronet = AERONET - See http://aeronet.gsfc.nasa.gov/new_web/data_usage.html -E_airs = AIRS -E_auramls = Aura MLS -E_cirrus = CIRRUS - Baumgardner et al., Environ. Res. Lett., 3, 025010, 2008. -E_castnet = CASTNET - See http://epa.gov/castnet/javaweb/index.html -E_ceresebaf = CERES-EBAF -E_concert = CONCERT - Dahlkoetter et al., Atmos. Chem. Phys., 14, 6111-6137, 2014. -E_cr-ave = CR-AVE - Schwarz et al., J. Geophys. Res., 113, D03203, 2008. -E_dc3 = DC3 - B. Weinzierl (DLR) -E_duemenil00mpi = GRDC station observations - Duemenil et al., Max Planck Institute for Meteorology Report 307, Hamburg, Germany, 2000. -E_eanet = EANET - See http://www.eanet.cc/ -E_emep = EMEP - See http://www.emep.int/ -E_emmons00jgr = Emmons et al., J. Geophys. Res., 105, D16, 20497-20538, 2000. -E_era40 = ERA40 -E_erainterim = ERA-Interim -E_esacci-aerosol = ESACCI-AEROSOL - Popp, T. et al. (2015): ESA Aerosol Climate Change Initiative (ESA Aerosol_cci) data: AOD v4.21 via Centre for Environmental Data Analysis, May 2016 -E_esacci-landcover = ESACCI-LANDCOVER - Defourny et al. (2015): ESA Land Cover Climate Change Initiative (ESA LC_cci) data: ESACCI-LC-L4-LCCS-Map-300m-P5Y-[2000,2005,2010]-v1.6.1 via Centre for Environmental Data Analysis -E_esacci-sm = ESACCI-SOILMOISTURE - Liu, et al. (2011), Hydrology and Earth System Sciences, 15, 425-436; Liu, et al. (2012), Remote Sensing of Environment, 123, 280-297; Wagner, et al. (2012), Remote Sensing and Spatial Information Sciences, Volume I-7 -E_esacci-sst = ESACCI-SST - Merchant, et al. (2014): ESA Sea Surface Temperature Climate Change Initiative (ESA SST CCI): Analysis long term product version 1.0, NERC Earth Observation Data Centre, 24th February 2014, doi: 10.5285/878bef44-d32a-40cd-a02d-49b6286f0ea4. -E_haloe = HALOE -E_hippo = HIPPO - Schwarz et al., Geophys. Res. Lett., 40, 5542-5547, 2013. -E_improve = IMPROVE - See http://vista.cira.colostate.edu/improve/data/improve/improve_data.htm -E_inca = INCA - Minikin et al., Geophys. Res. Lett., 30, 1503, 2003. -E_isccp_d1 = ISCCP D1 - Rossow and Schiffer, Bull. Amer. Meteor. Soc., 80, 2261-2287, 1999. -E_king03tgrs = MODIS-CFMIP - King, M. D., et al., IEEE Trans. Geosci. Remote Sens., 41, 442-458, 2003. -E_ncep = NCEP - Kalnay et al., Bull. Amer. Meteor. Soc., 77, 437-470, 1996. -E_misr = MISR -E_modis = MODIS -E_niwa = NIWA -E_odell08jcli = UWisc - O'Dell et al., J. Climate, 21, 1721-1739, 2008. -E_lace1 = LACE - Petzold et al., J. Geophys. Res., 107, D21, 8128, 2002. -E_lace2 = LACE - Schroeder et al., J. Geophys. Res., 107, D21, 8126, 2002. -E_oct-ave = Oct-AVE - Schwarz et al., J. Geophys. Res., 111, D16207, 2006. -E_pincus08jcli = MODIS-CFMIP - Pincus et al., J. Climate, 25, 4699-4720, 2012. -E_saltrace1 = SALTRACE - B. Weinzierl (DLR) -E_saltrace2 = SALTRACE - K. Fomba (TROPOS) -E_samum1 = SAMUM - Weinzierl et al., Tellus B 2009. -E_samum2 = SAMUM - K. Kandler (TU Darmstadt) -E_srb = SRB -E_tc4 = TC4 - Spackman et al., Geophys. Res. Lett., 38, L09803, 2011. -E_ucnpacific = UCN-Pacific - Clarke and Kapustin, J. Atmos. Sci. 59, 363, 2002. -E_ukmo = UKMO -E_weedon14waterresourres = WFDEI - Weedon et al., Water Resour. Res. 50, 2014 - -### PROJECTS REFERENCES ################################################ - -P_climval = BMBF MiKlip Project ClimVal -P_cmip6dicad = BMBF CMIP6 Project Germany -P_cmug = ESA CMUG -P_crescendo = EU H2020 project CRESCENDO -P_dlrveu = DLR project VEU -P_dlrveu2 = DLR project VEU2 -P_embrace = EU FP7 project EMBRACE -P_esmval = DLR project ESMVal -P_qa4ecv = QA4ECV - -### CMIP6 REALMS (for reporting) ##################################### - -R_aerosol = aerosol -R_atmos = atmosphere -R_atmosChem = atmospheric chemistry -R_land = land -R_landIce = land ice -R_ocean = ocean -R_ocnBgchem = ocean biogeochemistry -R_seaIce = sea ice - -### THEME (for reporting) ############################################ - -T_aerosols = aerosols -T_atmDyn = atmospheric dynamics -T_bgchem = biogeochemistry -T_bgphys = biogeophysics -T_carbon = carbon cycle -T_chem = chemistry -T_clouds = clouds -T_EC = emergent constraint -T_ghg = greenhouse gases -T_monsoon = monsoons -T_phys = physics -T_seaIce = sea ice -T_varmodes = modes of variability - -### DOMAIN (for reporting) ########################################## - -DM_et = extra tropics -DM_global = global -DM_midlat = mid-latittudes -DM_nh = northern hemisphere -DM_polar = polar -DM_reg = regional -DM_sh = southern hemisphere -DM_trop = tropics - -### PLOT TYPE (for reporting) ###################################### - -PT_errorbar = error bar plot -PT_bar = bar chart -PT_diurn = diurnal cycle -PT_geo = geographical distribution -PT_portrait = portrait diagram -PT_polar = polar-stereographic plot -PT_scatter = scatter plot -PT_seas = seasonal cycle -PT_size = size-distribution -PT_vert = vertical profile -PT_taylor = taylor diagram -PT_times = time series -PT_zonal = zonal mean -PT_pro = profile (any other kind of line chart) -PT_other = other plot types - -### STATISTICS (for reporting) ##################################### - -ST_anomaly = anomaly -ST_corr = correlation -ST_diff = difference -ST_eof = empirical orthogonal function (EOF) -ST_mean = mean -ST_spectrum = spectrum -ST_stddev = standard deviation -ST_var = variability -ST_rmsd = rmsd -ST_range = range of values -ST_trend = temporal trend -ST_clim = climatology -ST_perc = percentiles -ST_median = median -ST_detrend = detrend -ST_other = other statistics - diff --git a/doc/doc_D73/Makefile b/doc/doc_D73/Makefile deleted file mode 100644 index a97d1783c1..0000000000 --- a/doc/doc_D73/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = CRESCENDOD73 -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/doc/doc_D73/source/conf.py b/doc/doc_D73/source/conf.py deleted file mode 100644 index ea5b4b3676..0000000000 --- a/doc/doc_D73/source/conf.py +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -# -# CRESCENDO D7.3 documentation build configuration file, created by -# sphinx-quickstart on Mon Feb 27 21:13:53 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = ['sphinx.ext.mathjax'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'CRESCENDO D7.3' -copyright = u'2017, Alexander Loew, Benjamin Mueller' -author = u'Alexander Loew, Benjamin Mueller' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = u'1.0' -# The full version, including alpha/beta/rc tags. -release = u'1.0' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = [] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'alabaster' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'CRESCENDOD73doc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - 'papersize': 'a4paper', - - # The font size ('10pt', '11pt' or '12pt'). - # - 'pointsize': '11pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'CRESCENDOD73.tex', u'CRESCENDO D7.3 Documentation', - u'Alexander Loew, Benjamin Mueller', 'manual'), -] - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'crescendod73', u'CRESCENDO D7.3 Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'CRESCENDOD73', u'CRESCENDO D7.3 Documentation', - author, 'CRESCENDOD73', 'One line description of project.', - 'Miscellaneous'), -] - - - diff --git a/doc/doc_D73/source/images/old/.gitignore b/doc/doc_D73/source/images/old/.gitignore deleted file mode 100644 index e33609d251..0000000000 --- a/doc/doc_D73/source/images/old/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.png diff --git a/doc/doc_D73/source/images/reporting_comb_workflow.png b/doc/doc_D73/source/images/reporting_comb_workflow.png deleted file mode 100644 index 39994eb54d..0000000000 Binary files a/doc/doc_D73/source/images/reporting_comb_workflow.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_envi_Auto_Diag.png b/doc/doc_D73/source/images/reporting_envi_Auto_Diag.png deleted file mode 100644 index de2c861b10..0000000000 Binary files a/doc/doc_D73/source/images/reporting_envi_Auto_Diag.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_envi_home.png b/doc/doc_D73/source/images/reporting_envi_home.png deleted file mode 100644 index 3757c8e574..0000000000 Binary files a/doc/doc_D73/source/images/reporting_envi_home.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_envi_workflow.png b/doc/doc_D73/source/images/reporting_envi_workflow.png deleted file mode 100644 index 9073fd76cb..0000000000 Binary files a/doc/doc_D73/source/images/reporting_envi_workflow.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_post_GMT.png b/doc/doc_D73/source/images/reporting_post_GMT.png deleted file mode 100644 index 0872193eab..0000000000 Binary files a/doc/doc_D73/source/images/reporting_post_GMT.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_post_home.png b/doc/doc_D73/source/images/reporting_post_home.png deleted file mode 100644 index 59b3450cf4..0000000000 Binary files a/doc/doc_D73/source/images/reporting_post_home.png and /dev/null differ diff --git a/doc/doc_D73/source/images/reporting_post_workflow.png b/doc/doc_D73/source/images/reporting_post_workflow.png deleted file mode 100644 index 897aadb8b1..0000000000 Binary files a/doc/doc_D73/source/images/reporting_post_workflow.png and /dev/null differ diff --git a/doc/doc_D73/source/images/testing_workflow.png b/doc/doc_D73/source/images/testing_workflow.png deleted file mode 100644 index f76483ee7f..0000000000 Binary files a/doc/doc_D73/source/images/testing_workflow.png and /dev/null differ diff --git a/doc/doc_D73/source/index.rst b/doc/doc_D73/source/index.rst deleted file mode 100644 index 9611fb599c..0000000000 --- a/doc/doc_D73/source/index.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. CRESCENDO D7.3 documentation master file, created by - sphinx-quickstart on Mon Feb 27 21:13:53 2017. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to CRESCENDO D7.3's documentation! -========================================== - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - introduction - testing - reporting - tags - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/doc/doc_D73/source/introduction.rst b/doc/doc_D73/source/introduction.rst deleted file mode 100644 index 62f1c0a2f0..0000000000 --- a/doc/doc_D73/source/introduction.rst +++ /dev/null @@ -1,23 +0,0 @@ -Introduction -============ - -An automated testing and reporting framework for the ESMValTool has been developed within CRESCENDO. The technical solution developed will be briefly outlined in this report which is based on the technical documentation also provided to the ESMValTool user. As the main effort has been the development of the actual technical solution itself, it is summarized in the following first which software components have been developed for the implementation of the technical solution. - -Software package documentation ------------------------------- - -The automated testing and reporting framework will be officially released to the climate research community in a forthcoming release of the ESMValTool. To ensure traceability of the different software components developed and contributing to the ESMValTool testing and reporting framework, we document in the following table the various necessary software packages. - -+--------------------+-------------+--------------------------------------------------------+ -| Name | version | source | -+====================+=============+========================================================+ -| ESMValTool | development | https://github.com/ESMValGroup/ESMValTool-private.git | -+--------------------+-------------+--------------------------------------------------------+ -| easytest | 0.1.5 | PyPi, conda | -+--------------------+-------------+--------------------------------------------------------+ -| dummydata | 0.1.2 | Pypi, conda | -+--------------------+-------------+--------------------------------------------------------+ -| reporting service | 0.1 | shipped with ESMValTool | -+--------------------+-------------+--------------------------------------------------------+ - -The detailed documentation of the testing and reporting is provided in the following sections. It is consistent with the technical documentation which is also made available to the users of the ESMValTool. diff --git a/doc/doc_D73/source/reporting.rst b/doc/doc_D73/source/reporting.rst deleted file mode 100644 index 0b5f4b424a..0000000000 --- a/doc/doc_D73/source/reporting.rst +++ /dev/null @@ -1,584 +0,0 @@ -Reporting service for ESMValTool -================================ - -Why reporting? --------------- - -The ESMValTool is supposed to provide automated reporting on the calculated diagnostics. The automated reporting service is supposed to be web-based, so the server preparing the data, can also provide the resulting report without forcing the user to download data or install additional software. The automated reporting service should care for gathering the output from the ESMValTool and present it in a flexible manner. - -Reporting in ESMValTool -~~~~~~~~~~~~~~~~~~~~~~~ - -The current reporting service composes a functional and flexible html-based website that is “printer-friendly” to also provide results in a downloadable pdf-format. - -Two different approaches were primarily considered for realization: - -* The first approach (A1) is, to implement a serial reporting service that is running a **collector (and organizer)** after the ESMValTool produced the output for the reporting. Therefore, the ESMValTool must deliver collectable information on the structure of the outputs and their pattern for the report. This approach allows to prevents redundant and time consuming calculations. - -* The other approach (A2) is, to implement the collector (and organizer) as part of the ESMValTool runtime. An ESMValTool **runtime environment** is needed for this. This approach basically is preferred, as the reporting service is in charge of producing and managing the output of the ESMValTool, including reading or setting up namelists, etc. The advantage is, that results from multiple namelist can be easily incorporated. Therefore, information on the reporting structure is not mandatory. It is also possible to easily report on diagnostics that are currently not supporting such kind of information. - -The current version 0.1 is a hybrid form of the aforementioned approaches. If the reporting service recognizes an ESMValTool namelist as input, the tool acts as a runtime environment for the tool and collects multiple diagnostic blocks' output into seperately reported parts. If the reporting service receives a specific report namelist, former results are gathered from predefined search directories and are prepared based on specific grouping instructions. - -.. TODO: I don't know why neither scaling nor setting the width does not work here. - -.. figure:: images/reporting_post_workflow.png - :width: 500 px - :alt: Reporting service as a collector - - The reporting service (blue) implemented as collector for ESMValTool (red) output based on specific reporting namelists (A1) - -.. figure:: images/reporting_envi_workflow.png - :width: 500 px - :alt: Reporting service as an environment - - The reporting service (blue) implemented as environment for ESMValTool (red) output distributing original namelists (A2) - -.. figure:: images/reporting_comb_workflow.png - :width: 500 px - :alt: Reporting service as a hybrid - - The reporting service (blue) implemented as environment-collector-hybrid for ESMValTool (red) output reacting to specified namelists - - -Capabilities -~~~~~~~~~~~~ - -Version 0.1 covers the following issues: - -* Automatic production of a short HTML5 report with a simple "Home" site and tabs for different diagnostic blocks or tag combinations (see `Examples`_ below). -* A print tab for easy conversion to PDF format. -* Currently, only specific data format can be processed (png, jpg, jpeg, tiff). -* The reports are responsive to scaling of the browser window. -* The reports can be reached and presented within the same network via IP and port number (e.g.: 127.0.0.1:5000). -* Reports use a defined sorting algorithm to provide a usefull arrangement of results. - -Known issues, that will be resolved in future versions: - -* Currently, not all (irregular) errors might be caught and show adequate information to prevent them. -* The flask app is not the most stable server for the site and might break. -* Various data formats need to be incorporated (e.g. csv, pdf). -* It is not possible to "dismiss" certain tags from the report. -* Currently, there are no tagging conventions. Tags can actually be anything and need to be consistent throughout diagnostics to produce usable reports. - - -Requirements ------------- - -*METAdata for output files* - -METAdata has to be written to all files for either of the two approaches to provide captions and a rudimental report structure. -Diagnostics that do not provide METAdata will come down to an unstructured presentation of the results. - -*Specifications for A1* - -The collector approach specifically needs such a meta data structure. -For gathering results throughout different directories, relevant information must be filtered from a vast number of files. -Therefore, tags can be specified, that restrict a list of files to a manageable amount. -For example, results might be grouped by ECV, domain, spatial/temporal plots, regionalized information, or specific basic information, like differences. - -*Specifications for A2* - -For the runtime environment approach, the ESMValTool figure processing routines (=diagnostics) need to be time synchronous to python running *main_report.py*. -The reporting service routine checks the start and stop time of the ESMValTool. -The results from the directories, given by the namelist, are then chosen based on the creation time of the files to provide the report. - - -Specify METAdata -~~~~~~~~~~~~~~~~ - -The required METAdata is in basic xml format, hidden in the data description. -If figures are written in a compatible image format, METAdata is added to the common entry "Image.ImageDescription". -This functionality is provided by the `GExiv2 `_ package. -Additionally and for other files, the same information is stored in a related invisible xml file. -The naming format follows the simple rules: ".filename.fileextension.xml", e.g. for "thisimage.png" METAdata is stored in ".thisimage.png.xml". - -The structure of the METAdata in its current realization provides the processing time, user and diagnostic specific tags, a caption and a block identifier for better report structure. - -Setup for a python dictionary that can be transferred to xml/image meta data:: - - DICT={ - 'ESMValTool':{ # mandatory dictonary titel - 'built':'datetime', # datetime string object for - # processing time - 'tags':['tag1','tag2','tag3'], # list of various tags as strings - 'caption':'CAPTIONTEXT', # one string object as caption - 'block':'#123' # block specifyer for more - # structured reports - }} - -Example for a python dictionary that can be transferred to xml/image meta data (from the overview plotting function in diagnostic.py):: - - DICT={ - 'ESMValTool':{ - 'built':str(datetime.datetime.now()), - 'tags':self._basetags + ['TimeS','overview','basic'] + labels, - 'caption':str('Time series of spatial mean for different regions. - The multiple models are: ' + ", ".join(labels) + '.'), - 'block':'#ID'+'regov'+self.var - }} - -Here, the tags are a dynamically built list based on namelist specific strings (**self._basetag**), plot specific strings (**['TimeS','overview','basic']**), and data specific strings (**labels**). -Similarly, the blocks and captions are built based on the ESMValTool input. - - -Specify namelist tags -~~~~~~~~~~~~~~~~~~~~~ - -Two new elements are introduced to the namelist as it is known from ESMValTool. -It is the intention to implement a full flexibile while least interferring additional element to the current namelist structures. -Tags can be added within two sections of the namelist: - -* GLOBAL section - -Within the GLOBAL section, tags can be introduced, that are covering all following diagnostics. -Usefull tags might be the author's or project's name, the temporal or spatial resolution, or a version specification. -A typical namelist looks somewhat like this: - -.. code-block:: xml - - - - - ########################################################################### - namelist.xml - - Description - - Author - - Project - - References - - This namelist is part of the ESMValTool - ########################################################################### - - - - True - True - False - @{WORKPATH} - @{PLOTPATH} - @{CLIMOPATH} - True - 100 - 500 - png - 1 - False - True - - example, monthly, author - - - - - - - CMIP5 Example Amon historical r1i1p1 1990 2005 @{MODELPATH} - - - - - - - -* DIAGNOSTICS section - -The tags element in the DIAGNOSTICS section can be used to differentiate between the results of multiple diagnostics. -Specifically, alternative variable names or similar should be used here. -Tags should generally be used to add information the diagnostics by itself does not provide in an accessible manner. - -.. code-block:: xml - - - - - - - - - - Doing some analysis. - - ./variable_defs/ - - var - - T2Ms - - this_diagnostic.py - - [('execute_as_shell', False)] - - alternative_variable_name, surface - - - OBS dataset sat Example 1990 2005 @{OBSPATH} - - - - - - - - -Beyond these user introduced tags, the ESMValTool will ad the namelist's name (without path) to the global tag list and autogenerated names (e.g. Auto_Diag_001) to the diagnostics tag list. -Running the reporting service with above namelist will provide a one tab report for the defined diagnostic, called AUTO_DIAG_001. -Additionally the ESMValTool output will be shown on the HOME tab. - - -Specify report namelist -~~~~~~~~~~~~~~~~~~~~~~~ - -Additionally, a new kind of namelist is introduced solely for reporting purpose. -The main purpose of this namelist is, to provide tag (combinations) that define the resulting structure of the report and directories that can be searched for tagged output. -Subdirectories have to be specified seperately. - -.. code-block:: xml - - - - - ########################################################################### - report_namelist.xml - - Description - - Author - - Project - - References - - This namelist is part of the reporting service for the ESMValTool - ########################################################################### - - - - variable1 - variable2 - TimeS - reg - land, reg - - - - - @{PLOTPATH} - @{PLOTPATH}/old_plots/ - - - - - -Making use of the METAdata package -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -For providing meta data within the ESMValTool diagnostics, a METAdata package (*./diag_scripts/lib/python/METAdata.py*) is integrated within the ESMValTool. -Both ESMValTool and reporting service make use of this package. -There is a simple example within the package to show its functionality. - -A common call for the METAdata package in python diagnostics looks as follows:: - - import matplotlib.pyplot as plt - import METAdata as MD - import datetime - - basetags=['example'] - - x=[1,2,3,4] - y=[1,2,3,4] - - plt.figure(1) - plt.plot(x,y) - - fig_name="name.png" - - plt.savefig(fig_name) - - Dict={'ESMValTool':{ - 'built':str(datetime.datetime.now()), - 'tags':basetags + ['linear','basic'] + - ['x:'+'-'.join(x),'y:'+'-'.join(y)], - 'caption':str('This is a simple example for x: ' - + str(x) + ' and y: ' + str(y) + '.'), - 'block':'#ID'+'ExLin' - }} - - MD=METAdata("both",fig_name,Dict) # "meta" and "xml" are options - # for specific meta data - # (e.g. "xml" with csv files) - MD.write() - - -First, a plotting function is called, then the figure is saved to a specific file ("name.png"). -Afterwards a dictionary object is constructed that is describing the plot and, e.g., the input data. -The last step is, to initialize a METAdata object, connected to the saved file ("name.png") and the describing dictionary, which is finally attatched to this file. - -To simplify calling the METAdata package in python diagnostics of the ESMValTool, a short wrapper was built. -This one-liner (*ESMValMD()*) needs to be called with meta data format, filename, tags, caption, and ID, reformats the input, and writes automatically:: - - ESMValMD("both", - fig_name, - basetags + ['linear','basic'] + - ['x:'+'-'.join(x),'y:'+'-'.join(y)], - str('This is a simple example for x: ' - + str(x) + ' and y: ' + str(y) + '.') - '#ID'+'ExLin') - -As ncl lacks the possibility to write meta data to an image file, additionally, a wrapper for this functionality is provided for ncl. -Currently, two versions are available. -The ncl diagnostic either writes the information needed within the *ESMValMD()* function into an ascii-text-file, that can be called by the *running_MD_for_ncl_with_file.py* wrapper through command line, or the information is provided to the *running_MD_for_ncl_from_command.py* wrapper by parser options. - -Here are examples, similar to the ones above, for an ncl script (based on the same variable names).:: - - undef("makestr") - function makestr(filename:string, type:string,\ - tags[*]:string, caption:string, id:numeric) - begin - n = dimsizes(tags) - str = new(5, string) - str(0) = filename - str(1) = type - str(2) = "" - do i = 0, n-2 - str(2) = str(2) + tags(i) + "," - end do - str(2) = str(2) + tags(n-1) - str(3) = caption - str(4) = sprinti("%d", id) - - return str - end - - begin - xstring = "x:" - do i = 0, dimsizes(x)-2 - xstring = xstring + tostring(x(i)) + "-" - end do - xstring = xstring + tostring(x(dimsizes(x)-1)) - - ystring = "y:" - do i = 0, dimsizes(y)-2 - ystring = ystring + tostring(y(i)) + "-" - end do - ystring = ystring + tostring(y(dimsizes(y)-1)) - - filename = fig_name - type = "both" - tags = array_append_record(\ - basetags,\ - (/"linear","basic",xstring,ystring/),\ - 0) - caption = "This is a simple example for x: " - + tostring(x) + " and y: " + tostring(y) + "." - id = "#ID"+"ExLin" - - ; write from ascii - - mdstr = makestr(filename, type, tags, caption, id) - ascii_file = filename + "_list.txt" - asciiwrite(ascii_file, mdstr) - delete(mdstr) - - system("python running_MD_for_ncl_with_file.py " + ascii_file) - - ; or from command - - tagstring = "" - do i = 0, dimsizes(tags)-2 - tagstring = tagstring + tags(i) + "," - end do - tagstring = tagstring + tags(dimsizes(tags)-1) - - system("python running_MD_for_ncl_from_command.py " + \ - filename + \ - " --dtype=" + type + " --tags=" + tagstring + \ - " --cap=" + caption + " --block=" + id) - end - - -The ascii-text-file organizer *makestr()* is accessible via the ESMValTool ncl libraries. - -A list of currently used tags and further suggestions is shown in the :ref:`Lotags`. - - - -Examples --------- - -For the examples, we use simplified ts/sst (sea surface temperature) data from CMIP5 and ESACCI, once regridded to 12x6 pixels and once additionally altered (12x6A). - - -The collector reporting service (A1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The reporting namelist looks as follows: - -.. code-block:: xml - - - - - ########################################################################### - report_test.xml - - Description - - Author - Benjamin Mueller (LMU, Germany - b.mueller@iggf.geo.uni-muenchen.de) - - Project - CRESCENDO - - References - - This namelist is part of the reporting service for the ESMValTool - ########################################################################### - - - - sst - gmt - TimeS - reg - - - - @{PLOTPATH} - - - - -Therefore, the resulting report will consist of 5 tabs: HOME, SST, GMT, TIMES, and REG. -The results are gathered from PLOTPATH that is defined in the included config_private_local.xml. -The HOME tab is showing the ESMValTool logo, as there are no logs from the ESMValTool. - -.. figure:: images/reporting_post_home.png - :width: 500 px - :alt: Reporting service as an environment, HOME tab - - The HOME tab showing the ESMValTool logo (center) and the namelist's name (right) - -The GMT tab shows results that were produced by the namelist below (see `The runtime environment reporting service (A2)`_). - -.. figure:: images/reporting_post_GMT.png - :width: 500 px - :alt: Reporting service as an environment, GMT tab - - The GMT tab showing the ESMValTool results output (center) with the gmt tag (global mean time series); the rightmost column is empty within this version - - -The runtime environment reporting service (A2) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The GLOBAL and DIAGNOSTICS elements from the namelist look as follows: - -.. code-block:: xml - - - - - - - - True - - True - - False - - @{WORKPATH} - - @{PLOTPATH}/TEST/ - - @{CLIMOPATH} - - True - - 100 - - 500 - - png - - 1 - - False - - True - - example, monthly, ESACCI - - - - - - - CMIP5 12x6 MIP_VAR_DEF historical r1i1p1 1991 2005 @{MODELPATH} - - - CMIP5 12x6II MIP_VAR_DEF historical r1i1p1 1991 2005 @{MODELPATH} - - - - - - - - - Doing ESACCI sea surface temperature analysis. - - - - ./variable_defs/ - - - - ts - - - - T2Ms - - - - sst_ESACCI.py - - - - [('execute_as_shell', False)] - - - - sst, ocean - - - - OBS ESACCI-SST sat 12x6 1992 2005 @{OBSPATH} - - - - - - - -This will produce a HOME tab with the ESMValTool output and the namelist's name, and an AUTO_DIAG_001 tab, showing the results from the sea surface temperature analsysis together with the config declarations. - -.. figure:: images/reporting_envi_home.png - :width: 500 px - :alt: Reporting service as a collector, Home tab - - The HOME tab showing the ESMValTool terminal output (center) and the namelist's name (right) - - -.. figure:: images/reporting_envi_Auto_Diag.png - :width: 500 px - :alt: Reporting service as a collector, Diag tab - - The diagnostic result tab (AUTO_DIAG_001) showing the ESMValTool results output (center) and the config file (right) - - - diff --git a/doc/doc_D73/source/tags.rst b/doc/doc_D73/source/tags.rst deleted file mode 100644 index 69cf141976..0000000000 --- a/doc/doc_D73/source/tags.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. _Lotags: - -List of tags -============ - -The following list provides a number for possible tags and suggestions where to put them. -The format is: "**tag (where to put them)** description" - -namelist's name (namelist: Global; automatically added): - For an easy comparison of different result sets from the same namelist (e.g. after changing a diagnostic). - -Auto_Diag_[000-999] (namelist: Diagnostic; automatically added): - For environment based reports, diagnostic blocks within one namelist are automatically numbered. These tags should not be used within collector based reports. - -land (namelist: Global, Diagnostic): - This namelist/diagnostic considers land surface information. - -ocean (namelist: Global, Diagnostic): - This namelist/diagnostic considers ocean information. - -atmosphere (namelist: Global, Diagnostic): - This namelist/diagnostic considers atmosphere information. - -temporal/spatial resolution (namelist: Global, Diagnostic; e.g. monthly, daily, 1x1°): - The final temporal/spatial resolution of the results. - -variable name (namelist: Diagnostic, within code for plots/tables) - An (alternative) variable short name can be defined within the Diagnostic or dynamically added to plots in the diagnostic script. - -variable long name (namelist: Diagnostic) - A common variable long name is added. - -model/observation name (namelist: Diagnostic, within code for plots/tables) - If the diagnostic is called for a specific model only, or dynamically for plots that only show a summary of a specific dataset. - -Multi (namelist: Global, Diagnostic; within code for plots/tables) - Multiple variables *and* models are analyzed, e.g. perfmetrics. - -MultiMod (namelist: Global, Diagnostic; within code for plots/tables) - Multiple models are analyzed. - -MultiVar (namelist: Global, Diagnostic; within code for plots/tables) - Multiple variables are analyzed. - -basic (within code for plots/tables) - This tag is shared by multiple diagnostics in python using the "./diag_scripts/aux/LMU_ESACCI-diagnostics/diagnostic.py" library. - -gmd (within code for plots) - A spatial plot of the temporal mean difference (= global mean difference). - -gmt (within code for plots) - A spatial plot of the temporal mean time series. - -TimeS (within code for plots/tables) - Time series in plot or table. - -4plot (within code for plots) - Short for a set of four plots that show global mean time series plots of two data sets and their absolute and relative difference. - -stattab (within code for tables) - Tag for statstical information within tables. - -reg (within code for plots/tables) - A subset plot or table for specific predefined regions. - -TCorr (within code for plots) - A spatial plot of the temporal correlation of two time series. - -trend (within code for plots) - A spatial plot of the temporal trend of a time series. - -Note: Tables are not yet implemented in reporting service! - - - - - diff --git a/doc/doc_D73/source/testing.rst b/doc/doc_D73/source/testing.rst deleted file mode 100644 index c17f05e885..0000000000 --- a/doc/doc_D73/source/testing.rst +++ /dev/null @@ -1,288 +0,0 @@ -Testing in the ESMValTool -========================= - - -Why testing? ------------- - -In a nutshell: To make sure that the software does what it is supposed to do. - -The overall objective of automated testing in the ESMValTool is to ensure that - -* the software was properly installed on the system, and -* the different software components (backend, diagnostics, - plotting) results in correct results - -The following figure shows how testing integrates in the overall ESMValTool software development workflow. After a new feature has been implemented by a contributor, tests should ensure that the altered code of the feature branch does not cause any conflicts with the original version of the code. Once tests have passed sucessfully, the feature branch can be merged into the development or master branch. - - - -.. figure:: images/testing_workflow.png - :scale: 75 % - :alt: Testing in the continous integration (CI) workflow - - The role of testing in the continuous integration (CI) lifecyle of the ESMValTool project - - -Testing levels in ESMValTool -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Testing is done on different levels within the ESMValTool: - - * `unittests `_ are used to verify that small pieces of the ESMValTool software work correctly. This can comprise the test of specific functions, modules or classes. - * testing of entire diagnostics is done to verify that a diagnostic produces the right output. - -When developing a new diagnostic for the ESMValTool or improve some other components of the ESMValTool framework, one should always consider to implement appropriate tests. It is possible to implement tests after having created the code fuctionality. Though, a more agile `test driven development cycle `_ is worth consideration. - - -Unittesting in the ESMValTool -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tests for individual pieces of code are currently implemented largely based on the python core library `unittest `_. Please look there or in the `tests` directory for examples how to implement tests for python code. - - -How does testing of diagnostics in ESMValTool work in principle? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The general concept of the implemented testing framework is to compare results of a diagnostic with reference information about the expected output. The following checks can be currently performed: - -1. check if all output files are available (Filecheck) -2. check that content of output files is the same as expected -3. check that output file sizes are greater than zero bytes -4. check that acknowledgments are provided for each diagnostic by the processing - -The overall testing approach is currently based on the philosophy that - -a) testing should be fast to execute; this mainly depends on how fast the diagnostic is running with small datasets (e.g. no regridding if possible) -b) should not require the user to download larger data volumes - -For that reason, the testing is largely based on synthetic data as an input which allows to fully control the input and thus also expected output of a specific diagnostic. - -**What is needed?** - -* A namelist for the diagnostic tailored for testing. -* A script that implements the test(s). - - -Getting started ---------------- - -The steps required to sucessfully implement testing for the ESMValTool are described in the following. - -To be able to use the testing a number of prerequesites need to be fulfilled. -These are typically already available when the ESMValTool is installed properly. - - -Prerequesite #1: install `easytest` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The ESMValTool testing facility is based on the python package `easytest `_ . If `easytest` is not installed yet on your machine, install it within seconds using the instructions provided `here `_. There you find also the information on the types of tests supported so far. To use the `easytest` functionality for testing entire ESMValTool diagnostics only a few lines of code are needed. - -Prerequesite #2: nosetests -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -`nosetests `_ should have been already installed. If not, do so as it is needed for a convenient testing experience. Tests could also be exectuted without `nosetests`, but this makes life so much easier. - -Prerequesite #3: install `dummydata` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `dummydata `_ package is required for the generation of synthetic datasets to be used within the testing. Install the package as described in its documentation. - - -How to implement a test for a new diagnostic? ---------------------------------------------- - -Two cases should be always considered - -* **ensure that your code or its individual components do the right thing**. It is therefore highly recommended that you implement unittests for your code as much as you can (and want). This will ensure the integrity of your diagnostic code. If you get used to implementing unittests on a regular basis, you will find out that you will probably write faster and better code with testing. More details on how you can implement unittests is given either in the `tests` directory of the ESMValTool or can be also found in the documentation of the corresponding `unittest `_ python package. Please look there or in the `tests` directory for examples how to implement unittests for python code. - -* **set up a test for the entire diagnostic**. This test can be as complicated as you like. A template is provided that helps you to facilitate the test integration. This basic testing template will run your diagnostic with sample data and check if the diagnostic produces appropriate output files like you would expect. Based on these basic tests, you can then further implement new tests that check e.g. that specific results have been produced that you expect from the diagnostic with predefined input data. For this, the dummy data used for the testing can have different characteristics. Details are provided in the documentation of the `dummydata `_ package. - -To implement a test for a new diagnostic only a few steps are required, which are described in the following - -Step 1: create your test file -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Let us assume that you are in the home directory of the ESMValTool. Then let's start first by copying the template file (`test_namelist_TEMPLATE.py`) to a new directory. This should have the same name as your diagnostic has. For our example here, let us assume that the namelist of our diagnostic is called `namelist_carbon_cycle.nml`. - -The filename should include your diagnostic name, therefore we do:: - - #!/bin/bash - # please note that all examples are for bash shell. - # For other shells you need to adapt the commands accordingly - - export myname='namelist_carbon_cyle' - cd ./tests/test_diagnostics - mkdir test_${myname} - cp ./test_namelist_TEMPLATE.py ./test_${myname}/test_${myname}.py - cd test_${myname} - -Step 2: modify your test file -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -First of all, have a look at the content of the test file. You will see that the file includes two classes, namely:: - - class DiagnosticTest(ESMValToolTest): - [...] - - class TestDiagnostic(ESMValTestDiagnostic): - [...] - -You now want to adapt this template for your needs. The objective should be that the test checks at least that your diagnostic always produces the files you expect it to produce. To achieve that we do the following: - -1. Change the name of the XML file:: - - # change the name of the namelist file - xml_single = 'namelist_myfirsttest.xml' - # with - xml_single = 'namelist_carboncyle.xml' - -What have you done? You told the class where to find the namelist file that should be tested. This namelist file is assumed to be in the same directory like the test routine itself. Thus you will need to copy that (see Step 4 further below). - -2. What's the target? - -Do you already know what the filenames are which are produced by your diagnostic? Then it's a good option now to take a note of their names and also in which of the ESMValTool output directories they are located (plotting directory, working directory, ...). - -Got it? If yes, go to the next point. But wait! Do you have also output that depends on the models that are used in a diagnostics? Let's say that your diagnostic produces some maps and each map is the result for one model, then you would have as many graphics like models, right? You then certainly would also encode the model name in the filename of the output. Too abstract? Here is an example. - -Let's say, your diagnostic just analyzes only 3 models (depends on what you specify in the namelist itself for sure), and produces just a global mean map plot as png files, then one could imagine that the `plot_dir` of your results would look somehow like the following:: - - MPIESM-LR_temporal_mean_map.png - MPIESM-MR_temporal_mean_map.png - BNU-ESM_temporal_mean_map.png - -The one or the other way, you have now a list of files that is produced by your diagnostic in principle. You need to tell the test script what these files are. This is acomplished by writing the filenames in a list within the variable `reffile`. Each entry in this list consists of a tuple which specifies the output directory as well as the filename that the diagnostics is expected to produce. For example:: - - reffiles=[('plot','test1.png'), ('plot','test2.png')] - -means that the files *test1.png* and *test2.png* are both expected to be located in the plotting directory generated by the diagnostics. - -Equally, you might produce a list of filenames via *ls [-a] > filenames.txt* and read that file. For this, the class `TestDiagnostic` already provides a convenient function. This function ensures also automatically, that e.g. trailing whitespaces are not considered to be part of the filename. Thus if you have a file which contains the reference filenames and looks as follows:: - - fileA.png - fileB.png - fileC.png - -you can just read the `reffiles` list as follows:: - - reffiles = self.read_reffiles('myreffiles.txt') - -The directories are specified by the following currently available shortcuts: - -* `plot` for the plotting directory -* `work` for working directory - -Please note that it is irrelevant if your namelist specifies a specific output directory for plotting or working, as this will be overwritten by the testing routine anyway. - -Please note that the example file contains also examples how output files for different models could be easily processed. - - -Step 3: Specify the data -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The tests are currently designed to work most efficiently. This is why the default testing implementation is based on generated synthetic data of small size. The generation of such synthetic testing data is acomplished by using the `dummydata `_ package. For a detailed documentation of the capabilities of this package, see in its documentation. - -Now, it is important that you identify the variables (e.g. precipitation) that are expected as input within the diagnostic to be tested. You need to tell the class for testing which fields are supposed to be generated and which kind of characteristics they are expected to have. - -If you have a look to the `get_field_definitions()` function, you will recognize that a dictionary `r` is generated. This dictionary contains all relevant information that tells the testing routine how the test data should be generated. - -The most recent list of supported variables is provided within the `dummydata` package. Please have a look `there `_ if you want to check which variables are supported. - -Examples for variables definitions:: - - # variable: precipitation, with uniform random values, - # 2D variable (e.g. surface), name of file - r.update({'pr' : {'method' : 'uniform', - 'filename' : rpath + os.sep + '@{VAR_FILE}', - 'ndim' : 2}}) - # generate a variable for surface soil moisture using random values - r.update({'mrsos' : {'method' : 'uniform', - 'filename' : rpath + os.sep + '@{VAR_FILE}', - 'ndim' : 2}}) - # generate a 3D variable for wind speed - r.update({'va' : {'method' : 'uniform', - 'filename' : rpath + os.sep + '@{VAR_FILE}', - 'ndim' : 3}}) - - - -Step 4: Copy the original namelist and adapt it for testing -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Now it is time to copy the original namelist you want to test to the current directory. To enable a fast testing experience, you should adapt this namelist by in particular - -a) reducing the number of models used, -b) reduceing the number of observations used, or, -c) if your namelist contains an include statement to specify local directory configurations, remove these lines. Work, plot and climo directories are set automatically by the testing environment. - -Step 5: Run tests -~~~~~~~~~~~~~~~~~ - -Now we are ready to go to start the testing itself. For our example you simply start the test by:: - - nosetests test_namelist_carboncycle.py - -If you have not installed `nosetests` you can also run the testing as:: - - python test_namelist_carboncycle.py - -The following is happening when you are running the tests: - -- test data is generated and cached in a specific directory for reuse if needed -- the namelist is copied into a temporary directory and content is changed with filenames for the synthetic test data. Options like e.g. the plotting directory are altered in this copy of the namelist. -- the namelist is executed with the test data as input, producing output -- the output is verified against the list of expected output and output files are also checked for their content if requested - - -And now ... FAIL. - -It would be really an exception if the tests would be exectuted without any error and pass sucessfully. What typically would happen is that errors will occur, indicating that a variable is missing or output files were not found. - -To fix these errors, a sequential approach is recommended: - -1) run only the namelist without any testing. This is acomplished by commenting the test execution. Your script should look as follows:: - - T.run_nml() - #T.run_tests(execute=False, graphics=None, checksum_files=None, - # files='all', check_size_gt_zero=True) - #self.assertTrue(T.sucess) - - if __name__ == "__main__": - unittest.main() - - -The namelist alone runs? If not and there are complaints that variables are missing, then add them following `Step 2: modify your test file`_ above. If a variable has not yet been defined within `dummydata package `_ feel free to modify the dummydata routine by forking the dummydata repository, applying the appropriate changes and opening a pull request to make changes also available for other users. - -If the namelist runs without testing, then continue with the next step: - -2) run the tests themselves, but do not check for sucess yet:: - - T.run_nml() - T.run_tests(execute=False, graphics=None, checksum_files=None, - files='all', check_size_gt_zero=True) - #self.assertTrue(T.sucess) - -Look carefully at the output. Are there any error messages, that tests could not be executed or that files are missing? Test run in general o.k.? ... go ahead! -**WHAT DO WE DO WHEN ERRORS OCCUR?** - -3) run tests with sucess check:: - - T.run_nml() - T.run_tests(execute=False, graphics=None, checksum_files=None, - files='all', check_size_gt_zero=True) - self.assertTrue(T.sucess) - -If certain output files are not generated, you need to figure out where the problem is. It is also recommended to have a look into the output directories of the test itself. Perhaps there are more files generated by your routine than you had expected? If so, then add them to the `reffiles` variable (`Step 1: create your test file`_). - -After the execution was sucessfully completed you should get an:: - - O.K! - - -More advanced testing ---------------------- - -Like already said in the introduction, you could implement an arbitrary complexity for the testing. The above is only the very basic, but already sufficient at least to test that the diagnostic is working in a lightweight setup. - -One very usefull way to also test that the diagnostic produces the correct results would be to a) implement first of all unittest for the individual components of the diagnostic itself if possible and then b) generate synthetic test data with predefined properties. Currently, `dummydata` supports generation of random uniform fields and constant fields. Thus the first question would be, what kind of results you would expect if a constant field is used within the diagnostic (note that you can specify the constant value). Later on, one could also think about generating more complex input fields using `dummydata` like e.g. constants values for each latitude or similar things. If you have a specific request, then open an issue at the `dummydata `_ repository. - diff --git a/doc/sphinx/.gitignore b/doc/sphinx/.gitignore deleted file mode 100644 index 2996782358..0000000000 --- a/doc/sphinx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.docx* diff --git a/doc/sphinx/Makefile b/doc/sphinx/Makefile deleted file mode 100644 index 050852ea73..0000000000 --- a/doc/sphinx/Makefile +++ /dev/null @@ -1,181 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -w error.log -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - rm -rf source/autodoc - -autodoc: - sphinx-apidoc -f -o source/autodoc ../../diag_scripts - -html: autodoc - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ESMValTool.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ESMValTool.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/ESMValTool" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ESMValTool" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: autodoc - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: autodoc - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/sphinx/README b/doc/sphinx/README deleted file mode 100644 index 3796a1c7a2..0000000000 --- a/doc/sphinx/README +++ /dev/null @@ -1,36 +0,0 @@ -This README is part of the ESMValTool distribution. It's been added as part of -the incorporation of the Sphinx documentation generator. - -This distribution includes the ESMValTool documentation in the form of -standalone HTML files in the build/html directory; pointing your browser at - -% build/html/index.html - -in the current directory (i.e. the directory which contains this README file) -will load the documentation. - -The installation of Sphinx is a prerequisite for the (re-)generation of the -ESMValTool documentation. Sphinx may be obtained from -http://sphinx-doc.org/install.html; an overview of its workings is available -at http://sphinx-doc.org/tutorial.html. - -The script process_ncl_docs.py in the scripts directory creates input files for -Sphinx from a subset of ESMValTool NCL scripts, and assembles them in a -subdirectory of the source directory. To create the ESMValTool documentation, -first run this script by doing - -% python scripts/process_ncl_docs.py - -in the current directory. Then, run - -% make - -in the same directory to ask Sphinx to generate the documentation. Here, - is the output format required for the documentation - for example, -html for standalone HTML files (as distributed here), man for manual pages and -text for plain text. The output is placed in the build/ subdirectory. -Running - -% make - -by itself will generate a complete list of output formats. diff --git a/doc/sphinx/make.bat b/doc/sphinx/make.bat deleted file mode 100644 index ee77c91012..0000000000 --- a/doc/sphinx/make.bat +++ /dev/null @@ -1,242 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -set I18NSPHINXOPTS=%SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. xml to make Docutils-native XML files - echo. pseudoxml to make pseudoxml-XML files for display purposes - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - - -%SPHINXBUILD% 2> nul -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ESMValTool.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ESMValTool.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdf" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf - cd %BUILDDIR%/.. - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdfja" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf-ja - cd %BUILDDIR%/.. - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -if "%1" == "xml" ( - %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The XML files are in %BUILDDIR%/xml. - goto end -) - -if "%1" == "pseudoxml" ( - %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. - goto end -) - -:end diff --git a/doc/sphinx/source/annex_a.rst b/doc/sphinx/source/annex_a.rst deleted file mode 100644 index f5b3bc4c37..0000000000 --- a/doc/sphinx/source/annex_a.rst +++ /dev/null @@ -1,241 +0,0 @@ -Annex A -- More tables -********************** - -:numref:`tab_direc_struc` Directory structure of the ESMValTool sorted by file type. - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -.. _tab_direc_struc: - -+-------------------------------------------------------------------------------+ -| *Namelists* | -+-------------------------------+-----------------------------------------------+ -| nml/namelist_XyZ.xml | Namelists for specifying general parameters, | -| | input data and diagnostics to run. | -+-------------------------------+-----------------------------------------------+ - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -+-------------------------------------------------------------------------------+ -| *Configuration files* | -+-------------------------------+-----------------------------------------------+ -| nml/cfg_XyZ/cfg_XyZ_*.typ | Configuration files for diagnostic scripts. | -| | The suffix ".typ" specifies the language the | -| | routine is written in. Note: there is usually | -| | than one configuration script per diagnostic | -| | set. | -+-------------------------------+-----------------------------------------------+ - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -+-------------------------------------------------------------------------------+ -| *Scripts* | -+-------------------------------+-----------------------------------------------+ -| main.py | Driver script controlling the overall program | -| | flow | -+-------------------------------+-----------------------------------------------+ -| diag_scripts/ | Directory containing all diagnostics called | -| | by the namelists. Supporting routines are | -| - MyDiag.ncl | placed in "diag_scripts/lib" under the | -| - SeaIce_polcon.ncl | subdirectory corresponding to the programming | -| - SAMonsoon.ncl | language used (NCL, Python, R). | -| - etc. | | -+-------------------------------+-----------------------------------------------+ -| aux/ | Functions and procedures specific to | -| | a given diagnostic are stored in the | -| - / | subdirectory | -| | diag_scripts/aux/. | -+-------------------------------+-----------------------------------------------+ -| lib/ | Functions that are called by the | -| | diag_scripts, for example statistics.typ | -| - ncl/ | collects all statistical functions in a | -| | single file. When adding a new function, | -| - ensemble.ncl | it must be added to list in the header. | -| - regrid.ncl | | -| - statistics.ncl | | -| - style.ncl | | -| - ... | | -| | | -| - python/ | | -| | | -| - ensemble.py | | -| - regrid.py | | -| - statistics.py | | -| - style.py | | -| - ... | | -| | | -| - ... for other languages | | -| (e.g., R) | | -+-------------------------------+-----------------------------------------------+ - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -+-------------------------------+-----------------------------------------------+ -| plot_scripts/ | Plotting routines; files should have an | -| | intuitive name for their purpose. Data to be | -| - ncl/ | plotted may be passed to them directly or via | -| | netCDF files. | -| - plotting1.ncl | | -| - plotting2.ncl | | -| - ... | | -| | | -| - python/ | | -| | | -| - plotting1.py | | -| - plotting2.py | | -| | | -| - ... for other languages | | -| (e.g., R) | | -+-------------------------------+-----------------------------------------------+ -| interface_data/ | Inter-process communication, e.g., between | -| | Python and NCL/R, is done by sourcing NCL/R | -| | specific files updated on the fly in this | -| | folder. These intermediate files are based on | -| | templates files for different languages. | -+-------------------------------+-----------------------------------------------+ -| interface_scripts/ | Routines called from the workflow manager | -| | script "main.py", mainly used to handle the | -| | control flow of the tool, e.g., parsing | -| | namelists, updating temporary files in the | -| | folder interface_data/, etc). | -+-------------------------------+-----------------------------------------------+ - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/ | Routines for checking or reformatting raw | -| | input data. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/cmor/ | Contains the CMOR tables, defined as | -| | plain-text files CMOR_.dat, where | -| - CMOR_.dat | is the variable's standard name. Additional | -| | tables can be added by the users, e.g., | -| | from http://www2-pcmdi.llnl.gov/cmor/tables/. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/default/ | Contains the reformat routines, in two NCL | -| | scripts. | -| - reformat_default_main.ncl | | -| - reformat_default_func.ncl | | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/ECEARTH/ | Contains the EC-Earth/NEMO-specific reformat | -| | routines. | -| - reformat_ECEARTH_main.ncl | | -| - reformat_ECEARTH_func.ncl | | -| - names_ECEARTH.dat | | -| - make_lsm3d.sc | | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/EMAC | Contains the EMAC-specific reformat routines. | -| | | -| - reformat_EMAC_main.ncl | | -| - reformat_EMAC_func.ncl | | -| - names_EMAC.dat | | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/fixes/ | Contains the user-defined, project- and | -| | model-specific fixes, defined as NCL | -| - __fixes.ncl | scripts __fixes.ncl. | -| | A template is also provided for the user | -| | to add more fixes. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/obs/ | Contains specific reformat routines for | -| | "cmorizing" observational data. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/constants.ncl| Contains general-purpose functions and | -| | procedure, called by the default, the | -| | ECEARTH- and the EMAC-specific routines. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/recognized_ | Provides a list of possible alternative units | -| units.dat | to the CMOR standard and the corresponding | -| | conversion factor. Can be extended by the | -| | user. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/recognized_ | Provides a list of possible alternative | -| vars.dat | variable names to the CMOR standard | -| | names. Can be extended by the user. | -+-------------------------------+-----------------------------------------------+ -| reformat_scripts/variable_ | Declaration of variables, variable specific | -| defs/ | attributes and calculation of derived | -| | variables | -+-------------------------------+-----------------------------------------------+ - -.. tabularcolumns:: |p{5.2cm}|p{10.3cm}| - -+-------------------------------------------------------------------------------+ -| *Data folders* | -+-------------------------------+-----------------------------------------------+ -| | The data folders are specified in | -| | nml/namelist_*, and thus may be different | -| | from the defaults given here. These folders | -| | contain the output generated by the ESMValTool| -| | and are created on the fly if needed. Note | -| | that these folders do not need to be in | -| | the same directory as the source code. They | -| | can be arbitrarily specified in the namelist | -| | as path relative to the root path. Using | -| | symbolic links is another option to separate | -| | the actual data from the code. | -+-------------------------------+-----------------------------------------------+ -| climo/ | Quality checked and derived netCDF files, | -| | reformatted from the original data. | -+-------------------------------+-----------------------------------------------+ -| plots/ | Destination directory for graphics files. | -+-------------------------------+-----------------------------------------------+ -| work/ | Miscellaneous files produced during run-time, | -| | e.g., optional netCDF output and | -| | references/acknowledgements. | -+-------------------------------+-----------------------------------------------+ - - -.. _workflow_reformat: - -Workflow of reformat routines ------------------------------ - -**Control flow of reformat_default** - -The reformat_default_main.ncl script sets the global variables as defined in reformat.py (input and output paths, variable name and field, model name and ensemble, etc.) and then performs a list of operations calling various functions and procedures defined in reformat_default_func.ncl. The workflow is as follows: - -* find grid type: the data can be defined on a standard rectilinear grid or on an irregular grid. In the latter case, the script does not modify the grid properties and additionally attaches the area field (the area weights) for the irregular grid to the output file. The location of the area file is typically defined as an entry in the namelist, for example by using the project class CMIP5_gridfile where the final entry is the full path to the area file, see :numref:`tab_proj_spec`. -* read variable: the selected variable is read from the input file. If the variable is not found, the reading function checks for possible alternative variable names (as specified in recognized_vars.dat), before issuing an error message. -* apply project- and model-specific fixes: if a fixing procedure is found in the fixes/ directory for the selected project and model, it is called at this point in order to apply the user-defined corrections to the data. -* create time-series: the variable is read for the selected time range (start_year-end_year) and a time-series is created. -* rank/field consistency: the consistency of variable's rank with the given field (T3M, T2Mz, T2Ms, etc.). A simple calculation of the zonal mean is performed in case a rank 4 variable is provided with T2?z field. -* check fill values: a default missing values is assigned if the variable does not have one. The function then looks for data values that might represent undefined missing values. Currently it considers: -999., -9999., -99999., -999999., 1.e15, -1.e34. Finally, the ESMValTool default missing values (1.e20) is assigned as a standard _FillValue to the variable. -* reformat time coordinate: the time coordinate is reformatted according to the CMOR standard. If a calendar attribute is not assigned, the standard is used. The consistency of the time-series with the selected time range is checked. -* reformat vertical coordinate (applies only to certain fields and to rectilinear grids): the vertical coordinate is assigned "Pa" units, converting from the most common alternative units (mbar, bar, hPa) if required. The ordering is set from top to bottom (monotonically decreasing). -* reformat latitude coordinate (applies only to certain fields and to rectilinear grids): the ordering is set from South to North (monotonically increasing). -* reformat longitude coordinate (applies only to certain fields and to rectilinear grids): the ordering is set from 0 to 360 degrees. -* check units: consistency of the variable's units with the CMOR standard is checked. The CMOR table for the selected variable must be available in the CMOR/ directory (an error message is issued otherwise). Units renaming and conversion can also be performed, if the corresponding information is given in recognized_units.dat. -* set variable attributes: the CMOR standard attributes are assigned to the selected variable. The corresponding CMOR table must be available in the CMOR/ directory (an error message is issued otherwise). -* write output file: the variable reformatted according to the CMOR standard is written in the selected output file. -* add info for irregular grids (applies only to irregular grids): the area file of the irregular grid is added, this file may later be used for averaging. - - -**Control flow of reformat_ECEARTH** - -This reformat procedure can be used to convert raw EC-Earth/NEMO files to a format that complies with the ESMValTool requirements. It performs the following additional operations compared with the default workflow: - -1. find_name: translate the EC-Earth/NEMO name to a CMOR name using the table names_ECEARTH.dat. -2. sub_staggergrid: determine grid type (T, U, V) and add that information to the filename. -3. mask_land: land points have the value 0 in the raw files, not a fill value (missing value). This routine sets land points (as in the landmask file) to fill values. -4. rename_time: rename time variable from EC-Earth name to standard name and remove the attribute _FillValue. -5. rename_lev: vertical coordinate name in raw files depends on grid, rename it to lev. Requires the external input table names_ECEARTH.dat. -6. add_ijcoordvars: add i and j variables and assign them as coordinate variables. -7. convert_units: unit conversions that cannot be handled by check_units. -8. add_ECEARTHgrid_info: add ECEARTH grid info (lat, lon, areacello and grid sizes) to the output. - -**Control flow of reformat_EMAC** - -The workflow is similar to the default case, but some additional operations specific to the EMAC model are performed in addition: - -9. find messy version: the MESSy version with which the EMAC output has been generated is read from the data. -10. find EMAC name: the EMAC name of the selected variable is found from the table in names_EMAC.dat (an error message is issued if not defined). For complex variables (i.e., variables not directly available as EMAC output but derivable from other EMAC variables), a user-defined recipe can be provided in reformat_scripts/EMAC/recipes/EMAC_recipes_xxx.ncl to derive it. -11. check field consistency: reads from names_EMAC.dat file the list of allowed fields for the selected variable (for example is not possible to select total column ozone toz as T3M field). -12. check vertical integration type (only for T2?s types): reads from names_EMAC.dat the option for the vertical coordinate (C for column integration, S for surface value). -13. start the time loop: the EMAC output is assumed to be monthly-aggregated (monthly averages are optional). The data are read starting from January of the start_year to December of the end_year. -14. extract variable: the selected variable is searched in the EMAC output. If multiple files for a given month/year combination contain the selected variable, the following priority list is applied: time coordinate matching the field type (monthly mean or daily output), data from tracer_gp and tr_* streams/channels, first file in the list. For complex variables, the corresponding user-defined recipe is called (reformat_scripts/EMAC/recipes/EMAC_recipes_xxx.ncl). For T2?z types, the data are interpolated on constant pressure levels (defined in reformat_scripts/constants.ncl). -15. create time series: within the time loop, a time series start_year-end_year is created. -16. reformat coordinates, check units, set variable attributes and write output: these operations are applied exactly as in the default case. - -The user can extend the reformat_scripts/EMAC/recipes/EMAC_recipes_xxx.ncl in order to calculate additional (derived) -variables not directly available in EMAC. - diff --git a/doc/sphinx/source/annex_b.rst b/doc/sphinx/source/annex_b.rst deleted file mode 100644 index 5bd5acf680..0000000000 --- a/doc/sphinx/source/annex_b.rst +++ /dev/null @@ -1,321 +0,0 @@ -.. _annex_b: - -Annex B - development environment -********************************* - -.. _git_repository: - -Git repository -============== - -The development of the ESMValTool source code is managed by the version control system Git -(https://www.git-scm.com/). The ESMValTool development environment is hosted on GitHub. The following -description gives an overview of the typical workflow and usage for implementing new diagnostics or technical -changes into the ESMValTool. For general information on Git, see e.g. the online documentation at -https://www.git-scm.com/doc. - -.. .. _fig_1: -.. .. figure:: /figures/Attention.png -.. :align: center -.. note:: - .. figure:: /figures/Attention.png - The OPEN ESMValTool repository is located at https://github.com/ESMValGroup/ESMValTool. - The PRIVATE ESMValTool repository for the ESMValTool development team is located at https://github.com/ESMValGroup/ESMValTool-private - -There are two ESMValTool GitHub repositories available: - -#. **OPEN GitHub repository** that is open to the public (https://github.com/ESMValGroup/ESMValTool). The ESMValTool is released as open-source software under the Apache License 2.0, version 2.0. Use of the software constitutes acceptance of this license and terms. -#. **PRIVATE GitHub repository** that is restricted to the ESMValTool Development Team (https://github.com/ESMValGroup/ESMValTool-private). This repository is only accessible to ESMValTool developers that accepted the terms of use (see http://www.esmvaltool.org/license.html) 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 the open domain!** - -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 (:numref:`core_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 of PhD students in progress) 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 entire 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. - -The OPEN and the PRIVATE repository both contain the following kinds of branches (see also :numref:`fig_git`): - -* *MASTER BRANCH* (official releases), -* *DEVELOPMENT BRANCH* (includes approved new contributions but version is not yet fully tested), -* *FEATURE BRANCH* (development branches for new features and diagnostics created by ESMValTool developers, the naming convention for *FEATURE BRANCHES* is _). - -**Access rights** - -* Write access to the *MASTER* and *DEVELOPMENT BRANCH* in both the OPEN and the PRIVATE GitHub repositories is restricted to the ESMValTool core development team. Both branches have access right READ ALL (noting again that access to the PRIVATE GitHub repository is restricted to the ESMValTool 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 team "ESMValTool-DevelopmentTeam" 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. - -Workflow -======== - -The *MASTER BRANCH* of the PRIVATE repository will be synchronized with the *MASTER BRANCH* of the OPEN repository -in an automated manner. This ensures that they are identical at all times (see schematic in :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. - -The following description gives an overview of the typical workflow and usage for implementing new diagnostics -or technical changes into the ESMValTool. The description assumes that your local development machine is running -a Unix-like operating system. For a general introduction to Git tutorials such as, for instance, -https://www.git-scm.com/docs/gittutorial are recommended. - -.. _fig_git: -.. figure:: /figures/git_diagram.png - :align: center - - Schematic diagram of the ESMValTool GitHub repositories. *FEATURE BRANCHES* can only be created by members of the ESMValTool Development Team. The naming convention for *FEATURE BRANCHES* is _. - -**Getting started** - -First make sure that you have Git installed on your development machine. You can ask your administrator for -assistance. You can test this with the command: - -.. code:: bash - - git --version - -In order to properly identify your contributions to the ESMValTool you need to configure your local Git with -some personal data. This can be done with the following commands: - -.. code:: bash - - git config --global user.name "YOUR NAME" - git config --global user.email "YOUR EMAIL" - -.. note:: For working on GitHub you need to create an account and login to https://github.com/. - -**Option 1: working with the ESMValTool GitHub repository by creating a fork** - -In order to start working with the ESMValTool source code you need to get a copy from the OPEN or PRIVATE -repository (e.g., https://github.com/ESMValGroup/ESMValTool). You can fork the ESMValTool repository to your -GitHub account. When you fork or copy the PRIVATE repository, you must ensure that you do not copy it into the -open domain! - -* Login to GitHub.com -* On GitHub, go to the website of the ESMValTool repository (e.g., https://github.com/ESMValGroup/ESMValTool) and click on the button "fork" - -.. figure:: /figures/git_fork.png - -* Choose to create the fork of the ESMValTool repository under your account -* Select the "*DEVELOPMENT BRANCH*" and create a new *FEATURE BRANCH* for the diagnostic/feature you want to implement. Please follow the following naming convention for your new *FEATURE BRANCH*: _. - -.. figure:: /figures/git_branch.png - -* On this fork click the button "Clone or Download" and copy the URL shown there -* Open a terminal window and go to the folder where you would like to store your local copy of the ESMValTool source code -* Run git clone with the URL copied: - -.. code:: bash - - git clone - -This will clone your fork of the ESMValTool repository at GitHub to a local folder. You can now query the status of your local working copy with: - -.. code:: bash - - git status - -You will see that you are on a branch called master and your local working copy is up to date with the remote -repository (your fork). With - -.. code:: bash - - git branch --all - -you can list all available remote and local branches; now switch to your feature branch by: - -.. code:: bash - - git checkout - -You can now start coding. To check your current developments you can use the command - -.. code:: bash - - git status - -You can add new files and folders that you want to have tracked by Git using: - -.. code:: bash - - git add - -To simply add all new files use: - -.. code:: bash - - git add . - -It is recommended to commit your changes to your local working copy often via: - -.. code:: bash - - git commit "YOUR COMMIT MESSAGE" - -Alternatively, type: - -.. code:: bash - - git commit -a - -Then an editor window will open, and you can type a long commit message. In order to inspect your changes you -can use the gitk viewer (use man gitk for all options): - -.. code:: bash - - gitk - -Or if you are in textmode only you can inspect your changes with (use man git-log for all options): - -.. code:: bash - - git log - -To share your work and to have an online backup, push your local development to your fork at GitHub. **We strongly -recommend doing this on a regular basis:** - -.. code:: bash - - git push origin - -Once your development is finished, go to the GitHub website of your fork and initiate a pull request to the -ESMValTool Core Development Team by clicking on the button "Pull request". Your changes will then be tested, -discussed and then implemented into the *DEVELPOMENT BRANCH*. - -**Option 2: working with the ESMValTool GitHub Repositories without creating a fork** - -As a member of the ESMValTool development team you can create *FEATURE BRANCHES* in the OPEN as well as in the -PRIVATE repository. We encourage all ESMValTool developers to use the following workflow for long-lived -developments (>2 weeks). - -* Login to GitHub.com -* On GitHub, go to the website of the ESMValTool repository (https://github.com/ESMValGroup/ESMValTool-private or https://github.com/ESMValGroup/ESMValTool) -* Click on the button create *FEATURE BRANCH* -* Select the *"DEVELOPMENT" BRANCH* and create a new feature branch for the diagnostic/feature you want to implement. Please follow the following naming convention for your new *FEATURE BRANCH*: _. - -.. figure:: ./figures/git_branch_2.png - -* Click the button “Clone or Download” and copy the URL shown there -* Open a terminal window and go to the folder where you would like to store your local copy of the ESMValTool source -* Type git clone, and paste the URL: - -.. code:: bash - - git clone - -This will clone the ESMValTool repository at GitHub to a local folder. -You can now query the status of your local working copy with: - -.. code:: bash - - git status - -You will see that you are on a branch called master and your local working copy is up to date with the remote -repository. With - -.. code:: bash - - git branch --all - -you can list all available remote and local branches; now switch to your feature branch by: - -.. code:: bash - - git checkout - -You can now start coding. To check your current developments you can use the command - -.. code:: bash - - git status - -You can add new files and folders that you want to have tracked by Git using: - -.. code:: bash - - git add - -To simply add all new files use: - -.. code:: bash - - git add . - -It is recommended to commit your changes to your local working copy often via: - -.. code:: bash - - git commit –am "YOUR COMMIT MESSAGE" - -Alternatively, type: - -.. code:: bash - - git commit -a - -Then an editor window will open, and you can type a long commit message. In order to inspect your changes you -can use the gitk viewer (use man gitk for all options): - -.. code:: bash - - gitk - -Or if you are in textmode only you can inspect your changes with (use man git-log for all options): - -.. code:: bash - - git log - -To share your work and to have an online backup, push your local development to your FEATURE BRANCH at GitHub. -**We strongly recommend doing this on a regular basis**: - -.. code:: bash - - git push origin - -Once your development is finished, go to the GitHub website of the ESMValTool repository and switch to your -*FEATURE BRANCH*. You can then initiate a pull request for the *DEVELPOMENT BRANCH* to the ESMValTool Core -Development Team by clicking on the button "Pull request". Your changes will then be tested, discussed and then -implemented into the *DEVELPOMENT BRANCH*. - -General do-s and don't-s -======================== - -**Do-s** - -* Create a *FEATURE BRANCH* (see :numref:`git_repository` for details) for developing the ESMValTool. The naming convention for *FEATURE BRANCHES* is _. -* Try using self-explanatory names for new branches (avoid things like: "my_branch" or "my_development") -* Comment your code as much as possible. -* 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 from memory immediately. If possible, separate diagnostic calculations from plotting routines. -* Consider reusing or extending existing code (see plotting functions, general calculations). General-purpose code can be found in diag_scripts/lib/ and in plot_scripts/. -* Comment all switches and parameters including a list of all possible settings/options in the header section of your code. -* Use templates for namelists and diagnostics to ensure proper documentation (see :numref:`std_nml`). -* Keep your development branch updated regularly with the master/development branch. - -**Don't-s** - -* Do not use other programming languages than the ones currently supported (NCL, Python, R). If you want to use a programming language not yet used, please contact the ESMValTool core development team. -* 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. - -.. _wiki: - -ESMValTool development team wiki -================================ - -The latest information on the ESMValTool and diagnostics under development can be found on the wiki of the OPEN -and PRIVATE GitHub repository: - -* OPEN GitHub repository: https://github.com/ESMValGroup/ESMValTool/wiki -* PRIVATE GitHub repository: https://github.com/ESMValGroup/ESMValTool-private/wiki - -All users and developers are strongly encouraged to frequently check the ESMValTool wiki for new information, -contact data or observational data. Please contact the ESMValTool Core Development Team for access to the wiki -(see :numref:`core_dev_team`). - diff --git a/doc/sphinx/source/annex_c.rst b/doc/sphinx/source/annex_c.rst deleted file mode 100644 index 94c1e0869e..0000000000 --- a/doc/sphinx/source/annex_c.rst +++ /dev/null @@ -1,216 +0,0 @@ -.. _annex_c: - -Annex C - Available diagnostics and metrics -******************************************* - -The following pages give an overview on the available diagnostics and metrics -packages implemented into the ESMValTool v1.1. The overview contains a brief -description of the diagnostic/metric, a list of available user settings, -information on the observational data used, references, and example plots. - -For further information on the diagnostics and performance metrics of -ESMValTool v1.0, see also - -* Eyring et al., ESMValTool (v1.0) – a community diagnostic and performance metrics tool for routine evaluation of Earth System Models in CMIP, Geosci.Model Dev., 9, 1747-1802, 2016. `doi:10.5194/gmd-9-1747-2016 `_ . - -Diagnostics and observational data sets newly implemented into the ESMValTool -v1.1 are described in - -* Lauer et al., Benchmarking CMIP5 models with a subset of ESA CCI Phase 2 data using the ESMValTool, Remote Sens. Environ. (2017), `doi:10.1016/j.rse.2017.01.007 `_ - - - -.. include:: namelists/namelist_aerosol.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_autoassess_rad.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_catchment.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_clouds.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_crem.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_diurnal.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_carbon_emergent_constraints.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_esacci.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_evapotranspiration.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_ipccar5_ch9.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_carbon_cycle.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_marine_bgc.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_MJO.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_cvdp.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_ozone_climate.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_ozone_precursors.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_perfmetrics.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_precip_sm.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_seaice.rst - -.. .. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_asian_monsoon.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_southern_hemisphere.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_southern_ocean.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_spi.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_tropical_variability.rst - -.. raw:: latex - - \clearpage - \newpage - \pagebreak - -.. include:: namelists/namelist_wam.rst - diff --git a/doc/sphinx/source/config_files.rst b/doc/sphinx/source/config_files.rst deleted file mode 100644 index 3b63b36b6e..0000000000 --- a/doc/sphinx/source/config_files.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _config_files: - -Configuration files -******************* - -nml/cfg_diag/cfg_diag*.typ -========================== - -Diagnostic-specific settings are passed via configuration files. These are -collected in the nml directory under subdirectories named like the -corresponding diagnostic (e.g., *cfg_aerosol/, cfg_perfmetrics/*). The suffix -".typ" specifies the language the routine is written in. - -There might be more than one configuration script per diagnostic set. All -cfg_* files for a diagnostic set need to be in the same folder specified by -the entry of the namelist (:emphasis:`nml/namelist_*.xml`) (see -section :numref:`diag_tag` and :numref:`tab_diag_tags`). - -The configuration settings are specified as attributes of the variable -"diag_script_info" (in NCL via "diag_script_info\@attribute = ...", see example -below). In order to activate these attributes, "diag_script_info" must be set -to "True". - -**Example (NCL)**:: - - diag_script_info = True - - diag_script_info@projection = "CylindricalEquidistant" ; map projection, - ; e.g. Mollweide, Mercator - diag_script_info@styleset = "CMIP5" ; "CMIP5", "DEFAULT" - diag_script_info@colormap = "WhiteBlueGreenYellowRed" ; e.g., WhiteBlueGreenYellowRed, - ; rainbow - diag_script_info@ncdf = "default" ; enable to output to netCDF; either use "default" - ; or give a full file name - -**Example (Python)**:: - - class diag_script: - def __init__(self): - self.info = True - self.color = 1 - self.factor = 2.0e-3 - self.name = "example" - - diag_script_info = diag_script() - -**Example (R)**:: - - diag_script_info<-new() - diag_script_info[["begin_ref_year"]]<-1970 - diag_script_info[["end_ref_year"]]<-2000 - diag_script_info[["timescale"]]<-3 - diag_script_info[["seasons"]]<-c("ann", "djf", "mam", "jja", "son") diff --git a/doc/sphinx/source/core_team.rst b/doc/sphinx/source/core_team.rst deleted file mode 100644 index 54602f293f..0000000000 --- a/doc/sphinx/source/core_team.rst +++ /dev/null @@ -1,93 +0,0 @@ -.. _core_team: - -The ESMValTool core development team -************************************ - -.. _core_dev_team: - -Main contacts -============= - -A mailing list has been set up for all general and technical questions on the ESMValTool such as, for instance, -questions on installation, application or development. You are encouraged to subscribe to the ESMValTool user -mailing list by sending an email to Listserv@dlr.de with the following text: - -.. centered:: *subscribe ESMValTool-Usr* - -Core development team -===================== - -* Deutsches Zentrum für Luft- und Raumfahrt (DLR), Institut für Physik der Atmosphäre, Germany (PI) - - ESMValTool Core PI and Developer: contact for requests to use the ESMValTool and for collaboration with the - development team, access to the PRIVATE GitHub repository (see :numref:`annex_b`) - -* Alfred-Wegener-Institute Bremerhaven (AWI), Germany (overseeing EU Horizon 2020 APPLICATE and TRR181 ESMValTool work) -* Barcelona Computing Center (BSC), Spain (overseeing EU Horizon 2020 PRIMAVERA ESMValTool work) -* Ludwig Maximilian University of Munich, Germany (overseeing EU Horizon 2020 CRESCENDO ESMValTool work) -* University of Reading, United Kingdom - -Contacts for specific diagnostic sets are the respective authors, as listed in the corresponding diagnostic -documentation (including the ESMValTool development team wiki) and in the source code. - -Pull requests -============= - -This section describes the general workflow of how new diagnostics are integrated into the ESMValTool and the -responsibilities of the developer contribution to the ESMValTool. *For technical details on how to work with the -version controlled repository for the ESMValTool source code see* :numref:`annex_b`. - -Workflow core development team ------------------------------- - -The following workflow followed by the ESMValTool core development team takes place whenever a developer -requests integration of a diagnostics set into the *development branch* (see :numref:`annex_b`): - -#. Check that the developer submits a **standard namelist** that calls a set of diagnostics / metrics - -#. Check that the related documentation on the ESMValTool development team wiki is compliant with **documentation templates for diagnostics and metrics sets** (see :numref:`std_nml`). - -#. Check that the code follows **coding rules and standard** (see section :numref:`rules`). - -#. Check that a **namelist** is provided for **automated testing** that runs on 2-3 models and a small set of observations/reference model/idealized data. - - * Verify that such a **reduced and small set of observations/reference model/idealized data** is delivered for each diagnostic that is called by the standard namelist. - * Verify that an **example plot + netCDF for automated testing** created with this reduced data set is provided for each diagnostic that is called by the standard namelist as a reference. - -#. Check that also the **full set of observations** is provided that allows a sophisticated scientific application of the (full) standard namelist. - -#. Check that the **observations are documented** on the ESMValTool development team wiki and that a reformat routine is available in case the original source is not in CMOR standard. - -#. Run the **automated testing** with all available diagnostics. - -#. Iterate with developer(s) on points 1-7 until the above items are fulfilled and the reference plots for all standard namelists included in the *DEVELOPMENT BRANCH* (see :numref:`annex_b`) can be reproduced. - -Responsibilities of ESMValTool developers ------------------------------------------ - -1. Accept the **ESMValTool license agreement / terms of use** (see http://www.esmvaltool.org/license.html). - -2. Provide documentation on the ESMValTool developmet team wiki that is compliant with **documentation templates for diagnostics and metrics sets**. - -3. Provide well documented code that follows the **coding rules and standards**. - -4. **For each pull request** to implement a diagnostic set into the *DEVELOPMENT BRANCH* (see :numref:`annex_b`). - - **Scientific analysis** - - * Provide the code **for all diagnostics and metrics** that are called. - * Standard namelist running on (if possible) all CMIP5 models and corresponding plots that are produced (for the - * wiki and the user's guide). - * Provide the **full set of observations** that allows a sophisticated scientific application of the full standard namelist list (indicate source and if applicable license issues). - * Provide **documentation for the observations** on the ESMValTool development team wiki and a reformat routine if the original source does not follow the CMOR standard. - - **Automated testing (see :numref:`auto_test`)** - - * Provide the **code for automated testing** for the diagnostic set that should be integrated into the - * *DEVELOPMENT BRANCH* (see section :numref:`annex_b`). - * Provide a **namelist for automated testing**. - * Provide a **reduced and small set of observations/reference model/idealized data** for each diagnostic that is called by the testing namelist. - * Provide **NetCDF + example plots for automated testing** based on the reduced data set and the standard namelist as a reference. - -5. **Name a contact person** providing (scientific) support for your diagnostics. - diff --git a/doc/sphinx/source/developer_guide.rst b/doc/sphinx/source/developer_guide.rst deleted file mode 100644 index 0443197917..0000000000 --- a/doc/sphinx/source/developer_guide.rst +++ /dev/null @@ -1,12 +0,0 @@ -################# -Developer's Guide -################# - -.. include:: writing.rst -.. include:: documentation.rst -.. include:: core_team.rst -.. include:: references.rst -.. include:: annex_a.rst -.. include:: annex_b.rst -.. include:: annex_c.rst - diff --git a/doc/sphinx/source/developer_guide2/core_team.inc b/doc/sphinx/source/developer_guide2/core_team.inc new file mode 100644 index 0000000000..7a3e0ba9a4 --- /dev/null +++ b/doc/sphinx/source/developer_guide2/core_team.inc @@ -0,0 +1,52 @@ +.. _core_team: + +************************************ +The ESMValTool core development team +************************************ + +.. _core_dev_team: + +Main contacts +============= + +A mailing list has been set up for all general and technical questions on the ESMValTool such as, for instance, +questions on installation, application or development. You are encouraged to subscribe to the ESMValTool user +mailing list by sending an email to Listserv@dlr.de with the following text: + +.. centered:: *subscribe ESMValTool-Usr* + +Core development team +===================== + +* Deutsches Zentrum für Luft- und Raumfahrt (DLR), Institut für Physik der Atmosphäre, Germany (PI) + + ESMValTool Core PI and Developer: contact for requests to use the ESMValTool and for collaboration with the + development team, access to the PRIVATE GitHub repository. + +* Alfred-Wegener-Institute Bremerhaven (AWI), Germany +* Barcelona Computing Center (BSC), Spain +* Ludwig Maximilian University of Munich, Germany +* Netherlands E-Science Center, Netherlands +* University of Reading, United Kingdom + +Contacts for specific diagnostic sets are the respective authors, as listed in the corresponding diagnostic +documentation and in the source code. + +Pull requests +============= + +This section describes the general workflow of how new diagnostics are integrated into the ESMValTool and the +responsibilities of the developer contribution to the ESMValTool. To be written for v2. + +Workflow core development team +------------------------------ + +The following workflow followed by the ESMValTool core development team takes place whenever a developer +requests integration of a diagnostics set into the *development branch*. + +To be written for v2. + +Responsibilities of ESMValTool developers +----------------------------------------- + +To be written. diff --git a/doc/sphinx/source/developer_guide2/core_team.rst b/doc/sphinx/source/developer_guide2/core_team.rst deleted file mode 100644 index 18ccdbdbdd..0000000000 --- a/doc/sphinx/source/developer_guide2/core_team.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _core_team: - -************************************ -The ESMValTool core development team -************************************ - -.. _core_dev_team: - -Main contacts -============= - -A mailing list has been set up for all general and technical questions on the ESMValTool such as, for instance, -questions on installation, application or development. You are encouraged to subscribe to the ESMValTool user -mailing list by sending an email to Listserv@dlr.de with the following text: - -.. centered:: *subscribe ESMValTool-Usr* - -Core development team -===================== - -* Deutsches Zentrum für Luft- und Raumfahrt (DLR), Institut für Physik der Atmosphäre, Germany (PI) - - ESMValTool Core PI and Developer: contact for requests to use the ESMValTool and for collaboration with the - development team, access to the PRIVATE GitHub repository (see :numref:`annex_b`) - -* Alfred-Wegener-Institute Bremerhaven (AWI), Germany (overseeing EU Horizon 2020 APPLICATE and TRR181 ESMValTool work) -* Barcelona Computing Center (BSC), Spain (overseeing EU Horizon 2020 PRIMAVERA ESMValTool work) -* Ludwig Maximilian University of Munich, Germany (overseeing EU Horizon 2020 CRESCENDO ESMValTool work) -* University of Reading, United Kingdom - -Contacts for specific diagnostic sets are the respective authors, as listed in the corresponding diagnostic -documentation (including the ESMValTool development team wiki) and in the source code. - -Pull requests -============= - -This section describes the general workflow of how new diagnostics are integrated into the ESMValTool and the -responsibilities of the developer contribution to the ESMValTool. *For technical details on how to work with the -version controlled repository for the ESMValTool source code see* :numref:`annex_b`. - -Workflow core development team ------------------------------- - -The following workflow followed by the ESMValTool core development team takes place whenever a developer -requests integration of a diagnostics set into the *development branch* (see :numref:`annex_b`): - -#. Check that the developer submits a **standard namelist** that calls a set of diagnostics / metrics - -#. Check that the related documentation on the ESMValTool development team wiki is compliant with **documentation templates for diagnostics and metrics sets** (see :numref:`std_nml`). - -#. Check that the code follows **coding rules and standard** (see section :numref:`rules`). - -#. Check that a **namelist** is provided for **automated testing** that runs on 2-3 models and a small set of observations/reference model/idealized data. - - * Verify that such a **reduced and small set of observations/reference model/idealized data** is delivered for each diagnostic that is called by the standard namelist. - * Verify that an **example plot + netCDF for automated testing** created with this reduced data set is provided for each diagnostic that is called by the standard namelist as a reference. - -#. Check that also the **full set of observations** is provided that allows a sophisticated scientific application of the (full) standard namelist. - -#. Check that the **observations are documented** on the ESMValTool development team wiki and that a reformat routine is available in case the original source is not in CMOR standard. - -#. Run the **automated testing** with all available diagnostics. - -#. Iterate with developer(s) on points 1-7 until the above items are fulfilled and the reference plots for all standard namelists included in the *DEVELOPMENT BRANCH* (see :numref:`annex_b`) can be reproduced. - -Responsibilities of ESMValTool developers ------------------------------------------ - -1. Accept the **ESMValTool license agreement / terms of use** (see http://www.esmvaltool.org/license.html). - -2. Provide documentation on the ESMValTool developmet team wiki that is compliant with **documentation templates for diagnostics and metrics sets**. - -3. Provide well documented code that follows the **coding rules and standards**. - -4. **For each pull request** to implement a diagnostic set into the *DEVELOPMENT BRANCH* (see :numref:`annex_b`). - - **Scientific analysis** - - * Provide the code **for all diagnostics and metrics** that are called. - * Standard namelist running on (if possible) all CMIP5 models and corresponding plots that are produced (for the - * wiki and the user's guide). - * Provide the **full set of observations** that allows a sophisticated scientific application of the full standard namelist list (indicate source and if applicable license issues). - * Provide **documentation for the observations** on the ESMValTool development team wiki and a reformat routine if the original source does not follow the CMOR standard. - - **Automated testing (see :numref:`auto_test`)** - - * Provide the **code for automated testing** for the diagnostic set that should be integrated into the - * *DEVELOPMENT BRANCH* (see section :numref:`annex_b`). - * Provide a **namelist for automated testing**. - * Provide a **reduced and small set of observations/reference model/idealized data** for each diagnostic that is called by the testing namelist. - * Provide **NetCDF + example plots for automated testing** based on the reduced data set and the standard namelist as a reference. - -5. **Name a contact person** providing (scientific) support for your diagnostics. - diff --git a/doc/sphinx/source/developer_guide2/git_repository.inc b/doc/sphinx/source/developer_guide2/git_repository.inc new file mode 100644 index 0000000000..ab65a21b7d --- /dev/null +++ b/doc/sphinx/source/developer_guide2/git_repository.inc @@ -0,0 +1,178 @@ +.. _git_repository: + +Git repository +************** + +Basics +====== + +The source code of the ESMValTool is hosted on GitHub. The following description gives an overview of the typical workflow and usage for implementing new diagnostics or technical changes into the ESMValTool. For general information on Git, see e.g. the online documentation at https://www.git-scm.com/doc. + +There are *two* ESMValTool GitHub repositories available: + +#. The **PUBLIC** GitHub repository is open to the public. The ESMValTool is released as open-source software under the Apache License 2.0. Use of the software constitutes acceptance of this license and terms. The PUBLIC ESMValTool repository is located at https://github.com/ESMValGroup/ESMValTool + +#. 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. +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: + +* *MASTER BRANCH* (official releases), +* *DEVELOPMENT BRANCH* (includes approved new contributions but version is not yet fully tested), +* *FEATURE BRANCH* (development branches for new features and diagnostics created by developers, the naming convention for *FEATURE BRANCHES* is _). + +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. +* *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. + +.. _fig_git: +.. figure:: /figures/git_diagram.png + :align: center + :width: 10cm + + Schematic diagram of the ESMValTool GitHub repositories. + +Workflow +======== + +The following description gives an overview of the typical workflow and usage for implementing new diagnostics or technical changes into the ESMValTool. The description assumes that your local development machine is running a Unix-like operating system. For a general introduction to Git tutorials such as, for instance, https://www.git-scm.com/docs/gittutorial are recommended. + +Getting started +--------------- + +First make sure that you have Git installed on your development machine. On shared machines, software is usually installed using the environment modules. Try e.g. + +.. code:: bash + + module avail git + +if this is the case. You can ask your system administrator for assistance. You can test this with the command: + +.. code:: bash + + git --version + +In order to properly identify your contributions to the ESMValTool you need to configure your local Git with some personal data. This can be done with the following commands: + +.. code:: bash + + git config --global user.name "YOUR NAME" + git config --global user.email "YOUR EMAIL" + +.. note:: For working on GitHub you need to create an account and login to https://github.com/. + +Working with the ESMValTool GitHub Repositories +----------------------------------------------- + +As a member of the ESMValTool development team you can create *FEATURE BRANCHES* in the PUBLIC as well as in the PRIVATE repository. We encourage all ESMValTool developers to use the following workflow for long-lived developments (>2 weeks). + +* Login to GitHub.com +* On GitHub, go to the website of the ESMValTool repository (https://github.com/ESMValGroup/ESMValTool-private or https://github.com/ESMValGroup/ESMValTool) +* Click on the button create *FEATURE BRANCH* +* Select the *"DEVELOPMENT" BRANCH* and create a new *FEATURE BRANCH* for the diagnostic/feature you want to implement. Please follow the following naming convention for your new *FEATURE BRANCH*: _. + +.. figure:: /figures/git_branch.png + :align: center + :width: 6cm + +* Click the button "Clone or Download" and copy the URL shown there +* Open a terminal window and go to the folder where you would like to store your local copy of the ESMValTool source +* Type git clone, and paste the URL: + +.. code:: bash + + git clone + +This will clone the ESMValTool repository at GitHub to a local folder. You can now query the status of your local working copy with: + +.. code:: bash + + git status + +You will see that you are on a branch called master and your local working copy is up to date with the remote repository. With + +.. code:: bash + + git branch --all + +you can list all available remote and local branches. Now switch to your feature branch by: + +.. code:: bash + + git checkout + +You can now start coding. To check your current developments you can use the command + +.. code:: bash + + git status + +You can add new files and folders that you want to have tracked by Git using: + +.. code:: bash + + git add + +Commit your tracked changes to your local working copy via: + +.. code:: bash + + git commit -m "YOUR COMMIT MESSAGE" + +You can inspect your changes with (use man git-log for all options): + +.. code:: bash + + git log + +To share your work and to have an online backup, push your local development to your *FEATURE BRANCH* on GitHub: + +.. code:: bash + + git push origin + +.. note:: An overview on Git commands and best practices can be found e.g. here: https://zeroturnaround.com/rebellabs/git-commands-and-best-practices-cheat-sheet/ + +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. + +.. 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`). + +GitHub issues +------------- + +In case you encounter a bug of if you have a feature request or something similar you can open an issue on the PUBLIC ESMValTool GitHub repository. + +General do-s and don't-s +======================== + +Do-s +---- + +* Create a *FEATURE BRANCH* and use exclusively this branch for developing the ESMValTool. The naming convention for *FEATURE BRANCHES* is _. +* Comment your code as much as possible and in English. +* 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 diag_scripts/lib/ and in plot_scripts/. +* 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. +* 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 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. +* Do not mix developments / modifications of the ESMValTool framework and developments / modifications of diagnotics in the same *FEATURE BRANCH*. + diff --git a/doc/sphinx/source/developer_guide2/index.rst b/doc/sphinx/source/developer_guide2/index.rst index fd00eb6ee3..d84505e40f 100644 --- a/doc/sphinx/source/developer_guide2/index.rst +++ b/doc/sphinx/source/developer_guide2/index.rst @@ -2,11 +2,6 @@ Developer's Guide ################# -.. include:: porting.rst -.. .. include:: writing.rst -.. .. include:: documentation.rst -.. include:: core_team.rst -.. .. include:: references.rst -.. .. include:: annex_a.rst -.. .. include:: annex_b.rst -.. .. include:: annex_c.rst +.. include:: porting.inc +.. include:: core_team.inc +.. include:: git_repository.inc diff --git a/doc/sphinx/source/developer_guide2/porting.rst b/doc/sphinx/source/developer_guide2/porting.inc similarity index 60% rename from doc/sphinx/source/developer_guide2/porting.rst rename to doc/sphinx/source/developer_guide2/porting.inc index 8d7a94aba4..0487871e85 100644 --- a/doc/sphinx/source/developer_guide2/porting.rst +++ b/doc/sphinx/source/developer_guide2/porting.inc @@ -1,59 +1,53 @@ .. _porting: -**************************************************** -Porting namelists and diagnostics to ESMValTool v2.0 -**************************************************** +************************************************************** +Porting namelists (recipes) and diagnostics to ESMValTool v2.0 +************************************************************** -This guide summarizes the main steps to be taken in order to port an ESMValTool namelist 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. +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. In the following, it is assumed that the user has successfully installed ESMValTool v2 and has a rough overview of its structure (see `Technical Overview `_). Create a github issue ===================== -Create an issue in the public repository to keep track of your work and inform other developers. See an example `here `_. Use the following title for the issue: "PORTING into v2.0". +Create an issue in the public repository to keep track of your work and inform other developers. See an example `here `_. Use the following title for the issue: "PORTING into v2.0". Do not forget to assign it to yourself. Create your own branch ====================== -A dedicated branch shall be created from ``version2_development`` for each namelist to be ported. +Create your own branch from ``version2_development`` for each namelist (recipe) to be ported: .. code-block:: bash git checkout version2_development - git checkout -b REFACTORING_ + git checkout -b version2_ ``version2_development`` contains only v2.0 under the ``./esmvaltool/`` directory. Convert xml to yml ================== -In ESMValTool v2.0, the main namelist (hereafter *"the namelist"*) is written in yaml format (`Yet Another Markup Language format `_). It may be useful to activate the yaml syntax highlighting for the editor in use. This improves the readability of the namelist file and facilitates the editing, especially concerning the indentations which are essential in this format (like in python). Instructions can be easily found online, for example for `emacs `_ and `vim `_. +In ESMValTool v2.0, the namelist (now recipe) is written in yaml format (`Yet Another Markup Language format `_). It may be useful to activate the yaml syntax highlighting for the editor in use. This improves the readability of the recipe file and facilitates the editing, especially concerning the indentations which are essential in this format (like in python). Instructions can be easily found online, for example for `emacs `_ and `vim `_. -For most of the ESMValTool v1.0 namelists, a very first draft in yml format has already been created and is available in ./nml/. This can be used as a starting point, but keeping in mind that it has been created at a very early stage of v2.0 development and it will certainly need further changes. +A xml2yml converter is available in ``esmvaltool/utils/xml2yml/``, please refer to the corresponding README file for detailed instructions on how to use it. -The namelist file in yml shall first be moved to the esmvaltool/ directory where the v2.0 is being developed: +Once the recipe is converted, a first attempt to run it can be done, possibly starting with a few datasets and one diagnostics and proceed gradually. The recipe file ``./esmvaltool/recipes/recipe_perfmetrics_CMIP5.yml`` can be used as an example, as it covers most of the common cases. -.. code-block:: bash - - mv ./esmvaltool/namelists/tobeported/.yml ./esmvaltool/namelists/.yml - -This will help to keep track of which namelists have been already ported to the new version. Note that the namelist directory is now called ``namelists``. Such a draft may not be available for all namelist, in this case the yml namelist must be created from scratch. It is also possible to ignore the available draft version and create a new namelist from scratch anyway if preferred. - -The yaml namelist can now be edited and tested, starting with a few models and one diagnostics and proceed gradually. The namelist file ``./esmvaltool/namelists/namelist_perfmetrics_CMIP5.yml`` can be used as an example, as it covers most of the common cases. +Do not forget to also rewrite the recipe header in a ``documentation`` section using the yaml syntax and, if possible, to add themes and realms item to each diagnostic section. All keys and tags used for this part must be defined in ``./esmvaltool/config-references.yml``. See ``./esmvaltool/recipes/recipe_perfmetrics_CMIP5.yml`` for an example. Create a copy of the diag script in v2.0 ======================================== -The diagnostic script to be ported shall first be created into ./esmvaltool/diag_script/. It is recommended to get a copy of the very last version of the script to be ported from the development branch (either in the public or in the private repository). Just create a local (offline) copy of this file from the repository and add it to ../esmvaltool/diag_script/ as a new file. +The diagnostic script to be ported goes into the directory ./esmvaltool/diag_script/. It is recommended to get a copy of the very last version of the script to be ported from the development branch (either in the public or in the private repository). Just create a local (offline) copy of this file from the repository and add it to ../esmvaltool/diag_script/ as a new file. Note that (in general) this is not necessary for plot scripts and for the libraries in ``./esmvaltool/diag_script/ncl/lib/``, which have already been ported. Changes may however still be necessary, especially in the plot scripts which have not yet been fully tested with all diagnostics. Check and apply renamings ========================= -The new ESMValTool version includes a completely revised interface, handling the communication between the python workflow and the (NCL) scripts. This required several variables and functions to be renamed or removed. These chagnes are listed in the following table and shall be applied to the diagnostic code before starting with testing. +The new ESMValTool version includes a completely revised interface, handling the communication between the python workflow and the (NCL) scripts. This required several variables and functions to be renamed or removed. These chagnes are listed in the following table and have to be applied to the diagnostic code before starting with testing. .. tabularcolumns:: |p{6cm}|p{6cm}|p{3cm}| @@ -67,14 +61,14 @@ The new ESMValTool version includes a completely revised interface, handling the +-------------------------------------------------+-----------------------------------------------------+------------------+ | ``xml`` | ``yml`` | all scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -| ``var_attr_ref(0)`` | ``variable_info@reference_model`` | all .ncl scripts | +| ``var_attr_ref(0)`` | ``variable_info@reference_dataset`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -| ``var_attr_ref(1)`` | ``variable_info@alternative_model`` | all .ncl scripts | +| ``var_attr_ref(1)`` | ``variable_info@alternative_dataset`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -| ``models`` | ``model_info`` or ``input_file_info`` | all .ncl scripts | +| ``models`` | ``dataset_info`` or ``input_file_info`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -| ``models@name`` | ``model_info@model`` or | all .ncl scripts | -| | ``input_file_info@model`` | | +| ``models@name`` | ``dataset_info@dataset`` or | all .ncl scripts | +| | ``input_file_info@dataset`` | | +-------------------------------------------------+-----------------------------------------------------+------------------+ | ``verbosity`` | ``config_user_info@log_level`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ @@ -121,38 +115,54 @@ The new ESMValTool version includes a completely revised interface, handling the +-------------------------------------------------+-----------------------------------------------------+------------------+ | ``load diag_scripts/lib/ncl/misc_function.ncl`` | ``load diag_scripts/shared/plot/misc_function.ncl`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -| ``LW_CRE``, ``SW_CRE`` | ``lwcre``, ``swcre`` | some yml nmls | +| ``LW_CRE``, ``SW_CRE`` | ``lwcre``, ``swcre`` | some yml recipes | ++-------------------------------------------------+-----------------------------------------------------+------------------+ +| ``check_min_max_models`` | ``check_min_max_datasets`` | all .ncl scripts | ++-------------------------------------------------+-----------------------------------------------------+------------------+ +| ``get_ref_model_idx`` | ``get_ref_dataset_idx`` | all .ncl scripts | ++-------------------------------------------------+-----------------------------------------------------+------------------+ +| ``get_model_minus_ref`` | ``get_dataset_minus_ref`` | all .ncl scripts | +-------------------------------------------------+-----------------------------------------------------+------------------+ -The following changes shall also be considered: +The following changes may also have to be considered: +- namelists are now called recipes and collected in ``esmvaltool/recipes``; +- models are now called datasets and all files have been updated accordingly, including NCL functions (see table above); - ``run_dir`` (previous ``interface_data``), ``plot_dir``, ``work_dir`` are now unique to each diagnostic script, so it is no longer necessary to define specific paths in the diagnostic scripts to prevent file collision; -- the interface functions ``interface_get_*`` and ``get_figure_filename`` are no longer available: their functionalities can be easily reproduced using the ``model_info`` and ``input_file_info`` logicals and their attributes; +- the interface functions ``interface_get_*`` and ``get_figure_filename`` are no longer available: their functionalities can be easily reproduced using the ``dataset_info`` and ``input_file_info`` logicals and their attributes; - there are now only 4 log levels (``debug``, ``info``, ``warning``, and ``error``) instead of (infinite) numerical values in ``verbosity`` -- diagnostic scripts are now organized in subdirectories in ``esmvaltool/diag_scripts/``: all scripts belonging to the same diagnostics shall be collected in a single subdirectory (see ``esmvaltool/diag_scripts/perfmetrics/`` for example). This applies also to the ``aux_`` scripts, unless they are shared among multiple diagnostics (in this case they shall go in ``shared/``); -- upper case characters shall be avoided in script names. +- diagnostic scripts are now organized in subdirectories in ``esmvaltool/diag_scripts/``: all scripts belonging to the same diagnostics are to be collected in a single subdirectory (see ``esmvaltool/diag_scripts/perfmetrics/`` for example). This applies also to the ``aux_`` scripts, unless they are shared among multiple diagnostics (in this case they go in ``shared/``); +- upper case characters have to be avoided in script names, if possible. -As for the namelist, the diagnostic script ``./esmvaltool/diag_scripts/perfmetrics_main.ncl`` can be followed as working example. +As for the recipe, the diagnostic script ``./esmvaltool/diag_scripts/perfmetrics_main.ncl`` can be followed as working example. Move preprocessing from the diagnostic script to the backend ============================================================ -Many operations previously performed by the diagnostic scripts, are now included in the backend, including level extraction, regridding, masking, and multi-model statistics. If the diagnostics to be ported contains code performing any of such operations, the corresponding code has to be removed from the diagnostic script and the respective backend functionality shall be used instead. +Many operations previously performed by the diagnostic scripts, are now included in the backend, including level extraction, regridding, masking, and multi-model statistics. If the diagnostics to be ported contains code performing any of such operations, the corresponding code has to be removed from the diagnostic script and the respective backend functionality can be used instead. -The backend operations are fully controlled by the ``preprocessors`` section in the namelist. Here, a number of preprocessor sets can be defined, with different options for each of the operations. The sets defined in this section are applied in the ``diagnostics`` section to preprocess a given variable. +The backend operations are fully controlled by the ``preprocessors`` section in the recipe. Here, a number of preprocessor sets can be defined, with different options for each of the operations. The sets defined in this section are applied in the ``diagnostics`` section to preprocess a given variable. -It is recommended to proceed step by step, porting and testing each operation separately before proceeding with the next one. A useful setting in the user configuration file (``config-private.yml``) called ``write_intermediary_cube`` allows writing out the variable field after each preprocessing step, thus facilitating the comparison with the old version (e.g., after CMORization, level selection, after regridding, etc.). The CMORization step of the new backend exactly corresponds to the operation performed by the old backend (and stored in the ``climo`` directory, now called ``preprec``): this shall be the very first step to be checked, by simply comparing the intermediary file produced by the new backend after CMORization with the output of the old backend in the ``climo`` directorsy (see "Testing" below for instructions). +It is recommended to proceed step by step, porting and testing each operation separately before proceeding with the next one. A useful setting in the user configuration file (``config-private.yml``) called ``write_intermediary_cube`` allows writing out the variable field after each preprocessing step, thus facilitating the comparison with the old version (e.g., after CMORization, level selection, after regridding, etc.). The CMORization step of the new backend exactly corresponds to the operation performed by the old backend (and stored in the ``climo`` directory, now called ``preprec``): this is the very first step to be checked, by simply comparing the intermediary file produced by the new backend after CMORization with the output of the old backend in the ``climo`` directorsy (see "Testing" below for instructions). -The new backend also performs variable derivation, replacing the ``calculate`` function in the ``variable_defs`` scripts. If the namelist which is being ported makes use of derived variables, the corresponding calculation must be ported from the ``./variable_defs/.ncl`` file to ``./esmvaltool/preprocessor/_derive.py``. +The new backend also performs variable derivation, replacing the ``calculate`` function in the ``variable_defs`` scripts. If the recipe which is being ported makes use of derived variables, the corresponding calculation must be ported from the ``./variable_defs/.ncl`` file to ``./esmvaltool/preprocessor/_derive.py``. Note that the Python library ``esmval_lib``, containing the ``ESMValProject`` class is no longer available in version 2. Most functionalities have been moved to the new preprocessor. If you miss a feature, please open an issue on github [https://github.com/ESMValGroup/ESMValTool/issues]. -Move diagnostic- and variable-specific settings to the namelist +Move diagnostic- and variable-specific settings to the recipe =============================================================== -In the new version, all settings are centralized in the namelist, completely replacing the diagnostic-specific settings in ``./nml/cfg_files/`` (passed as ``diag_script_info`` to the diagnostic scripts) and the variable-specific settings in ``variable_defs/.ncl`` (passed as ``variable_info``). There is also no distinction anymore between diagnostic- and variable-specific settings: they are collectively defined in the ``scripts`` dictionary of each diagnostic in the namelist and passed as ``diag_script_info`` attributes by the new ESMValTool interface. Note that the ``variable_info`` logical still exists, but it is used to pass variable information as given in the corresponding dictionary of the namelist. +In the new version, all settings are centralized in the recipe, completely replacing the diagnostic-specific settings in ``./nml/cfg_files/`` (passed as ``diag_script_info`` to the diagnostic scripts) and the variable-specific settings in ``variable_defs/.ncl`` (passed as ``variable_info``). There is also no distinction anymore between diagnostic- and variable-specific settings: they are collectively defined in the ``scripts`` dictionary of each diagnostic in the recipe and passed as ``diag_script_info`` attributes by the new ESMValTool interface. Note that the ``variable_info`` logical still exists, but it is used to pass variable information as given in the corresponding dictionary of the recipe. + +Make sure the diagnostic script writes NetCDF output +====================================================== + +Each diagnostic script is required to write the output of the anaylsis in one or more NetCDF files. This is to give the user the possibility to further look into the results, besides the plots, but (most importantly) for tagging purposes when publishing the data in a report and/or on a website. -Test the namelist/diagnostic in the new version +For each of the plot produced by the diagnostic script a single NetCDF file has to be generated. The variable saved in this file should also contain all the necessary metadata that documents the plot (dataset names, units, statistical methods, etc.). +The files have to be saved in the work directory (defined in `cfg['work_dir']` and `config_user_info@work_dir`, for the python and NCL diagnostics, respectively). + +Test the recipe/diagnostic in the new version =============================================== Once complete, the porting of the diagnostic script can be tested. Most of the diagnostic script allows writing the output in a NetCDF file before calling the plotting routine. This output can be used to check whether the results of v1.0 are correctly reproduced. As a reference for v1.0, it is recommended to use the development branch. @@ -173,9 +183,9 @@ The second method produces a NetCDF file (e.g., ``diff.nc``) with the difference This file can be opened with ``ncview`` to visually inspect the differences. -In general, binary identical results cannot be expected, due to the use of different languages and algorithms in the two versions, especially for complex operations such as regridding. However, difference within machine precision shall be aimed at. At this stage, it is essential to test all models in the namelist and not just a subset of them. +In general, binary identical results cannot be expected, due to the use of different languages and algorithms in the two versions, especially for complex operations such as regridding. However, difference within machine precision are desirable. At this stage, it is essential to test all datasets in the recipe and not just a subset of them. -It is also recommended to compare the graphical output (this may be necessary if the ported diagnostic does not produce a NetCDF output). For this comparison, the PostScript format shall be chosen (it can be set in the user configuration file). Two PostScript files can be compared with standard ``diff`` command in Linux: +It is also recommended to compare the graphical output (this may be necessary if the ported diagnostic does not produce a NetCDF output). For this comparison, the PostScript format is preferable, since it is easy to directly compare two PostScript files with the standard ``diff`` command in Linux: .. code-block:: bash @@ -186,14 +196,18 @@ but it is very unlikely to produce no differences, therefore visual inspection o Clean the code ============== -Before submitting a pull request, the code shall be cleaned to adhere to the coding standard, which are somehow stricter in v2.0. For python code, this check is performed automatically on GitHub (CircleCI and Codacy). For NCL code, this is still done manually and considers the following guidelines: +Before submitting a pull request, the code should be cleaned to adhere to the coding standard, which are somehow stricter in v2.0. This check is performed automatically on GitHub (CircleCI and Codacy) when opening a pull request on the public repository. A code-style checker (``nclcodestyle``) is available in the tool to check NCL scripts and installed alongside the tool itself. When checking NCL code style, the following should be considered in addition to the warning issued by the style checker: -- code syntax shall be checked using ``/util/ncl-checker/pep8.py .ncl`` and all reported warnings shall be fixed; - two-space instead of four-space indentation is now adopted for NCL as per NCL standard; -- ``load`` statements for NCL standard libraries shall be removed: these are automatically loaded since NCL v6.4.0 (see `NCL documentation `_); -- the description of diagnostic- and variable-specific settings shall be moved from the header of the diagnostic script to the main namelist, since the settings are now defined there (see above); -- NCL ``print`` and ``printVarSummary`` statements shall be avoided and replaced by the ``log_info`` and ``log_debug`` functions; -- for error and warning statments, the ``error_msg`` function shall be used, which automatically include an exit statement. +- ``load`` statements for NCL standard libraries should be removed: these are automatically loaded since NCL v6.4.0 (see `NCL documentation `_); +- the description of diagnostic- and variable-specific settings can be moved from the header of the diagnostic script to the recipe, since the settings are now defined there (see above); +- NCL ``print`` and ``printVarSummary`` statements must be avoided and replaced by the ``log_info`` and ``log_debug`` functions; +- for error and warning statments, the ``error_msg`` function can be used, which automatically include an exit statement. + +Update the documentation +======================== + +If necessary, add or update the documentation for your recipes in the corrsponding rst file, which is now in ``doc\sphinx\source\recipes``. Do not forget to also add the documentation file to the list in ``doc\sphinx\source\annex_c`` to make sure it actually appears in the documentation. Open a pull request =================== diff --git a/doc/sphinx/source/directory.rst b/doc/sphinx/source/directory.rst deleted file mode 100644 index 146d6c616b..0000000000 --- a/doc/sphinx/source/directory.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. _directory: - -Directory structure of the ESMValTool -************************************* - -An overview of the directory structure used in the ESMValTool is given in Table -:numref:`tab_direc_struc`. This section summarizes the underlying principles -of the structure. - -* Common namelist settings (e.g., models, year ranges, diagnostics) are - usually stored in one place. -* Less common settings may be hidden deeper in the directory structure (see - also :numref:`config_files`). -* Diagnostic scripts that can be used by namelist entries are also stored in - one place and it generally possible to combine them in a modular way (e.g., - using the output of one routine as input for another). -* Reuse of code is strongly encouraged, i.e., one place for each - functionality (modularity on the technical level). -* The goal is to centralize functionality in individual functions/procedures - whenever there is the possibility of reusability. New developers are encouraged - to consider building on or extending existing routines before introducing new - ones. -* Routines are sorted into folders according to their functionality. Whenever - possible, the hierarchy level of routines is reflected by their position in the - directory structure. - diff --git a/doc/sphinx/source/documentation.rst b/doc/sphinx/source/documentation.rst deleted file mode 100644 index 5884e3e45c..0000000000 --- a/doc/sphinx/source/documentation.rst +++ /dev/null @@ -1,177 +0,0 @@ -.. _documentation: - -Scientific documentation of a diagnostic script or metrics set -************************************************************** - -An important part of the implementation of a new diagnostic script is the documentation of the diagnostic itself as well as the documentation of the observational data sets used on the ESMValTool development team wiki (see :numref:`wiki` for details on the wiki, see also :numref:`writing` for general guidelines on documentation). -The former should comply with the standard template for new diagnostics (see section :numref:`std_diag` below) and the latter should include instructions how to download the observational data and, if necessary, scripts to convert it to the format required in ESMValTool, see section :numref:`mod_obs_data` below. - -.. _std_diag: - -Standard template -================= - -When implementing a new diagnostic script or metrics set, it should be documented on the ESMValTool development team wiki in the OPEN or PRIVATE Github repository (see :numref:`wiki`) starting from the standard template given below: - -.. tabularcolumns:: |p{4cm}|p{11cm}| - -+---------------------------+--------------------------------------------------------------------------+ -| **Title of diagnostic/performance metrict** | -+===========================+==========================================================================+ -| **Developers** | first name surname 1 (DLR tag 1), first name surname 2 (DLR tag 2), etc. | -+---------------------------+--------------------------------------------------------------------------+ -| **Contributors** | first name surname 1 (DLR tag 1), first name surname 2 (DLR tag 2), etc. | -+---------------------------+--------------------------------------------------------------------------+ -| **Date of documentation** | yyyy-mm-dd | -+---------------------------+--------------------------------------------------------------------------+ -| **Name of standard** | For Xyz the following naming conventions is used: | -| **namelist (XyZ)** | | -| | For papers: | -| | | -| | XyZ=SurnameYearJournalabbreviation | -| | | -| | (e.g., stocker12jgr, stocker12sci1, stocker12sci2). | -| | | -| | For copies of reports that are not publicly available: | -| | | -| | XyZ=OrgYearTitleabbrev | -| | | -| | (e.g., unep10water, unep11gap,roysoc09geoengineering). | -| | | -| | | -| | For grouped set of diagnostics and performance metrics that do not follow| -| | a published paper or report: | -| | | -| | an intuitive name that describes the science theme | -| | | -| | (e.g., XyZ=aerosol, MyDiag, SAMonsoon, SeaIce). | -+---------------------------+--------------------------------------------------------------------------+ -| **User settings** | list of all settings that have to be checked/changed by a user in order | -| | to run the diagnostic (e.g., pathnames, configuration files, color | -| | tables, supported model names, etc.) | -+---------------------------+--------------------------------------------------------------------------+ -| **Brief summary** | 1-3 sentence summary | -+---------------------------+--------------------------------------------------------------------------+ -| **Status** | Planned/work in progress/finished and integrated into development branch | -+---------------------------+--------------------------------------------------------------------------+ -| **CMOR variable name** | e.g., tas (atmos, monthly mean, longitude latitude plevs time) | -| **(realm, frequency,** | | -| **dimension)** | | -+---------------------------+--------------------------------------------------------------------------+ -| **Link to git repository**| e.g., https://github.com/axel-lauer/ESMValTool/tree/cloud | -| **(feature branch)** | | -+---------------------------+--------------------------------------------------------------------------+ -| ``1.`` Overview | -| ... Insert text here | -| ``2.`` Available Diagnostics | -| ... Insert text here | -| ``3.`` Specific Routines | -| ... Contains a description of specific routines being developed for the given diagnostic that helps | -| ... to identify common code (which should then go in the ``lib/``) | -| ``4.`` Observations and Scripts (also see Model and observational data below) | -| ... Insert text here | -| ``5.`` Test Cases (see also Automated testing, section :numref:`auto_test`) | -| ... Insert text here | -| ``6.`` References | -| ... REF1 | -| ... REF2 | -| ... etc. | -| ``7.`` Sample Plots | -| ... Please insert sample plots for all plot types produced by the namelist | -+---------------------------+--------------------------------------------------------------------------+ - - -.. _mod_obs_data: - -Model and observational data -============================ - -Overview --------- - -When possible, observations from the obs4MIPs/ana4MIPs archives are used in the model evaluation (see :numref:`diag_avail`). -These data are freely available from the ESGF in the same format as the CMIP simulations and can be directly used in the ESMValTool using the obs4mips or ana4mips class in the namelist (see also section :numref:`mod_obs_run`). - -Important links - -https://www.earthsystemcog.org/projects/obs4mips/satellite_data_products - -Nightly scan across nodes - -https://www.earthsystemcog.org/search/obs4mips/?template=obs4mips&limit=200 - -Observational data sets not available in these archives need to be reformatted according to the CF/CMOR standard before they can be used. -In this case a reference to the official URL is provided such that a user can get the latest version of the data set as well as a description and a script how to convert the data set to the format required by the ESMValTool. These conversion scripts are collected in *reformat_scripts/obs/reformat_obs_.ncl*. -The reformatting routines must be documented with a standard header providing all information required to retrieve and process the data, as well as their availability (Tier 1, Tier 2, or Tier 3). - -All observations are tiered as follows: - - * Tier 1: data sets from the obs4MIPs and ana4MIPs archives - * Tier 2: other freely available data sets - * Tier 3: restricted data sets (e.g., license agreement required) - -For Tier 2 and 3 data, the developer shall also provide links and helper scripts through the reformatting routines, following the template for the standard header described in section for the reformatting routines. -An example can be found here: - -.. centered:: - *reformat_scripts/obs/reformat_obs_AURA-MLS-OMI.ncl*. - -An overview on the available reformatting scripts for Tier 2 and 3 data is given in :numref:`tab_obs_data`. -The reformatted observational data (Tier 2 and Tier 3) must be named according to the OBS class defintion, which considers the following naming convention: - -.. centered:: - OBS______-.nc - -where: - - is the name of the satellite, instrument, campaign, network, model, etc. (e.g., ERA-Interim, AERONET, AURA-MLS-OMI, etc.) - - is the observation type (insitu, ground, sat, reanaly, campaign, etc.) - - is the version number, processing level or station code (for ground-based networks), use 1 if not available. - -It is also possible to split the output in multiple files, like in the CMIP5 class, e.g. _200101-200512.nc, 200601_201012.nc, 201101-201512.nc, etc. This is particularly useful for daily data, which are usually too large to be collected in a single file covering the whole time period. - -Standard header for the reformatting routines for observational data --------------------------------------------------------------------- - -This is a template of the standard header for the reformat_obs routines. -The parts in red are the ones to be modified by the author. -The modification history is given in reverse chronological order (i.e., most recent on top) and the last entry always contains the written statement. -The author of each entry in the modification history shall be indicated with the author tag, as given in the master reference file (*doc/MASTER_authors-refs-acknow.txt*), e.g., A_surn_na = surname, name. -All lines should be limited to a maximum of 79 characters. - -.. code-block:: ncl - - ;;############################################################################# - ;; REFORMAT SCRIPT FOR THE [OBSERVATION NAME] OBSERVATIONAL DATA - ;;############################################################################# - ;; - ;; Tier - ;; [Information on data availability, possible options are:] - ;; Tier 1: obs4MIPs or ana4MIPs - ;; Tier 2: other freely-available data set - ;; Tier 3: restricted data set - ;; - ;; Source - ;; [URL to the data source or the reference] - ;; - ;; Last access - ;; [YYYYMMDD] - ;; - ;; Download and processing instructions - ;; [Short explanation on how to download and process the data] - ;; - ;; Caveats - ;; [List possible caveats or limitations of this script] - ;; [Features to-be-implemented shall also be mentioned here] - ;; - ;; Modification history - ;; [YYYYMMDD-A_xxxx_yy: extended...] - ;; [YYYYMMDD-A_xxxx_yy: written.] - ;; - ;; ############################################################################# - - load ... - load ... - diff --git a/doc/sphinx/source/figures/Attention.png b/doc/sphinx/source/figures/Attention.png deleted file mode 100644 index 7ad47271dd..0000000000 Binary files a/doc/sphinx/source/figures/Attention.png and /dev/null differ diff --git a/doc/sphinx/source/figures/example_figure3.png b/doc/sphinx/source/figures/example_figure3.png deleted file mode 100644 index c6452d72a3..0000000000 Binary files a/doc/sphinx/source/figures/example_figure3.png and /dev/null differ diff --git a/doc/sphinx/source/figures/figure_ESMValTool_controlflow.png b/doc/sphinx/source/figures/figure_ESMValTool_controlflow.png deleted file mode 100644 index b921507e1f..0000000000 Binary files a/doc/sphinx/source/figures/figure_ESMValTool_controlflow.png and /dev/null differ diff --git a/doc/sphinx/source/figures/git_branch_2.png b/doc/sphinx/source/figures/git_branch_2.png deleted file mode 100644 index 585f71f158..0000000000 Binary files a/doc/sphinx/source/figures/git_branch_2.png and /dev/null differ diff --git a/doc/sphinx/source/figures/git_diagram.png b/doc/sphinx/source/figures/git_diagram.png index 9cf346df47..d35bedf8b7 100644 Binary files a/doc/sphinx/source/figures/git_diagram.png and b/doc/sphinx/source/figures/git_diagram.png differ diff --git a/doc/sphinx/source/figures/git_fork.png b/doc/sphinx/source/figures/git_fork.png deleted file mode 100644 index eebce1354e..0000000000 Binary files a/doc/sphinx/source/figures/git_fork.png and /dev/null differ diff --git a/doc/sphinx/source/figures/schematic.png b/doc/sphinx/source/figures/schematic.png index e4cbfbb2c9..c112604106 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/index.rst b/doc/sphinx/source/index.rst index f4a7de45fa..61052b9eea 100644 --- a/doc/sphinx/source/index.rst +++ b/doc/sphinx/source/index.rst @@ -7,10 +7,13 @@ Welcome to ESMValTool's documentation! ====================================== .. toctree:: - :maxdepth: 3 + :maxdepth: 2 preface known_issues + + recipes/index + user_guide2/index developer_guide2/index diff --git a/doc/sphinx/source/install.rst b/doc/sphinx/source/install.rst deleted file mode 100644 index c5afff78c4..0000000000 --- a/doc/sphinx/source/install.rst +++ /dev/null @@ -1,61 +0,0 @@ -Software installation -********************* - -.. _prerequisites: - -Prerequisites -============= - -The ESMValTool has the following software requirements (note that specific diagnostics might require additional software packages): - -* Unix(-like) operating system -* Python version 2.7.x for running the Python script main.py; most diagnostics written in Python require installation of additional Python packages such as, for instance, Geometry Engine (GEOS), scientificpython, netCDF4, cdo, geoval, cartopy, and iris. - - *The required Python packages can be installed with the following commands:* - - conda install basemap - - conda install --channel https://conda.anaconda.org/Clyde_Fare scientificpython - - conda install hdf4 - - conda install netcdf4 - - conda install --channel https://conda.anaconda.org/auto cdo - - pip install geoval - - conda install -c scitools cartopy - - conda install -c scitools iris - - .. attention:: It is strongly recommended to use the Python distribution Anaconda (https://www.continuum.io/), as it allows the user to install additional Python libraries and extensions in a simple way and without modifying the installed Python distribution (i.e., without root permissions). The installation instructions for the additional Python packages listed above are given for Anaconda. - -* NCAR Command Language (NCL 2014) version 6.2 or higher (note: NCL version 6.3 is not supported, see known issues) to run the quality check and reformat routines processing all input files. See the control flow description on reformat_default in :numref:`workflow_reformat` for details. -* The statistical computing software R to run diagnostics written in R. A working installation of R and the executable Rscript in the default search path are required. In addition, the netCDF for R libraries (ncdf / ncdf4) are needed. Currently, only the diagnostics "Standardized Precipitation index (SPI)" and "Ozone and associated climate impacts (Eyring13, fig. 6)" (see :numref:`annex_c`) require R. More diagnostics written in R might be added in the future. -* The sea ice diagnostics (and derived diagnostics such as, for instance, the ESA CCI namelist) require the Climate Data Operators (CDO): https://code.zmaw.de/projects/cdo. The CDO executable has to be in the default search path (callable via the command "cdo"). -* Input files in netCDF with required attributes and dimension names. Valid input files are: - - * files in CMIP or similarly standardized format using a CMIP5 table, or with discrepancies that can be handled via the definitions in the files reformat_scripts/recognized_units.dat and reformat_scripts/recognized_units.dat, respectively. - * any input file with a (user-)supplied reformat routine that converts the input data during run-time, see the control flow description on reformat_EMAC in :numref:`workflow_reformat` for details - -* Common GNU utilities such as "wc", "date", "basename", and "more", which are usually part of the standard Linux distribution. - -Obtaining the source code -========================= - -The ESMValTool is available on GitHub at https://github.com/ESMValGroup/ESMValTool (see also :numref:`git_repository`). 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 (doi:10.17874/ac8548f0315) and version number: - - *Eyring et al., ESMValTool (v1.0) - a community diagnostic and performance metrics tool for routine evaluation of Earth System Models in CMIP, Geosci. Model Dev., 9, 1747-1802, 2016.* - -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. - -**The ESMValTool will be further developed in a version controlled repository (see** :numref:`git_repository` **for details).** In addition to using the software, we would therefore like to encourage the community to join the Software Development Team and to contribute additional diagnostics and performance metrics or other software improvements. Contributing back the new diagnostics and performance metrics or other software improvements will help to enhance the capability 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 Software, which represents a product of considerable effort by the development team. - -A wiki page (see :numref:`wiki` for details) that describes ongoing developments is available for the ESMValTool development team. Interested developers are welcome to contact the core development team (see :numref:`core_dev_team`). - -Software installation -===================== - -The ESMValTool can be downloaded from GitHub (:numref:`git_repository`) to any local directory. While the ESMValTool itself does not need to be installed besides downloading/copying the ESMValTool directories to a local folder, it relies on specific software to be available on your system. Please see :numref:`prerequisites` for details. - diff --git a/doc/sphinx/source/intro.rst b/doc/sphinx/source/intro.rst deleted file mode 100644 index efd82e77fb..0000000000 --- a/doc/sphinx/source/intro.rst +++ /dev/null @@ -1,25 +0,0 @@ -Introduction -************ - -The Earth System Model Evaluation Tool (ESMValTool) is a community-development that aims at improving diagnosing and understanding of the causes and effects of model biases and inter-model spread. The ESMValTool is open to both users and developers encouraging open exchange of diagnostic source code and evaluation results from the Coupled Model Intercomparison Project (CMIP) ensemble. This will facilitate and improve ESM evaluation beyond the state-of-the-art and aims at supporting the activities within CMIP and at individual modelling centers. We envisage running the ESMValTool routinely on the CMIP model output utilizing observations available through the Earth System Grid Federation (ESGF) in standard formats (obs4MIPs) or made available at ESGF nodes. - -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 namelists 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. - -Architecture -============ - -:numref:`fig_schematic` shows a schematic of the ESMValTool architecture: the workflow manager (controlled by the Python script "main.py") runs a set of diagnostics on data provided by, for instance, a data archive. The configuration and the settings of each diagnostic are specified in namelists read and passed to the diagnostics by the workflow manager. The results which typically comprise of netCDF files and/or plots are stored in output folders along with log-files summarizing the data used, references, and technical details to ensure traceability and reproducibility of the results. - -.. _fig_schematic: -.. figure:: /figures/schematic.png - :align: center - - Schematic of the system architecture. The workflow manager (main.py) passes information to the diagnostics; results and log-files are written to dedicated folders. diff --git a/doc/sphinx/source/known_issues.rst b/doc/sphinx/source/known_issues.rst index b9c98081d8..e479a57a07 100644 --- a/doc/sphinx/source/known_issues.rst +++ b/doc/sphinx/source/known_issues.rst @@ -1,17 +1,5 @@ -.. raw:: latex +Known issues +------------ - \section*{Known issues} - -.. raw:: html - -

Known issues

- -**NCL 6.3.0** - -* WAMonsoon: There is a problem with the routine mreg_part_corr (local opt should be removed and undef("mreg_part_corr") should be positioned just before. - * A missing "undef" before the declaration of the function "mreg_part_corr" in the NCL library "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl" causes the ESMValTool to crash when this library is loaded more than once within the same execution. This unfortunately happens quite often within the tool, since libraries can be loaded multiple times within the various scripts (diag_scripts, lib/ncl, plot_scripts). *At this time, only versions of NCL older than v6.3.0 can be used with the ESMValTool.* This problem will hopefully be fixed with the next NCL release. - -**Namelist "SouthernHemisphere"** - -* Models with "dash = 0" in their style definition (diag_scripts/lib/python/style.cfg) will not be plotted in the "fraction occurrence histograms of binned cloud cover" plots created by the diagnostic script diag_scripts/SoutherHemisphere_scatter.py. +Please see our bug and feature request tracker on `github `_. diff --git a/doc/sphinx/source/namelists.rst b/doc/sphinx/source/namelists.rst deleted file mode 100644 index 2674c5120c..0000000000 --- a/doc/sphinx/source/namelists.rst +++ /dev/null @@ -1,871 +0,0 @@ -.. _namelists: - -ESMValTool namelists -******************** - -The ESMValTool namelists are the "control centers" acting as interfaces between the user and the various scripts and configuration files that make up the ESMValTool. A namelist specifies a list of diagnostics to run, global flags and a list of models and observations that are used within the diagnostics. Namelists are text files written in XML (EXtensible Markup Language) [XML]. As a simple text file, the XML-namelist can be easily modified by the user. - -For any given namelist *"namelist.xml"*, the ESMValTool is invoked from the command line via (see also :numref:`running`):: - - python main.py nml/namelist.xml - - -The Python "workflow manager" *main.py* will parse the namelist (namelist.xml) and call all diagnostic scripts listed in the namelist. This sequence is schematicallypython main.py nml/namelist.xml depicted in :numref:`fig_controlflow` and involves the following steps: - -1. Parse the namelist -2. Identify the input files on the file system -3. Run an NCL script to check and reformat the input files -4. If needed, run a NCL script to compute derived variables such as, for instance, climate indices -5. Run the diagnostic script (NCL/Python/R/etc.) -6. Repeat previous steps until all diagnostics listed in the namelist are processed - - -.. _fig_controlflow: -.. figure:: ./figures/figure_ESMValTool_controlflow.png - :scale: 90 % -   :alt: figure_ESMValTool_controlflow.png -   :align: center - - ESMValTool control flow. - -The script *main.py* processes the information in the XML namelist to be used by each of the supported programming languages (currently NCL, Python and R) used for the diagnostic scripts. This means that different diagnostics, even if implemented in different programming languages, can be called within the same namelist. Any changes to the settings of the namelist will passed to each diagnostic script. - -Note that the coupling between the namelist and the diagnostic scripts is "loose". The Python workflow manager *main.py* passes all information in the namelist to the target diagnostic script, e.g., via intermediate files or environment variables, but it is up to the diagnostic script to act on that information. - -**Basic structure of a namelist** - - **** - - controls the general settings (see :numref:`tab_glob_tags`) ; see :numref:`glob_tag`, "More on the -tag" below for details - - **** - - **** - - defines the models/observations and years to be processed and their pathnames; see :numref:`mod_tag`, "More on the -tag" below for details - - **** - - **** - - defines which diagnostics are run (see :numref:`tab_diag_tags`); each diagnostic is enclosed in an opening and closing -tag; see :numref:`diag_tag`, "More on the -tag" below for details - - **** - - -Please note that the "loose coupling" described above applies particularly to the settings defined in the two elements and . - - -.. _glob_tag: - -More on the -tag -======================== - -:numref:`tab_glob_tags` summarizes the tags defined in the section of the namelist. Some of these tags (e.g., regridding_dir) are specific to some diagnostics and not generally defined in all namelists. - -:numref:`tab_glob_tags` Tags of the section of the namelist. Note that not all tags might be used by a diagnostic. - -.. _tab_glob_tags: - -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| Name | Type | Description | -+======================+==========+================================================================================================+ -| climo_dir | string | Path for intermediate files (netCDF) | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| exit_on_warning | boolean | Stop on warnings | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| force_calc | boolean | Force diagnostic specific files to be recreated | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| force_gradecalc | boolean | Force recalculation of model grading (perfmetrics) | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| force_processing | boolean | Force certain intermediate files (netCDF) to be recreated instead of using cached files | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| force_taylorcalc | boolean | Force recalculation of data for Taylor plot (perfmetrics) | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| max_data_blocksize | integer | Currently not used | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| max_data_filesize | integer | Limits internal memory handling in some core NCL scripts | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| output_file_type | string | File format of plots (ps, pdf, eps, png); not all formats supported by all diagnostic scripts | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| plot_dir | string | Output path for plots | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| read_from_vault | boolean | Retrieve computed diagnostic fields from netCDF | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| regridding_dir | string | Path for intermediate files used by NCL regridding routines | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| show_debuginfo | string | Generate a second version of each figure with explanatory text overlayed | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| verbosity | integer | Verbosity level (0 = minimum output, 4=maximum output) | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| write_netcdf | boolean | Write results to netCDF file | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| write_plot_vars | boolean | Currenntly not used | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| write_plots | boolean | Produce plots | -+----------------------+----------+------------------------------------------------------------------------------------------------+ -| wrk_dir | string | Output path for data (netCDF, acknowledgements) | -+----------------------+----------+------------------------------------------------------------------------------------------------+ - -.. _mod_tag: - -More on the -tag -======================== - -Each data set is specified by a line with the first entry of each model line being the "project specifier" (see :numref:`tab_proj_spec`). The project specifier refers to a Python class that is used to parse the model line in the namelist. For example, a model line with the "CMIP5" specifier looks like: - - * CMIP5 name mip experiment ensemble start-year end-year path * - -* Optionally, the element "*mip*" can be replaced with "*MIP_VAR_DEF*" if the tag "MIP" is specified in the tag (see :numref:`tab_opt_att`), e.g.: - - * rlut * - - * CMIP5_ETHZ MPI-ESM-LR MIP_VAR_DEF amip r1i1p1 1980 1985 \@{MODELPATH}/ETHZ_CMIP5/ * - -* The element "experiment" can be replaced with "*EXP_VAR_DEF*" if the tag "*EXP*" is specified in the tag (see Table S4), e.g.: - - * fgco2 * - - * CMIP5_ETHZ NorESM1-ME MIP_VAR_DEF* **EXP_VAR_DEF** *r1i1p1 1960 2005 \@{MODELPATH}/ETHZ_CMIP5 * - -The project specifier "CMIP5" will search for files in "path" with filenames matching the pattern - - *_mip_name_experiment_ensemble_* - -Here, the leading asterisk is a placeholder for the variable, which is defined in the -tag (see below), the trailing asterisk is a placeholder for the start/end date of the data set. This naming convention conforms to the syntax used for CMIP5 DRS filenames (as implied by the project specifier name). By implementing their own project specifier classes into the Python code (*interface_scripts/projects.py*), the user can handle data sets that follow different file naming conventions or require additional information to be passed along in addition to the filename. :numref:`tab_proj_spec` gives a summary of the available project specifiers and arguments to be used in each line. - -[**Note: Examples for the most commonly used project specifiers CMIP5, CMIP5_ETHZ, OBS, and obs4mips as well as downloading instructions and information on the required local directory structure for the model / observational data can be found in :numref:`diag_avail`.**] - -The -tag may also take the optional attribute "*id*": - -Example: - - * OBS ERA-Interim reanaly 1 2003 2004 @{OBSPATH}/Tier3/ERA-Interim * - -The attribute *id* specifies a string that can be used to refer to the model in other places of the namelist. :numref:`tab_mod_tags` gives a summary of valid attributes in -tags. - -:numref:`tab_proj_spec` Project specifiers and corresponding arguments. - -.. raw:: latex - - \newline - -.. _tab_proj_spec: - -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| project specifier | argument 1 | argument 2 | argument 3 | argument 4 | argument 5 | argument 6 | argument 7 | argument 8 | -+===================+============+===============+============+============+============+============+============+============+ -| ana4mips | Name | table | experiment | ensemble | realm | start year | end year | path | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| CCMVal | name | case-name | ensemble | start year | end year | path | | | -| CCMVal1 | name | case-name | ensemble | start year | end year | path | | | -| CCMVal2 | name | case-name | ensemble | start year | end year | path | | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| CMIP5 | name | mip | experiment | ensemble | start year | end year | Path | | -| CMIP5_ETHZ | name | mip | experiment | ensemble | start year | end year | path | | -| CMIP5_gridfile | name | mip | experiment | ensemble | start year | end year | path | gridfile | -| CMIP5_SMHI | name | mip | experiment | ensemble | start year | end year | frequency | path | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| ECEARTH | Name | experiment | ensemble | start year | end year | path | | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| EMAC | name | ensemble | start year | end year | path | | | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| GO | name | table | experiment | ensemble | start year | end year | path | | -| GO_gridfile | name | table | experiment | ensemble | start year | end year | path | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| MiKlip | name | table | experiment | ensemble | realm | start yea | end year | path | -| MiKlip_baseline0 | name | table | experiment | ensemble | realm | start yea | end year | path | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| OBS | name | case-name | ensemble | start year | end year | Path | | | -| OBS_gridfile | name | case-name | ensemble | start year | end year | path | gridfile | | -| | | (insitu, | | | | | | | -| | | sat, ground | | | | | | | -| | | reanaly) | | | | | | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ -| obs4mips | Name | process level | ensemble | start year | end year | path | | | -+-------------------+------------+---------------+------------+------------+------------+------------+------------+------------+ - - -:numref:`tab_mod_tags` Optional attributes of the tag. - -.. raw:: latex - - \newline - -.. _tab_mod_tags: - -+-------+---------+------------------------------------------------------------------------------+ -| Name | Type | Description | -+=======+=========+==============================================================================+ -| id | String | Define a name used to refer to the model data in other parts of the namelist | -+-------+---------+------------------------------------------------------------------------------+ - - - -:numref:`tab_opt_att` Optional attributes of the tag. - -.. raw:: latex - - \newline - -.. tabularcolumns:: |l|l|p{12.75cm}| - -.. _tab_opt_att: - -+-----------+----------+---------------------------------------------------------------------------------------------+ -| Name | Type | Description | -+===========+==========+=============================================================================================+ -| exclude | String | Model (id) to exclude from processing | -+-----------+----------+---------------------------------------------------------------------------------------------+ -| EXP | String | Define a name used to the CMIP5 experiment, e.g., historical | -+-----------+----------+---------------------------------------------------------------------------------------------+ -| MIP | String | Define a name used to refer to the CMIP5 data stream, e.g., "Amon", "Omon", "day", "fx"; | -| | | to be used in combination with "MIP_VAR_DEF" replacing the CMIP5 stream in the definition | -| | | of a tag. | -+-----------+----------+---------------------------------------------------------------------------------------------+ -| ref_model | String | Define a reference model (model id) | -+-----------+----------+---------------------------------------------------------------------------------------------+ - - -.. _diag_tag: - -More on the -tag -============================= - -Each entry refers to one or several scripts in the folder *diag_scripts/* complemented by a variable name (see :numref:`tab_var_def` for a list of variables) and the corresponding (input) field type (see :numref:`tab_fld_typ`). Optionally the -tag may contain additional -tags; these data sets will be processed only by the diagnostic(s) listed in the current entry. In this way it is possible to define a set of models to be analyzed by all diagnostics in the namelist (in the section) and a set of models to be analyzed only by specific diagnostics (in the section). Available -tags are listed in :numref:`tab_diag_tags`, their optional attributes in :numref:`tab_diag_att`. - -:numref:`tab_diag_tags` Tags of the section within the section of the namelist. There are no default values. - -.. raw:: latex - - \newline - -.. tabularcolumns:: |l|l|p{11.5cm}| - -.. _tab_diag_tags: - -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| Name | Type | Description | -+======================+==========+=================================================================================================================+ -| description | string | 1-line description / title of the diagnostic | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| variable_def_dir | string | Path for the variable-specific configuration file (usually variable_defs) | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| variable | string | Variable name: a script with the same name (variable_defs/.ncl) defines the variable to process | -| | | see Table S8 for a list of variables) including possible preprocessing (e.g., calculating derived variables). | -| | | Variable scripts should be located in the local folder variable_defs and written in NCL. Even though the | -| | | variable scripts are written in NCL all meta data defined in the scripts are passed on to the target diagnostic | -| | | script regardless of the used language (via variable attributes). If multiple variables need to be passed on to | -| | | a diagnostic script, multiple -tags have to be defined. | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| field_type | string | Type of input field (see Table S7) that can be used by the diagnostic scripts. If multiple -tags are | -| | | defined a single (which is then applied to all) or an equal number of -tags has to be defined. | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| diag_script_cfg_dir | string | Path for diagnostic script configuration file | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| diag_script | string | Name of diagnostic script; the script can be written in any language currently supported by ESMValTool (NCL, R | -| | | and Python) and has to be located in the local folder diag_scripts. The settings defined in the diagnostic | -| | | script configuration file defined by the diag_script cfg attribute is loaded at the beginning of the diagnostic | -| | | script. | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ -| model (optional) | string | Additional data sets specific for this -section. Data sets defined here will be processed in addition to | -| | | the ones defined in the MODELS section (see above) but will be ignored by other -sections. | -+----------------------+----------+-----------------------------------------------------------------------------------------------------------------+ - - -:numref:`tab_diag_att` Optional attributes of selected tags in the section. - -.. raw:: latex - - \newline - -.. tabularcolumns:: |l|l|l|p{10cm}| - -.. _tab_diag_att: - -+------------+----------+---------------+--------------------------------------------------------------------------------------------------+ -| Name | Type | Parent tag | Description | -+============+==========+===============+==================================================================================================+ -| ref_model | string | | Defines this data set as the reference data set within the diagnostic. The string ref_model | -| | | | refers to either the model name, as specified in Table S2, or the model attribute id as specified| -| | | | in Table S3. Note that because both model and observational data sets are specified via the | -| | | | -tag any of them can be used as a reference data set. | -+------------+----------+---------------+--------------------------------------------------------------------------------------------------+ -| exclude | string | | When using more than one variable corresponding to different observational data sets (e.g., | -| | | | precipitation and skin temperature), it is necessary to use this attribute to match which | -| | | | variable goes with which data set, e.g., pr with TRMM and ts with HadISST using, | -| | | | | -| | | | pr ... | -| | | | ts ... | -+------------+----------+---------------+--------------------------------------------------------------------------------------------------+ -| cfg | string | | Configuration file for the diagnostic script | -+------------+----------+---------------+--------------------------------------------------------------------------------------------------+ - -:numref:`tab_fld_typ` Field types. - -.. raw:: latex - - \newline - -.. _tab_fld_typ: - -+-------+---------------------------------------------------------------------------------------------------------------+ -| Name | Description | -+=======+===============================================================================================================+ -| T2Ms | Monthly-mean 2d atmosphere or land surface data (longitude, latitude, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T3M | Monthly-mean 3d atmosphere data (longitude, latitude, pressure, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T2Mz | Monthly-mean zonal mean 2d atmosphere or land surface data (longitude, pressure, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T1Ms | Monthly-mean 1d atmosphere or land surface data on a certain pressure level (latitude, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T2Ds | Daily-mean 2d atmosphere data (longitude, latitude, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T3D | Daily-mean 3d atmosphere data (longitude, latitude, pressure, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T2Dz | Daily-mean zonal mean 2d atmosphere data (latitude, pressure, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T2Is | Daily instantaneous 2d atmosphere data for all years (longitude, latitude, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T3I | Daily-instantaneous 3d atmosphere data for selected years (longitude, latitude, model level, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T2Iz | Daily instantaneous zonal mean 2d atmosphere data for all years (latitude, pressure, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T1Iz | Daily instantaneous 1d field for all years (latitude-pressure, time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T0I | Daily instantaneous 0d field for all years (time:day) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| T0As | Annual-mean 0d atmosphere or land surface data on a certain pressure level (latitude, time:year) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| F2Ms | Constant 2d land surface data (latitude, longitude) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| TO2Ms | Monthly-mean 2d ocean or sea ice data (longitude, latitude, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ -| TO3M | Monthly-mean 3d ocean or sea ice data (longitude, latitude, model level, time:month) | -+-------+---------------------------------------------------------------------------------------------------------------+ - - - - -:numref:`tab_var_def` Variable definition scripts. - -.. raw:: latex - - \newline - -.. _tab_var_def: - -+--------------------------+-----------------------------------------------------------------------------------+ -| Script name | Description | -+==========================+===================================================================================+ -| abs550aer.ncl | Absorption optical depth (550 nm) | -+--------------------------+-----------------------------------------------------------------------------------+ -| albisccp.ncl | ISCCP-like cloud albedo | -+--------------------------+-----------------------------------------------------------------------------------+ -| baresoilFrac.ncl | Fraction of bare soil (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| chl.ncl | Chlorophyll mass concentration at the surface (ocean) | -+--------------------------+-----------------------------------------------------------------------------------+ -| clivi.ncl | Vertically integrated cloud ice | -+--------------------------+-----------------------------------------------------------------------------------+ -| cl.ncl | Cloud area fraction (3d) | -+--------------------------+-----------------------------------------------------------------------------------+ -| clt.ncl | Total cloud fraction | -+--------------------------+-----------------------------------------------------------------------------------+ -| cltisccp.ncl | ISCCP-like total cloud fraction | -+--------------------------+-----------------------------------------------------------------------------------+ -| cltStderr.ncl | Standard error of total cloud fraction (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| clwvi.ncl | Vertically integrated total cloud water (ice + liquid) | -+--------------------------+-----------------------------------------------------------------------------------+ -| co2flux.ncl | Sum of land and ocean carbon fluxes | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnd10.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnd5.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnmode.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnSTPd120.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnSTPd14.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnSTPd3.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnSTPd5.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| conccnSTPmode.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| cropFrac.ncl | Fraction of crop (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| cSoil.ncl | Carbon mass in soil pool | -+--------------------------+-----------------------------------------------------------------------------------+ -| cumnbp.ncl | Cumulated NBP | -+--------------------------+-----------------------------------------------------------------------------------+ -| cVeg.ncl | Carbon mass in vegetation | -+--------------------------+-----------------------------------------------------------------------------------+ -| diamcnmode.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| dos.ncl | Degree of saturation | -+--------------------------+-----------------------------------------------------------------------------------+ -| dosStderr.ncl | Degree of saturation standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| et.ncl | Evapotranspiration | -+--------------------------+-----------------------------------------------------------------------------------+ -| evspsbl.ncl | Evaporation | -+--------------------------+-----------------------------------------------------------------------------------+ -| fgco2.ncl | Surface downward CO2 flux (ocean) | -+--------------------------+-----------------------------------------------------------------------------------+ -| grassFrac.ncl | Fraction of grass (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| grassNcropFrac.ncl | Fraction of grass + crop (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| gpp.ncl | Carbon mass flux out of atmosphere due to gross primary production on land | -+--------------------------+-----------------------------------------------------------------------------------+ -| hfds.ncl | Downward heat flux at sea surface | -+--------------------------+-----------------------------------------------------------------------------------+ -| hfls.ncl | Surface upward latent heat flux (includes both evaporation and sublimation) | -+--------------------------+-----------------------------------------------------------------------------------+ -| hfss.ncl | Surface upward sensible heat flux | -+--------------------------+-----------------------------------------------------------------------------------+ -| hus.ncl | Specific humidity | -+--------------------------+-----------------------------------------------------------------------------------+ -| huss.ncl | Surface specific humidity | -+--------------------------+-----------------------------------------------------------------------------------+ -| intpp.ncl | Carbon cycle variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| ita.ncl | Depth weighted temperature (ocean, 730 m) | -+--------------------------+-----------------------------------------------------------------------------------+ -| iwpStderr.ncl | Ice water path standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| lai.ncl | Leaf area index | -+--------------------------+-----------------------------------------------------------------------------------+ -| LW_CRE.ncl | Longwave cloud radiative forcing | -+--------------------------+-----------------------------------------------------------------------------------+ -| lwp.ncl | Vertically integrated cloud water (liquid only) | -+--------------------------+-----------------------------------------------------------------------------------+ -| lwpStderr.ncl | Vertically integrated cloud water standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| mlotst.ncl | Ocean mixed layer thickness | -+--------------------------+-----------------------------------------------------------------------------------+ -| mmraer.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| mmrbcfree.ncl | EMAC aerosol variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| mmrbc.ncl | BC mass mixing ration | -+--------------------------+-----------------------------------------------------------------------------------+ -| mrro.ncl | Total runoff | -+--------------------------+-----------------------------------------------------------------------------------+ -| mrso.ncl | Soil moisture content | -+--------------------------+-----------------------------------------------------------------------------------+ -| msftmyz.ncl | Ocean meridional overturning mass streamfunction | -+--------------------------+-----------------------------------------------------------------------------------+ -| MyVar.ncl | Template | -+--------------------------+-----------------------------------------------------------------------------------+ -| nbp.ncl | Carbon mass flux out of atmosphere due to net biospheric production on land | -+--------------------------+-----------------------------------------------------------------------------------+ -| NET_CRE.ncl | Net cloud forcing | -+--------------------------+-----------------------------------------------------------------------------------+ -| o2.ncl | O2 (ocean) | -+--------------------------+-----------------------------------------------------------------------------------+ -| o2_onelev.ncl | O2 (ocean) on a single level | -+--------------------------+-----------------------------------------------------------------------------------+ -| od550aer.ncl | Aerosol optical depth (550 nm) | -+--------------------------+-----------------------------------------------------------------------------------+ -| od550aerStderr.ncl | Aerosol optical depth (550 nm) standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| od550lt1aer.ncl | Fine mode aerosol optical depth (550 nm) | -+--------------------------+-----------------------------------------------------------------------------------+ -| od870aer.ncl | Aerosol optical depth (870 nm) | -+--------------------------+-----------------------------------------------------------------------------------+ -| od870aerStderr.ncl | Aerosol optical depth (870 nm) standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| pastureFrac.ncl | Fraction pasture (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| pctisccp.ncl | ISCCP-like cloud top height | -+--------------------------+-----------------------------------------------------------------------------------+ -| prc-mmh.ncl | Convective precipitation in mm per hour | -+--------------------------+-----------------------------------------------------------------------------------+ -| pr-mmday.ncl | Precipitation (total) in mm per day | -+--------------------------+-----------------------------------------------------------------------------------+ -| pr-mmh.ncl | Precipitation (total) in mm per hour | -+--------------------------+-----------------------------------------------------------------------------------+ -| pr.ncl | Precipitation (total) | -+--------------------------+-----------------------------------------------------------------------------------+ -| prStderr.ncl | Precipitation (total) standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| prw.ncl | Water vapor path | -+--------------------------+-----------------------------------------------------------------------------------+ -| prwStderr.ncl | Water vapor path standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| psl.ncl | Surface pressure | -+--------------------------+-----------------------------------------------------------------------------------+ -| rldscs.ncl | Surface downwelling longwave flux (clear sky) | -+--------------------------+-----------------------------------------------------------------------------------+ -| rlds.ncl | Surface downwelling longwave flux (all sky) | -+--------------------------+-----------------------------------------------------------------------------------+ -| rlus.ncl | Surface upwelling longwave flux | -+--------------------------+-----------------------------------------------------------------------------------+ -| rlutcs.ncl | TOA outgoing clear-sky longwave radiation | -+--------------------------+-----------------------------------------------------------------------------------+ -| rlut.ncl | TOA outgoing all-sky longwave radiation | -+--------------------------+-----------------------------------------------------------------------------------+ -| rsdscs.ncl | Surface downwelling shortwave flux (clear_sky) | -+--------------------------+-----------------------------------------------------------------------------------+ -| rsds.ncl | Surface downwelling shortwave flux (all sky) | -+--------------------------+-----------------------------------------------------------------------------------+ -| rsutcs.ncl | TOA outgoing clear-sky shortwave radiation | -+--------------------------+-----------------------------------------------------------------------------------+ -| rsut.ncl | TOA outgoing all-sky shortwave radiation | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcbc.ncl | BC surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconccl.ncl | Cl- surface concentration (aerosol) | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcna.ncl | Na+ surface concentration (aerosol) | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcnh4.ncl | NH4 surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcno3.ncl | NO3 surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcoa.ncl | Organic aerosol (OA) surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcpm10.ncl | PM10 surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcpm2p5.ncl | PM2.5 surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sconcso4.ncl | SO4 surface concentration | -+--------------------------+-----------------------------------------------------------------------------------+ -| sfcWind.nc | Near-surface wind speed | -+--------------------------+-----------------------------------------------------------------------------------+ -| sftlf.ncl | Land fraction | -+--------------------------+-----------------------------------------------------------------------------------+ -| shrubFrac.ncl | Fraction shrub (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| shrubNtreeFrac.ncl | Fraction shrub and tree (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| sic.ncl | Sea ice area fraction | -+--------------------------+-----------------------------------------------------------------------------------+ -| sicStderr.ncl | Sea ice area fraction standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| sit.ncl | Sea ice thickness | -+--------------------------+-----------------------------------------------------------------------------------+ -| sm.ncl | Volumetric moisture content of soil layer | -+--------------------------+-----------------------------------------------------------------------------------+ -| smStderr.ncl | Volumetric moisture content of soil layer standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| snc.ncl | Fraction of grid cell covered by snow on land | -+--------------------------+-----------------------------------------------------------------------------------+ -| snd.ncl | Surface snow thickness | -+--------------------------+-----------------------------------------------------------------------------------+ -| snw.ncl | Mass of snow on land | -+--------------------------+-----------------------------------------------------------------------------------+ -| so.ncl | Sea water salinity | -+--------------------------+-----------------------------------------------------------------------------------+ -| sos.ncl | Sea surface salinity | -+--------------------------+-----------------------------------------------------------------------------------+ -| spco2.ncl | pCO2 (ocean) | -+--------------------------+-----------------------------------------------------------------------------------+ -| stratospheric_column.ncl | Stratospheric ozone column | -+--------------------------+-----------------------------------------------------------------------------------+ -| SW_CRE.ncl | Shortwave cloud radiative forcing | -+--------------------------+-----------------------------------------------------------------------------------+ -| talk.ncl | Total alkalinity (ocean) | -+--------------------------+-----------------------------------------------------------------------------------+ -| ta.ncl | Air temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| tas.ncl | Near-surface air temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| tas-degC.ncl | Near-surface air temperature in degrees Centigrade | -+--------------------------+-----------------------------------------------------------------------------------+ -| tauu.ncl | Surface eastward wind stress | -+--------------------------+-----------------------------------------------------------------------------------+ -| tauv.ncl | Surface northward wind stress | -+--------------------------+-----------------------------------------------------------------------------------+ -| tauw.ncl | Surface wind stress | -+--------------------------+-----------------------------------------------------------------------------------+ -| theta-850.ncl | Potential temperature at 850 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| theta.ncl | Potential temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| to.ncl | Sea water temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| tos.ncl | Sea surface temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| total_column.ncl | Total ozone column | -+--------------------------+-----------------------------------------------------------------------------------+ -| toz.ncl | Total ozone column (alternative name) | -+--------------------------+-----------------------------------------------------------------------------------+ -| tozStderr.ncl | Total ozone column standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| treeFrac.ncl | Fraction tree (land cover variable) | -+--------------------------+-----------------------------------------------------------------------------------+ -| tro3.ncl | Ozone volume mixing ratio | -+--------------------------+-----------------------------------------------------------------------------------+ -| tro3_NHext.ncl | Ozone volume mixing ratio restricted to northern hemisphere extra tropics | -+--------------------------+-----------------------------------------------------------------------------------+ -| tro3prof.ncl | Vertical profile of zonally averaged ozone mixing ratio | -+--------------------------+-----------------------------------------------------------------------------------+ -| tro3_SHext.ncl | Ozone volume mixing ratio restricted to southern hemisphere extra tropics | -+--------------------------+-----------------------------------------------------------------------------------+ -| tro3_Trop.ncl | Ozone volume mixing ratio restricted to tropics | -+--------------------------+-----------------------------------------------------------------------------------+ -| tropospheric_column.ncl | Tropospheric ozone column | -+--------------------------+-----------------------------------------------------------------------------------+ -| tropoz.ncl | Tropospheric ozone column (alternative name) | -+--------------------------+-----------------------------------------------------------------------------------+ -| ts.ncl | Skin temperature | -+--------------------------+-----------------------------------------------------------------------------------+ -| tsStderr.ncl | Skin temperature standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-1000.ncl | Wind u-component at 1000 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-200-850.ncl | Wind u-component at 200 hPa and at 850 hPa (monsoon diagnostics) | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-200.ncl | Wind u-component at 200 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-700.ncl | Wind u-component at 700 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-850.ncl | Wind u-component at 850 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua-925.ncl | Wind u-component at 925 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| ua.ncl | Wind u-component | -+--------------------------+-----------------------------------------------------------------------------------+ -| uo.ncl | Sea water x velocity | -+--------------------------+-----------------------------------------------------------------------------------+ -| va-200-850.ncl | Wind v-component at 200 hPa and at 850 hPa (monsoon diagnostics) | -+--------------------------+-----------------------------------------------------------------------------------+ -| va-200.ncl | Wind v-component at 200 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| va-700.ncl | Wind v-component at 700 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| va-850.ncl | Wind v-component at 850 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| va-925.ncl | Wind v-component at 925 hPa | -+--------------------------+-----------------------------------------------------------------------------------+ -| va.ncl | Wind v-component | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrc2h4.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrc2h6.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrc3h6.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrc3h8.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrch3coch3.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_alt.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_azr.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_chr.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_eic.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_gmi.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_hpb.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_lef.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_mlo.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco.ncl | CO volume mixing ratio | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrco_nwr.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrh2o.ncl | EMAC chemistry variable | -+--------------------------+-----------------------------------------------------------------------------------+ -| vmrnox.ncl | NOx volume mixing ratio | -+--------------------------+-----------------------------------------------------------------------------------+ -| vo.ncl | Sea water y velocity | -+--------------------------+-----------------------------------------------------------------------------------+ -| wfpe-mmday.ncl | Water flux from precipitation and evaporation in mm day-1 | -+--------------------------+-----------------------------------------------------------------------------------+ -| wfpe.ncl | Water flux from precipitation and evaporation | -+--------------------------+-----------------------------------------------------------------------------------+ -| xco2.ncl | Column averaged CO2 mixing ratio | -+--------------------------+-----------------------------------------------------------------------------------+ -| xco2Stderr.ncl | Column averaged CO2 mixing ratio standard error (observations) | -+--------------------------+-----------------------------------------------------------------------------------+ -| zg.ncl | Geopotential height | -+--------------------------+-----------------------------------------------------------------------------------+ - -**Naming convention for ESMValTool namelists:** - -Typically, all namelists are stored in the folder *nml*, the naming convention is *namelist_xxx.xml* with "xxx" being the name of the diagnostic and/or a description of the purpose of the namelist:: - -1. **For papers:** - - xxx = SurnameYearJournalabbreviation (e.g., stocker12jgr, stocker12sci1, stocker12sci2). - -2. **For copies of reports that are not publicly available:** - - xxx = OrgYearTitleabbrev (e.g., unep10water, unep11gap, roysoc09geoengineering). - -3. **For grouped sets of diagnostics and performance metrics that do not follow a published paper or report:** - - xxx = an intuitive name describing the scientific topic (e.g., aerosol, MyDiag, SAMonsoon, SeaIce) - -.. _nml_config: - -Namelist configuration file -=========================== - -The user can define base path names in a namelist configuration file and refer to them in the actual namelist file. The configuration file such as, for instance, config_private.xml has the following structure: - -.. code-block:: xml - - - - - - ./work/ - working directory - - - ./work/plots/ - directory for output plots - - - ./work/climo/ - directory for output files - - - /path/to/model/data/ - root directory of model data - - - /path/to/data/OBS/ - root directory of observational data - - - /path/to/data/AUX/ - root directory of auxiliary data - /usrpath> - - - -Inside the namelist file the configuration file can be included in the following way: - -.. code-block:: xml - - - -and referred to with the syntax: - -.. code-block:: xml - - @{id-of-the-usrpath} - -Note: alternatively, explicitely defined pathnames can be used at any time. - - -.. _header: - -Standard header for the namelist -================================ - -For the sake of documentation, standard headers are defined and applied to all namelists and scripts in the ESMValTool. This is a template of the standard header for the main namelist. The parts in red are the ones to be modified by the author. - -.. code-block:: xml - - - ############################################################################### - namelist_name.xml - - Description - A one-sentence description of the namelist content and purpose. - - Author(s) - Name Surname (Affiliation, Country - e-mail@address) - - Contributor(s) - Name Surname (Affiliation, Country - e-mail@address) - - Project(s) - PROJECT-NAME - - Reference(s) - Reference to the paper(s) considered by this namelist (if available). - Author, N. et al., Journ. Abbrev., NN, P1-P2, doi: (YEAR) - - This namelist is part of the ESMValTool. - ############################################################################### - - - -.. _ex_nml: - -Example namelist -================ - -.. code-block:: xml - - - - - ############################################################################### - # namelist_clouds.xml - # - # Description - # Diagnostics of clouds and hydrological cycle. - # - # Author(s) - # Axel Lauer (DLR, Germany - axel.lauer at dlr.de) - # - # Contributor(s) - # - # Project(s) - # EMBRACE - # - # Reference(s) - # - # This namelist is part of the ESMValTool. - ############################################################################### - - - - True - True - False - work/ - work/plots/ - work/climo/ - 100 - 1 - False - ps - - - - CMIP5_ETHZ CESM1-CAM5 Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/ - CMIP5_ETHZ GFDL-ESM2G Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/ - CMIP5_ETHZ MIROC5 Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/ - CMIP5_ETHZ MPI-ESM-MR Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/ - CMIP5_ETHZ NorESM1-M Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/ - - - - - - - - - Cloud diagnostics - ./variable_defs/ - lwp - T2Ms - ./nml/cfg_clouds/ - OBS UWisc sat v2 1988 2007 @{OBSPATH}/UWisc - clouds.ncl - - - - diff --git a/doc/sphinx/source/namelists/figures/MJO/README b/doc/sphinx/source/namelists/figures/MJO/README deleted file mode 100644 index daad7a3400..0000000000 --- a/doc/sphinx/source/namelists/figures/MJO/README +++ /dev/null @@ -1 +0,0 @@ -MJO figure directory diff --git a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_1.png b/doc/sphinx/source/namelists/figures/MJO/fig_mjo_1.png deleted file mode 100644 index 2a8bab8891..0000000000 Binary files a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_2.png b/doc/sphinx/source/namelists/figures/MJO/fig_mjo_2.png deleted file mode 100644 index 4c6be89299..0000000000 Binary files a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_3.png b/doc/sphinx/source/namelists/figures/MJO/fig_mjo_3.png deleted file mode 100644 index 7950f0a67d..0000000000 Binary files a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_4.png b/doc/sphinx/source/namelists/figures/MJO/fig_mjo_4.png deleted file mode 100644 index 6f163d483a..0000000000 Binary files a/doc/sphinx/source/namelists/figures/MJO/fig_mjo_4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/README b/doc/sphinx/source/namelists/figures/aerosol/README deleted file mode 100644 index 0c74435a0c..0000000000 --- a/doc/sphinx/source/namelists/figures/aerosol/README +++ /dev/null @@ -1,2 +0,0 @@ -put figrues for aerosol diagnostiuc in this directory - diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_plevel.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_plevel.png deleted file mode 100644 index 0245abe286..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_plevel.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_scatter.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_scatter.png deleted file mode 100644 index 43da48b7e1..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_scatter.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_size.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_size.png deleted file mode 100644 index 8e39e6a586..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_size.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial.png deleted file mode 100644 index db679ad904..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global.png deleted file mode 100644 index c9d839fba2..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global_diff.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global_diff.png deleted file mode 100644 index 49d54a9ae7..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global_diff.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_ts.png b/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_ts.png deleted file mode 100644 index 48c2a7c61f..0000000000 Binary files a/doc/sphinx/source/namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_ts.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/autoassess_rad/fig-1.png b/doc/sphinx/source/namelists/figures/autoassess_rad/fig-1.png deleted file mode 100644 index e58fb8e9a7..0000000000 Binary files a/doc/sphinx/source/namelists/figures/autoassess_rad/fig-1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_constraints/README b/doc/sphinx/source/namelists/figures/carbon_constraints/README deleted file mode 100644 index 421376db9e..0000000000 --- a/doc/sphinx/source/namelists/figures/carbon_constraints/README +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/doc/sphinx/source/namelists/figures/carbon_constraints/fig1.png b/doc/sphinx/source/namelists/figures/carbon_constraints/fig1.png deleted file mode 100644 index e05309d820..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_constraints/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_constraints/fig2.png b/doc/sphinx/source/namelists/figures/carbon_constraints/fig2.png deleted file mode 100644 index 93752c5145..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_constraints/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_constraints/fig3.png b/doc/sphinx/source/namelists/figures/carbon_constraints/fig3.png deleted file mode 100644 index 477b452aca..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_constraints/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_constraints/fig4.png b/doc/sphinx/source/namelists/figures/carbon_constraints/fig4.png deleted file mode 100644 index 00d0cc2018..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_constraints/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/README b/doc/sphinx/source/namelists/figures/carbon_cycle/README deleted file mode 100644 index 7a542842f0..0000000000 --- a/doc/sphinx/source/namelists/figures/carbon_cycle/README +++ /dev/null @@ -1 +0,0 @@ -Carbon Cycle Plots diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_1.png b/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_1.png deleted file mode 100644 index 56c19dc837..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_2.png b/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_2.png deleted file mode 100644 index dd184d7ad1..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_3.png b/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_3.png deleted file mode 100644 index 6d76cd3df5..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_4.png b/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_4.png deleted file mode 100644 index 816c63d2e6..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_5.png b/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_5.png deleted file mode 100644 index df319fd97a..0000000000 Binary files a/doc/sphinx/source/namelists/figures/carbon_cycle/fig_carbon_cycle_5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/catchment/README b/doc/sphinx/source/namelists/figures/catchment/README deleted file mode 100644 index 7d5381dc77..0000000000 --- a/doc/sphinx/source/namelists/figures/catchment/README +++ /dev/null @@ -1 +0,0 @@ -Plots for catchment namelist in this folder diff --git a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_1.png b/doc/sphinx/source/namelists/figures/catchment/fig_catchment_1.png deleted file mode 100644 index 24b376dafa..0000000000 Binary files a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_2.png b/doc/sphinx/source/namelists/figures/catchment/fig_catchment_2.png deleted file mode 100644 index 427c0c601e..0000000000 Binary files a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_3.png b/doc/sphinx/source/namelists/figures/catchment/fig_catchment_3.png deleted file mode 100644 index e3fa25baac..0000000000 Binary files a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_4.png b/doc/sphinx/source/namelists/figures/catchment/fig_catchment_4.png deleted file mode 100644 index e8d93cfbea..0000000000 Binary files a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_5.png b/doc/sphinx/source/namelists/figures/catchment/fig_catchment_5.png deleted file mode 100644 index 208a453888..0000000000 Binary files a/doc/sphinx/source/namelists/figures/catchment/fig_catchment_5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_lweffect.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_lweffect.png deleted file mode 100644 index 74bb43dab2..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_lweffect.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_neteffect.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_neteffect.png deleted file mode 100644 index 79f4696245..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_neteffect.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_sweffect.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_sweffect.png deleted file mode 100644 index 52b00c8c45..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_sweffect.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_var_multi.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_var_multi.png deleted file mode 100644 index 54a85593ae..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_cloud_var_multi.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_path_multi.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_path_multi.png deleted file mode 100644 index 57052e850d..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_path_multi.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_taylor.png b/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_taylor.png deleted file mode 100644 index 7e1e27ab1b..0000000000 Binary files a/doc/sphinx/source/namelists/figures/clouds/figure_namelist_clouds_liq_h2o_taylor.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/crem/README b/doc/sphinx/source/namelists/figures/crem/README deleted file mode 100644 index 6254c096ec..0000000000 --- a/doc/sphinx/source/namelists/figures/crem/README +++ /dev/null @@ -1 +0,0 @@ -Dummy file diff --git a/doc/sphinx/source/namelists/figures/crem/crem_error_metric.png b/doc/sphinx/source/namelists/figures/crem/crem_error_metric.png deleted file mode 100644 index 98bfb8e6b2..0000000000 Binary files a/doc/sphinx/source/namelists/figures/crem/crem_error_metric.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_AMO-Monthly.png b/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_AMO-Monthly.png deleted file mode 100755 index 04cd51550e..0000000000 Binary files a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_AMO-Monthly.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_EOF-SST-NorthPacific.png b/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_EOF-SST-NorthPacific.png deleted file mode 100755 index 1813b895c8..0000000000 Binary files a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_EOF-SST-NorthPacific.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_LaNina-Composite.png b/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_LaNina-Composite.png deleted file mode 100755 index 2ad5af5ce2..0000000000 Binary files a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_LaNina-Composite.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_Nino34-Index.png b/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_Nino34-Index.png deleted file mode 100755 index 63eeaa7683..0000000000 Binary files a/doc/sphinx/source/namelists/figures/cvdp/figure_namelists_cvdp_Nino34-Index.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/diurnal/README b/doc/sphinx/source/namelists/figures/diurnal/README deleted file mode 100644 index 6254c096ec..0000000000 --- a/doc/sphinx/source/namelists/figures/diurnal/README +++ /dev/null @@ -1 +0,0 @@ -Dummy file diff --git a/doc/sphinx/source/namelists/figures/diurnal/fig1.png b/doc/sphinx/source/namelists/figures/diurnal/fig1.png deleted file mode 100644 index 59a20e8c92..0000000000 Binary files a/doc/sphinx/source/namelists/figures/diurnal/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/diurnal/fig2.png b/doc/sphinx/source/namelists/figures/diurnal/fig2.png deleted file mode 100644 index 40c75de669..0000000000 Binary files a/doc/sphinx/source/namelists/figures/diurnal/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/diurnal/fig3.png b/doc/sphinx/source/namelists/figures/diurnal/fig3.png deleted file mode 100644 index 5ef89c4963..0000000000 Binary files a/doc/sphinx/source/namelists/figures/diurnal/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/diurnal/fig4.png b/doc/sphinx/source/namelists/figures/diurnal/fig4.png deleted file mode 100644 index 91ffd9e2ad..0000000000 Binary files a/doc/sphinx/source/namelists/figures/diurnal/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/diurnal/fig5.png b/doc/sphinx/source/namelists/figures/diurnal/fig5.png deleted file mode 100644 index 0edc489b0e..0000000000 Binary files a/doc/sphinx/source/namelists/figures/diurnal/fig5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig01.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig01.png deleted file mode 100644 index 04c6e438be..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig01.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig02.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig02.png deleted file mode 100644 index 22a13e6455..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig02.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig03.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig03.png deleted file mode 100644 index 9991fe47bc..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig03.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig04.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig04.png deleted file mode 100644 index d68bf73137..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig04.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig05.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig05.png deleted file mode 100644 index 1f1b6ce397..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig05.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig06.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig06.png deleted file mode 100644 index 70feedc4a2..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig06.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig07.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig07.png deleted file mode 100644 index 6324063764..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig07.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig08.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig08.png deleted file mode 100644 index 6105f0a6db..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig08.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig09.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig09.png deleted file mode 100644 index cccc76c040..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig09.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig10.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig10.png deleted file mode 100644 index ff3fa24f23..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig10.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig11.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig11.png deleted file mode 100644 index ca7a7cc1cf..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig11.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig12.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig12.png deleted file mode 100644 index 2ac500e995..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig12.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig14.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig14.png deleted file mode 100644 index de396b2ab5..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig14.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig15.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig15.png deleted file mode 100644 index 3b55a087ac..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig15.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig16.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig16.png deleted file mode 100644 index a46780fed3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig16.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig17.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig17.png deleted file mode 100644 index 5dfad65015..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig17.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig18.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig18.png deleted file mode 100644 index 7fb91a3cdf..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig18.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig19.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig19.png deleted file mode 100644 index 9a6113347f..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig19.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig20.png b/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig20.png deleted file mode 100644 index fcfdcbaa93..0000000000 Binary files a/doc/sphinx/source/namelists/figures/esacci/Lauer17_fig20.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/evapotranspiration/README b/doc/sphinx/source/namelists/figures/evapotranspiration/README deleted file mode 100644 index 1606ad2673..0000000000 --- a/doc/sphinx/source/namelists/figures/evapotranspiration/README +++ /dev/null @@ -1 +0,0 @@ -Adding figures for evapotranspiration diff --git a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_1.png b/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_1.png deleted file mode 100644 index 9b2ffc7109..0000000000 Binary files a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_2.png b/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_2.png deleted file mode 100644 index 759fe0ef95..0000000000 Binary files a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_3.png b/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_3.png deleted file mode 100644 index 2e0d873ce3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/evapotranspiration/fig_evapo_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-2.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-2.png deleted file mode 100644 index 51ab5b4b99..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-3.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-3.png deleted file mode 100644 index 314d6ed583..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-30.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-30.png deleted file mode 100644 index c508d78e10..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-30.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-31.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-31.png deleted file mode 100644 index e25a67b69b..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-31.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-35.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-35.png deleted file mode 100644 index aef85352d7..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-35.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-36.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-36.png deleted file mode 100644 index 8957f2b130..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-36.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-4.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-4.png deleted file mode 100644 index e8bc5a87a9..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-8.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-8.png deleted file mode 100644 index 1f8af11d7f..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig-9-8.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig10_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig10_ipccar5_ch9.png deleted file mode 100644 index 12e44cd17b..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig10_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig11_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig11_ipccar5_ch9.png deleted file mode 100644 index 747e43957c..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig11_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig3_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig3_ipccar5_ch9.png deleted file mode 100644 index 78426ed936..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig3_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig4_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig4_ipccar5_ch9.png deleted file mode 100644 index e05bfbbcde..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig4_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig5_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig5_ipccar5_ch9.png deleted file mode 100644 index dbb701479c..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig5_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig6_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig6_ipccar5_ch9.png deleted file mode 100644 index 33790438e5..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig6_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig7_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig7_ipccar5_ch9.png deleted file mode 100644 index 1c8f710816..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig7_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig8_ipccar5_ch9.png b/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig8_ipccar5_ch9.png deleted file mode 100644 index e949842793..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ipccar5_ch9/fig8_ipccar5_ch9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_1.png b/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_1.png deleted file mode 100644 index d225f3b521..0000000000 Binary files a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2a.png b/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2a.png deleted file mode 100644 index 145ec6d610..0000000000 Binary files a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2a.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2b.png b/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2b.png deleted file mode 100644 index 25c3627b99..0000000000 Binary files a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_2b.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_3.png b/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_3.png deleted file mode 100644 index 52f08866c5..0000000000 Binary files a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_4.png b/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_4.png deleted file mode 100644 index a4f6c5fba1..0000000000 Binary files a/doc/sphinx/source/namelists/figures/marine_bgc/marine_bgc_fig_4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/README b/doc/sphinx/source/namelists/figures/ozone_climate/README deleted file mode 100644 index b80a89a4ec..0000000000 --- a/doc/sphinx/source/namelists/figures/ozone_climate/README +++ /dev/null @@ -1 +0,0 @@ -nml ozone climate figures diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/eyring13jgr_fig06.png b/doc/sphinx/source/namelists/figures/ozone_climate/eyring13jgr_fig06.png deleted file mode 100644 index 7012fe7b1a..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/eyring13jgr_fig06.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_1.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_1.png deleted file mode 100644 index 16dd1524dd..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_2.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_2.png deleted file mode 100644 index bcaa1600f6..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_3.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_3.png deleted file mode 100644 index 5195043653..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_4.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_4.png deleted file mode 100644 index db1d39c15a..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_5.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_5.png deleted file mode 100644 index 488a70b5f6..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_6.png b/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_6.png deleted file mode 100644 index c286096437..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_climate/fig_ozone_climate_6.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_TS.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_TS.png deleted file mode 100644 index 2aee2cdb9e..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_TS.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_plevel.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_plevel.png deleted file mode 100644 index 592e117b9b..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_plevel.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz.png deleted file mode 100644 index 02704e45bf..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_hovmoeller.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_hovmoeller.png deleted file mode 100644 index 5659546d95..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_hovmoeller.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref.png deleted file mode 100644 index 1f081b4405..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref_hovmoeller.png b/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref_hovmoeller.png deleted file mode 100644 index 2c97003229..0000000000 Binary files a/doc/sphinx/source/namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref_hovmoeller.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/precip_sm/precip_sm_fig1.png b/doc/sphinx/source/namelists/figures/precip_sm/precip_sm_fig1.png deleted file mode 100644 index 492e084771..0000000000 Binary files a/doc/sphinx/source/namelists/figures/precip_sm/precip_sm_fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_anncyc-Antarctic.png b/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_anncyc-Antarctic.png deleted file mode 100755 index ec74b1012b..0000000000 Binary files a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_anncyc-Antarctic.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-Arctic.png b/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-Arctic.png deleted file mode 100755 index 40dd0aaa3c..0000000000 Binary files a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-Arctic.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-diff-Antarctic.png b/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-diff-Antarctic.png deleted file mode 100755 index 9df6389d17..0000000000 Binary files a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_polcon-diff-Antarctic.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_tsline-Arctic.png b/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_tsline-Arctic.png deleted file mode 100755 index 0ea9a9b015..0000000000 Binary files a/doc/sphinx/source/namelists/figures/seaice/figure_namelist_seaice_tsline-Arctic.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/README b/doc/sphinx/source/namelists/figures/south_asian_monsoon/README deleted file mode 100644 index 421376db9e..0000000000 --- a/doc/sphinx/source/namelists/figures/south_asian_monsoon/README +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig1.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig1.png deleted file mode 100644 index 6d176b1267..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig10.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig10.png deleted file mode 100644 index b68494c470..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig10.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig11.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig11.png deleted file mode 100644 index 8dc70dc0c3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig11.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig2.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig2.png deleted file mode 100644 index 7727c245ba..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig3.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig3.png deleted file mode 100644 index b84dd67882..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig4.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig4.png deleted file mode 100644 index 527f504f33..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig5.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig5.png deleted file mode 100644 index 76af027e7c..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig6.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig6.png deleted file mode 100644 index 6c9be451ef..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig6.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig7.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig7.png deleted file mode 100644 index cada1f7ce6..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig7.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig8.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig8.png deleted file mode 100644 index 7000e89988..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig8.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig9.png b/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig9.png deleted file mode 100644 index 718657be44..0000000000 Binary files a/doc/sphinx/source/namelists/figures/south_asian_monsoon/fig9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/README b/doc/sphinx/source/namelists/figures/southern_hemisphere/README deleted file mode 100644 index 421376db9e..0000000000 --- a/doc/sphinx/source/namelists/figures/southern_hemisphere/README +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig1.png b/doc/sphinx/source/namelists/figures/southern_hemisphere/fig1.png deleted file mode 100644 index d49e7ccda7..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig2.png b/doc/sphinx/source/namelists/figures/southern_hemisphere/fig2.png deleted file mode 100644 index f142469e3d..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig3.png b/doc/sphinx/source/namelists/figures/southern_hemisphere/fig3.png deleted file mode 100644 index 5964c3c157..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig4.png b/doc/sphinx/source/namelists/figures/southern_hemisphere/fig4.png deleted file mode 100644 index 64fa3b2444..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig5.png b/doc/sphinx/source/namelists/figures/southern_hemisphere/fig5.png deleted file mode 100644 index a9deb6aadf..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_hemisphere/fig5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/README b/doc/sphinx/source/namelists/figures/southern_ocean/README deleted file mode 100644 index 5c3118dc95..0000000000 --- a/doc/sphinx/source/namelists/figures/southern_ocean/README +++ /dev/null @@ -1 +0,0 @@ -dummy file diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig1.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig1.png deleted file mode 100644 index af82c667ff..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig2.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig2.png deleted file mode 100644 index 778cad9123..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig3.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig3.png deleted file mode 100644 index 3ba3ba0727..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig4.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig4.png deleted file mode 100644 index 1b55238fcc..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig5.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig5.png deleted file mode 100644 index 96170f44e3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig6.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig6.png deleted file mode 100644 index 69f1c27511..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig6.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/southern_ocean/fig7.png b/doc/sphinx/source/namelists/figures/southern_ocean/fig7.png deleted file mode 100644 index 4d67b33bf9..0000000000 Binary files a/doc/sphinx/source/namelists/figures/southern_ocean/fig7.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/spi/README b/doc/sphinx/source/namelists/figures/spi/README deleted file mode 100644 index 421376db9e..0000000000 --- a/doc/sphinx/source/namelists/figures/spi/README +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/doc/sphinx/source/namelists/figures/spi/fig1.png b/doc/sphinx/source/namelists/figures/spi/fig1.png deleted file mode 100644 index 88f27337bd..0000000000 Binary files a/doc/sphinx/source/namelists/figures/spi/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/tropical_variability/README b/doc/sphinx/source/namelists/figures/tropical_variability/README deleted file mode 100644 index 5c3118dc95..0000000000 --- a/doc/sphinx/source/namelists/figures/tropical_variability/README +++ /dev/null @@ -1 +0,0 @@ -dummy file diff --git a/doc/sphinx/source/namelists/figures/tropical_variability/fig1.png b/doc/sphinx/source/namelists/figures/tropical_variability/fig1.png deleted file mode 100644 index c143332ec8..0000000000 Binary files a/doc/sphinx/source/namelists/figures/tropical_variability/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/tropical_variability/fig2.png b/doc/sphinx/source/namelists/figures/tropical_variability/fig2.png deleted file mode 100644 index 42027016ad..0000000000 Binary files a/doc/sphinx/source/namelists/figures/tropical_variability/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/tropical_variability/fig3.png b/doc/sphinx/source/namelists/figures/tropical_variability/fig3.png deleted file mode 100644 index 647f02d43d..0000000000 Binary files a/doc/sphinx/source/namelists/figures/tropical_variability/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/README b/doc/sphinx/source/namelists/figures/wam/README deleted file mode 100644 index 421376db9e..0000000000 --- a/doc/sphinx/source/namelists/figures/wam/README +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/doc/sphinx/source/namelists/figures/wam/fig1.png b/doc/sphinx/source/namelists/figures/wam/fig1.png deleted file mode 100644 index cee4a8d9fe..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig1.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig10.png b/doc/sphinx/source/namelists/figures/wam/fig10.png deleted file mode 100644 index b51e5e5c03..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig10.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig2.png b/doc/sphinx/source/namelists/figures/wam/fig2.png deleted file mode 100644 index 4f502e9eab..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig2.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig3.png b/doc/sphinx/source/namelists/figures/wam/fig3.png deleted file mode 100644 index 00a52a71a1..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig3.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig4.png b/doc/sphinx/source/namelists/figures/wam/fig4.png deleted file mode 100644 index 25b761f640..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig4.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig5.png b/doc/sphinx/source/namelists/figures/wam/fig5.png deleted file mode 100644 index 2794b673b3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig5.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig6.png b/doc/sphinx/source/namelists/figures/wam/fig6.png deleted file mode 100644 index 4269964816..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig6.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig7.png b/doc/sphinx/source/namelists/figures/wam/fig7.png deleted file mode 100644 index 13c2e60da7..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig7.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig8.png b/doc/sphinx/source/namelists/figures/wam/fig8.png deleted file mode 100644 index 858fbda0b3..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig8.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/figures/wam/fig9.png b/doc/sphinx/source/namelists/figures/wam/fig9.png deleted file mode 100644 index 48397220cc..0000000000 Binary files a/doc/sphinx/source/namelists/figures/wam/fig9.png and /dev/null differ diff --git a/doc/sphinx/source/namelists/namelist_MJO.rst b/doc/sphinx/source/namelists/namelist_MJO.rst deleted file mode 100644 index 51efee0ea7..0000000000 --- a/doc/sphinx/source/namelists/namelist_MJO.rst +++ /dev/null @@ -1,131 +0,0 @@ -Madden-Julian Oscillation (MJO) -=============================== - -Overview --------- - -To assess the main MJO features in ESMs, a namelist with a number of -diagnostics developed by the US CLIVAR MJO Working Group (Kim et al., -2009; Waliser et al., 2009) has been implemented in the ESMValTool. -These diagnostics are calculated using precipitation (pr), outgoing -longwave radiation (OLR) (rlut), eastward (ua) and northward wind (va) -at 850 hPa (u850) and 200 hPa (u200) against various observations and -reanalysis data sets for boreal summer (May-October) and winter -(November-April). - -Observation and reanalysis data sets include GPCP-1DD for precipitation, -ERA-Interim and NCEP-DOE reanalysis 2 for wind components (Kanamitsu et -al., 2001) and NOAA polar-orbiting satellite data for OLR (Liebmann and -Smith, 1996). The majority of the scripts are based on example scripts -available at http://ncl.ucar.edu/Applications/mjoclivar.shtml. Daily data -is required for most of the scripts. The basic diagnostics include mean -seasonal state and 20-100 day bandpass filtered variance for precipitation -and u850 in summer and winter. To better assess and understand model biases -in the MJO, a number of more sophisticated diagnostics have also been -implemented. These include: univariate empirical orthogonal function (EOF) -analysis for 20-100 day bandpass filtered daily anomalies of precipitation, -OLR, u850 and u200. To illustrate the northward and eastward propagation of -the MJO, lag-longitude and lag-latitude diagrams show either the equatorially -(latitude) averaged (10°S-10ºN) or zonally (longitude) averaged (80°E-100°E) -intraseasonal precipitation anomalies and u850 anomalies correlated against -intraseasonal precipitation at an Indian Ocean reference point (75°E-100°E, -10°S-5°N). Similar figures can also be produced for other key variables and -regions following the definitions of Waliser et al. (2009). To further -explore the MJO intraseasonal variability, the wavenumber-frequency spectra -for each season is calculated for individual variables. In addition, we also -produce cross-spectral plots to quantify the coherence and phase relationships -between precipitation and u850. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_mjo_mean_state.xml -* namelist_mjo_daily.xml - -Diagnostics are stored in diag_scripts/ - -* mjo_univariate_eof.ncl -* mjo_wave_freq.ncl -* mjo_precip_u850-200_propagation.ncl -* mjo_precip_uwnd_variance.ncl -* mjo_olr_u850-200_cross_spectra.ncl -* mjo_olr_u850_200_ceof.ncl -* mjo_olr_uv850_ceof_life_cycle.ncl -* mjo_precip_u850_basic_month.ncl - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_mjo/ - - -Variables ---------- - -* pr (atmos, daily/monthly mean, longitude latitude time) -* rlut (atmos, daily mean, longitude latitude time) -* ua (atmos, daily/monthly mean, longitude latitude level time) -* va (atmos, daily mean, longitude latitude level time) - - -Observations and reformat scripts ---------------------------------- - -*Note:* (1) obs4mips data can be used directly without any preprocessing; -(2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* ERA-Interim (ua, monthly means) - - *Reformat script:* reformat_scripts/obs/ reformat_obs_ERA-Interim.ncl - -* GPCP-1DD (pr, daily means obs4mips) -* GPCP-SG (pr, monthly means obs4mips) -* NCEP (ua, va, daily means) - - *Reformat script:* reformat_scripts/obs/reformat_obs_NCEP-daily.ncl - -* NOAA-PSD-Interp (rlut, daily means) - - *Reformat script:* reformat_scripts/obs/reformat_obs_NOAA-PSD-Interp.ncl - - - -References ----------- - -* Kanamitsu, M., Kousky, V., van den Dool, H., Jenne, R., and Fiorino, M.: - The NCEP-NCAR 50-Year Reanalysis: Monthly Means CD-ROM and Documentation, - B. Am. Meteorol. Soc., 82, 247-267, 2001. -* Kim, D., Sperber, K., Stern, W., Waliser, D., Kang, I. S., Maloney, E., - Wang, W., Weickmann, K., Benedict, J., Khairoutdinov, M., Lee, M. I., - Neale, R., Suarez, M., Thayer-Calder, K., and Zhang, G.: Application of - MJO Simulation Diagnostics to Climate Models, J. Climate, 22, 6413-6436, 2009. -* Liebmann, B. and Smith, C. A.: Description of a complete (interpolated) - outgoing longwave radiation data set, B. Am. Meteorol. Soc., 77, 1275-1277, - 1996. -* Waliser, D., Sperber, K., Hendon, H., Kim, D., Wheeler, M., Weickmann, K., - Zhang, C., Donner, L., Gottschalck, J., Higgins, W., Kang, I. S., Legler, - D., Moncrieff, M., Vitart, F., Wang, B., Wang, W., Woolnough, S., Maloney, - E., Schubert, S., Stern, W., and Oscillation, C. M.-J.: MJO Simulation - Diagnostics, J. Climate, 22, 3006-3030, 2009. - - -Example plots -------------- - -.. figure:: /namelists/figures/MJO/fig_mjo_1.png - :width: 60 % - -.. figure:: /namelists/figures/MJO/fig_mjo_2.png - :width: 80 % - -.. figure:: /namelists/figures/MJO/fig_mjo_3.png - :width: 80 % - -.. figure:: /namelists/figures/MJO/fig_mjo_4.png - :width: 80 % - diff --git a/doc/sphinx/source/namelists/namelist_aerosol.rst b/doc/sphinx/source/namelists/namelist_aerosol.rst deleted file mode 100644 index 6e121e51b2..0000000000 --- a/doc/sphinx/source/namelists/namelist_aerosol.rst +++ /dev/null @@ -1,176 +0,0 @@ -Aerosol -======= - -Overview --------- - -The aerosol diagnostics currently implemented allow for three kinds of -comparisons: - -* *station data*: concentrations of various aerosol species (aerosol sulfate, aerosol nitrate, aerosol ammonium, black carbon, organic carbon, PM2.5 and PM10) are compared with observational data from station networks (IMPROVE and CASTNET for North America, EMEP for Europe and EANET for Asia). Aerosol optical depth (AOD) at 550 nm is compared with AERONET data. The comparison between model and observations is performed considering all available observational data in the selected time period, on a monthly-mean basis. The model data is extracted in the grid boxes where the respective observational stations are located (co-located model and observational data). This diagnostic produces three types of plot: time series (model/observations vs. time), scatter plot (model versus observations) and a map plot (model as contour map, observations as dots using the same color coding). - -* *satellite data*: AOD at 550 nm is compared with satellite data (MODIS and MISR). This diagnostic produces contour map plots of the AOD of model and observations, as well as difference plot between model and observations. - -* *vertical profiles, size distributions*: vertical profiles of aerosol (mass and number) concentrations and of aerosol size distributions are compared to observational data from aircraft campaigns and ground based stations. The model data are extracted based on the campaign/station location (lat-lon box) and time period (on a climatological basis, i.e. selecting the same days/months, but regardless of the year). The basic statistics is calculated on the selected model data (mean, standard deviation, median, 5-10-25-75-90-95 percentiles) and compared to the same quantities from the observations (where available). This diagnostics supports monthly-mean, daily-mean and instantaneous input data, with the latter two providing a more robust evaluation. For this diagnostic, rather specific variables are required (i.e., aerosol number concentration for particles with diameter larger than 14 nm) to match the properties of the instruments used during the campaign. New CMOR variables have been added and corresponding EMAC recipes have been defined. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_aerosol_CMIP5.xml -* namelist_aerosol_EMAC.xml - -Diagnostics are stored in diag_scripts/ - -* aerosol_stations.ncl -* aerosol_satellite.ncl -* aerosol_profiles.ncl - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_aerosol/CMIP5/ and nml/cfg_aerosol/EMAC/: - -**! NOTE ! The cfg files may contain hard coded pathnames (attribute "datapath", see below) for the observational data that have to be set by the user!** - -1. aerosol_stations.ncl (AERONET, CASTNET, EANET, EMEP, IMPROVE) - - * cfg_aerosol_stations_AERONET.ncl - * cfg_aerosol_stations_CASTNET.ncl - * cfg_aerosol_stations_EANET.ncl - * cfg_aerosol_stations_EMEP.ncl - * cfg_aerosol_stations_IMPROVE.ncl - * cfg_aerosol_tsline.ncl - -2. aerosol_satellites.ncl (ESACCI, MISR, MODIS) - - * satellite_ESACCI-AEROSOL.ncl - * cfg_aerosol_satellite_MISR.ncl - * cfg_aerosol_satellite_MODIS.ncl - - *Required diag_script_info attributes* - - * ref_model: name of reference data set (e.g., "ESACCI-AEROSOL") - * styleset: style ("DEFAULT") - * regrid_method: regridding method (coarsest, finest, ref) - * range_option: time range option (0: model own time range, 1: intersection between models) - -3. aerosol_profiles.ncl (ACCESS, ACCESS-2, Asmi11, CIRRUS, CONCERT, CR-AVE, DC3, HIPPO, IMPROVE, INCA, LACE, Putaud, SALTRACE, TC4, Texas, UCN-Pacific) - - * cfg_aerosol_profiles_ACCESS.ncl - * cfg_aerosol_profiles_ACCESS-2.ncl - * cfg_aerosol_profiles_Asmi11.ncl - * cfg_aerosol_profiles_CIRRUS.ncl - * cfg_aerosol_profiles_CONCERT.ncl - * cfg_aerosol_profiles_CR-AVE.ncl - * cfg_aerosol_profiles_DC3.ncl - * cfg_aerosol_profiles_HIPPO.ncl - * cfg_aerosol_stations_IMPROVE.ncl - * cfg_aerosol_profiles_INCA.ncl - * cfg_aerosol_profiles_LACE.ncl - * cfg_aerosol_profiles_Putaud.ncl - * cfg_aerosol_profiles_SALTRACE.ncl - * cfg_aerosol_profiles_TC4.ncl - * cfg_aerosol_profiles_Texas.ncl - * cfg_aerosol_profiles_UCN-Pacific.ncl - - *Required diag_script_info attributes* - - * campaign: name of measurement campaign (e.g., INCA, LACE, Texas) - * styleset: "DEFAULT" - * **datapath: path for campaign data** - * cc_threshold: cloud cover threshold (%) - * summary_plot: create a summary with the median of all flights on a single plot - * exclude_flights: exclude specific flights from the summary plot - -Variables ---------- - -**CMIP5** - -* sconcbc, sconcoa, sconcso4 -* od550aer, od550lt1aer, abs550aer, od870aer - -**EMAC** - -* conccnmode, conccnmodeSTP, diamcnmode, cl -* conccnd5, conccnd10, conccnSTPd3, conccnSTPd5, conccnSTPd14, conccnSTPd120 -* mmrbc, mmraer, mmrbcfree -* sconcso4, sconcno3, sconcnh4, sconcbc, sconcoa, sconcna, sconccl, sconcpm10, sconcpm2p5 -* od550aer - - -Observations and reformat scripts ---------------------------------- - -*Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.* - -* AERONET (reformat_scripts/obs/reformat_obs_AERONET.ncl) -* CASTNET (reformat_scripts/obs/reformat_obs_CASTNET.ncl) -* EANET (reformat_scripts/obs/reformat_obs_EANET.ncl) -* EMEP (reformat_scripts/obs/reformat_obs_EMEP.ncl) -* IMPROVE (reformat_scripts/obs/reformat_obs_IMPROVE.ncl) -* MODIS (obs4mips) -* MISR (obs4mips) -* ESACCI-AEROSOL (reformat_scripts/obs/reformat_obs_ESACCI-AEROSOL.ncl) -* ACCESS (reformat_scripts/obs/reformat_obs_ACCESS.ncl) -* ACCESS-2 (reformat_scripts/obs/reformat_obs_ACCESS-2.ncl) -* Asmi11 (reformat_scripts/obs/reformat_obs_Asmi11.ncl) -* CIRRUS (reformat_scripts/obs/reformat_obs_CIRRUS.ncl) -* CONCERT (reformat_scripts/obs/reformat_obs_CONCERT.ncl) -* CR-AVE (reformat_scripts/obs/reformat_obs_CR-AVE.ncl) -* DC3 (reformat_scripts/obs/reformat_obs_DC3.ncl) -* HIPPO (reformat_scripts/obs/reformat_obs_HIPPO.ncl) -* INCA (reformat_scripts/obs/reformat_obs_INCA.ncl) -* LACE (reformat_scripts/obs/reformat_obs_LACE.ncl) -* Putaud (reformat_scripts/obs/reformat_obs_Putaud.ncl) -* SALTRACE (reformat_scripts/obs/reformat_obs_SALTRACE.ncl) -* TC4 (reformat_scripts/obs/reformat_obs_TC4.ncl) -* Texas (reformat_scripts/obs/reformat_obs_Texas.ncl) -* UCN-Pacific (reformat_scripts/obs/reformat_obs_UCN-Pacific.ncl) - - -References ----------- - -* Aquila, V. et al., MADE-in: a new aerosol microphysics submodel for global simulation of insoluble particles and their mixing state. Geosci. Model Dev. 4 (2), 325-355 (2011). - -* Lauer, A. et al., Simulating aerosol microphysics with the EMAC/MADE GCM - Part I: Model description and comparisons with observations. Atmos. Chem. Phys. 5 (12), 3251-3276 (2005). - -* Righi, M. et al.. The global impact of the transport sectors on atmospheric aerosol: Simulations for year 2000 emissions. Atmos. Chem. Phys. 13 (19), 9939-9970 (2013). - - -Example plots -------------- - -.. centered:: |pic_aerosol_1| |pic_aerosol_2| - -.. |pic_aerosol_1| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_ts.png - :width: 45% - -.. |pic_aerosol_2| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_scatter.png - :width: 45% - -.. image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial.png - :height: 7cm - :align: center - -.. centered:: |pic_aerosol_3| |pic_aerosol_4| - -.. |pic_aerosol_3| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global.png - :width: 45% - -.. |pic_aerosol_4| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_spatial_global_diff.png - :width: 45% - -.. centered:: |pic_aerosol_5| |pic_aerosol_6| - -.. |pic_aerosol_5| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_plevel.png - :width: 45% - -.. |pic_aerosol_6| image:: /namelists/figures/aerosol/figure_namelist_aerosol_conc_SO4_size.png - :width: 45% - diff --git a/doc/sphinx/source/namelists/namelist_asian_monsoon.rst b/doc/sphinx/source/namelists/namelist_asian_monsoon.rst deleted file mode 100644 index e0bf6dd206..0000000000 --- a/doc/sphinx/source/namelists/namelist_asian_monsoon.rst +++ /dev/null @@ -1,232 +0,0 @@ -South asian monsoon -=================== - -Overview --------- - -Three South Asian Summer Monsoon (SASM) namelists for the basic climatology, seasonal cycle, intra-seasonal and inter-annual variability and key teleconnections have been implemented into the ESMValTool focusing on SASM rainfall and horizontal winds in June-September (JJAS). The goal is to provide a comprehensive overview of the basic features of the South Asian Monsoon for a certain model compared to other models, observational and reanalysis data sets for a range of processes and variables relevant to the monsoon. - - -Available Namelists and Diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_SAMonsoon_AMIP.xml -* namelist_SAMonsoon_daily.xml -* namelist_SAMonsoon.xml - -Diagnostics are stored in diag_scripts/ - -* SAMonsoon_precip_basic.ncl -* SAMonsoon_precip_daily.ncl -* SAMonsoon_precip_domain.ncl -* SAMonsoon_precip_IAV.ncl -* SAMonsoon_precip_propagation.ncl -* SAMonsoon_precip_seasonal.ncl -* SAMonsoon_teleconnections.ncl -* SAMonsoon_wind_basic.ncl -* SAMonsoon_wind_IAV.ncl -* SAMonsoon_wind_seasonal.ncl - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_SAMonsoon/ - -#. SAMonsoon_wind_basic.ncl - - *Required diag_script_info attributes* - - * styleset: "CMIP5", "DEFAULT" - * season: season in letters, e.g., "JJAS" - * latrange_basic: min. and max. latitude of crop area (array) - * lonrange_basic: min. and max. longitude of crop area (array) - * cn_levels_mean_basic: contour levels for mean plots (array) - * cn_levels_mean_diff_basic: contour levels for mean difference plots (array) - * cn_levels_stddev_basic: contour levels for standard deviation plots (array) - * cn_levels_stddev_diff_basic: contour levels for standard deviation difference plots (array) - * my_region: monsoon region (must be set to "SA") - -#. SAMonsoon_wind_seasonal.ncl, SAMonsoon_wind_IAV.ncl - - *Required diag_sccript_info attributes* - - * styleset: "CMIP5", "DEFAULT" - * season: season in letters, e.g., "JJAS" - * multi_model_mean : calculate multi-model mean ("y", "n") - -#. SAMonsoon_precip_basic.ncl, SAMonsoon_precip_seasonal.ncl, SAMonsoon_precip.ncl, SAMonsoon_precip_domain.ncl, SAMonsoon_precip_basic_daily.ncl, SAMonsoon_precip_IAV.ncl, SAMonsoon_precip_propagation.ncl - - *Required diag_script_info attributes* - - * season: season in letters, e.g., "JJAS" - - Settings specific for the precip basic plot_type - - * latrange_basic: min. and max. latitude (2-element array) - * lonrange_basic: min. and max longitude (2-element array) - * cn_levels_mean_basic: contour levels for mean plots (n-element array) - * cn_levels_mean_diff_basic: contour levels for mean difference plots (n-element array) - * cn_levels_stddev_basic: contour levels for standard deviation plots (n-element array) - * cn_levels_stddev_diff_basic: contour levels for standard deviation difference plots (n-element array) - * cn_levels_stddev_norm_basic (only SAMonsoon_precip_basic_daily.ncl): contour levels for standard deviation plots (n-element array) - * cn_levels_stddev_norm_diff_basic (only SAMonsoon_precip_basic_daily.ncl): contour levels for standard deviation difference plots (n-element array) - - Settings specific for the precip seasonal plot_type (SAMonsoon_precip_seasonal.ncl) - - * latrange_seasonal: min. and max. latitude of crop area (2-element array) - * lonrange_seasonal: min. and max. longitude of crop area (2-element array) - * styleset: "CMIP5", "DEFAULT" - * multi_model_mean : calculate multi-model mean ("y", "n") - - Settings shared by the precip global domain/intensity plot_type - - * summer_season: "MJJAS" - * winter_season: "NDJFM" - - Settings specific for the precip global domain plot_type - - * latrange_global: min. and max. latitude (2-element array) - * cn_levels_global_domain_mean: contour levels for global domain plots (array) - * cn_levels_global_domain_diff: contour levels for global domain difference plots (array) - * high_intensity_cutoff_mmday: cut-off for monsoon domain definition in mm day-1 - - Settings specific for the precip intensity plots - - * cn_levels_intensity_mean: contor levels for intensity mean plots (n-element array) - * cn_levels_intensity_diff: contor levels for intensity difference plots (n-element array) - * abs_cmap: path and filename of color map for absolute values - * diff_cmap: path and filename of color map for difference values - * my_region: monsoon region (must be set to "SA") - - Settings specific for daily precipitation plots (SAMonsoon_precip_daily.ncl) - - * isv_latrange: min. and max. latitude of crop area (2-element array) - * isv_lonrange: min. and max. latitude of crop area (2-element array) - * bob_latrange: min. and max. latitude of crop area for Bay of Bengal (2-element array) - * bob_lonrange = min. and max. longitude of crop area for Bay of Bengal (2-element array) - * eio_latrange: min. and max. latitude of crop area for eastern equatorial Indian Ocean (2-element array) - * eio_lonrange: min. and max. longitude of crop area for eastern equatorial Indian Ocean (2-element array) - * filter_min: lower limit used for filtering - * filter_max: upper limit used for filtering - * filter_weights: number of filter weights to use - - Settings specific for daily propagation plots (SAMonsoon_precip_propagation.ncl) - - * prop_isv_latrange: min. and max. latitude of crop area (2-element array) - * prop_isv_lonrange: min. and max. longitude of crop area (2-element array) - * prop_lag_latrange: min. and max. latitude of crop area for lag computation along longitude (2-element array) - * prop_lag_lonrange: min. and max. longitude of crop area for lag computation along latitude (2-element array) - * prop_ref_latrange: min. and max. latitude of crop area for lag reference area (2-element array) - * prop_ref_lonrange: min. and max. longitude of crop area for lag reference area (2-element array) - * prop_filter_mxlag: size of lag - * ihp: Lanczos switch for low/high band pass filter - * nWgt: total number of weights for Lanczos - * sigma: Lanczos sigma - * min_days: min days in filtering - * max_days: max day in filtering - * fca: start frequency to compute Lanczos weights - * fcb: end frequency to compute Lanczos weights - -#. SAMonsoon_teleconnections.ncl - - *Required diag_script_info attributes* - - * monsoon_latrange: min. and max. latitude of crop area for Indian Monsoon (2-element array) - * monsoon_lonrange: min. and max. longitude of crop area for Indian Monsoon (2-element array) - * nino34_latrange: min. and max. latitude of Niño3.4 region (2-element array) - * nino34_lonrange: min. and max. longitude of Niño3.4 region (2-element array) - * tele_latrange: min. and max. latitude of crop area for overview area (2-element array) - * tele_lonrange: min. and max. longitude of crop area for overview area (2-element array) - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for mean difference plot (n-element array) - * cn_levels_stddev_basic: contour levels for standard deviation plot (n-element array) - * cn_levels_stddev_diff_basic: contour levels for standard deviation difference plot (n-element array) - - -Variables ---------- - -* pr (atmos, daily/monthly, longitude latitude time) -* ts (atmos, monthly, longitude latitude time) -* ua (atmos, monthly, longitude latitude lev time) -* va (atmos, monthly, longitude latitude lev time) - - -Observations and Reformat Scripts ---------------------------------- - -**Note**: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* ERA-Interim (ua, va, pr -- reformat_scripts/obs/reformat_obs_ERA-Interim.ncl, reformat_obs_ERA-Interim_surffluxes.ncl) -* NCEP (ua, va -- reformat_scripts/obs/reformat_obs_NCEP.ncl) -* TRMM-L3 (pr, monthly means -- obs4mips) -* TRMM_3B42 (pr, daily means -- reformat_scripts/obs/reformat_obs_TRMM-3B42-daily.ncl) -* HadISST (ts -- reformat_scripts/obs/reformat_obs_HadISST.ncl) -* GPCP-1DD (pr, daily means -- obs4mips) -* GPCP-SG (pr, monthly means -- obs4mips) -* MERRA (pr -- obs4mips) -* CMAP (pr -- reformat_scripts/obs/reformat_obs_CMAP.ncl) - - - -References ----------- - -* Sperber, K. R., et al., The Asian summer monsoon: an intercomparison of CMIP5 vs. CMIP3 simulations of the late 20th century, Clim Dyn (2013) 41:2711--2744, doi: 10.1007/s00382-012-1607-6, 2012. -* Lin, Jia-Lin, Klaus M. Weickman, George N. Kiladis, Brian E. Mapes, Siegfried D. Schubert, Max J. Suarez, Julio T. Bacmeister, Myong-In Lee, 2008: Subseasonal Variability Associated with Asian Summer Monsoon Simulated by 14 IPCC AR4 Coupled GCMs. J. Climate, 21, 4541-4567. doi: https://doi.org/10.1175/2008JCLI1816.1. -* Webster, P. J., and S.Yang, 1992: Monsoon and ENSO: Selectively interactive systems. Quart. J. Roy. Meteor. Soc., 118, 877-926. (Webster-Yang dynamical monsoon index) -* Goswami, B. N., B. Krishnamurthy, and H. Annamalai, 1999: A broad-scale circulation index for interannual variability of the Indian summer monsoon. Quart. J. Roy. Meteor. Soc., 125, 611-633. (Goswami dynamical monsoon index) -* Wang, B., and Z. Fan, 1999: Choice of south Asian summer monsoon indices. Bull. Amer. Meteor. Soc., 80, 629-638. (Wang-Fan dynamical monsoon index) -* Wang B., J. Liu, H. J. Kim, P. J. Webster, and S. Y. Yim, Recent change of global monsoon precipitation (1979-2008), Climate Dynamics, doi: 10.1007/s00382-011-1266-z, 2011. (Intensity/Monsoon domain reference) - - -Example plots -------------- - -.. figure:: /namelists/figures/south_asian_monsoon/fig1.png - :width: 60% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig2.png - :width: 60% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig3.png - :width: 60% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig4.png - :width: 40% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig5.png - :width: 60% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig6.png - :width: 60% -   :align: center - -.. centered:: |pic_samonsoon_1| |pic_samonsoon_2| - -.. |pic_samonsoon_1| image:: /namelists/figures/south_asian_monsoon/fig7.png - :width: 45% - -.. |pic_samonsoon_2| image:: /namelists/figures/south_asian_monsoon/fig8.png - :width: 45% - -.. figure:: /namelists/figures/south_asian_monsoon/fig9.png - :width: 70% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig10.png - :width: 60% -   :align: center - -.. figure:: /namelists/figures/south_asian_monsoon/fig11.png - :width: 60% -   :align: center - diff --git a/doc/sphinx/source/namelists/namelist_autoassess_rad.rst b/doc/sphinx/source/namelists/namelist_autoassess_rad.rst deleted file mode 100644 index 8f04633335..0000000000 --- a/doc/sphinx/source/namelists/namelist_autoassess_rad.rst +++ /dev/null @@ -1,133 +0,0 @@ -AutoAssess Radition RMS errors -============================== - -Overview --------- - -The goal of this effort is to code up routines of calculate RMS errors in AutoAssess Radiation and draw a summary plot, so that errors in two models or versions simulations can be compared. - -Available Namelists and Diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_AutoAssess_radiation_rms_Amon_all.xml -* namelist_AutoAssess_radiation_rms_cfMon_all.xml - -Diagnostics are stored in diag_scripts/ - -AutoAssess radiation calculates the spatial RMS errors of diagnostics of radiation budget, cloud and hydrological cycle. Specifically, - -* TOA Net Incoming Total Radiation -* TOA Net Incoming Shortwave Radiation -* TOA Outgoing Shortwave Radiation -* TOA Outgoing Longwave Radiation -* TOA Outgoing Clear-Sky Shortwave Radiation -* TOA Outgoing Clear-Sky Longwave Radiation -* TOA Shortwave Cloud Radiative Effect -* TOA Longwave Cloud Radiative Effect -* Surface Net Downwelling Shortwave Radiation -* Surface Net Downwelling Longwave Radiation -* Surface Downwelling Clear-Sky Longwave Radiation -* ISCCP High Level Intermediate Cloud Fraction -* ISCCP High Level Thick Cloud Fraction -* ISCCP Middle Level Intermediate Cloud Fraction -* ISCCP Middle Level Thick Cloud Fraction -* ISCCP Low Level Intermediate Cloud Fraction -* ISCCP Low Level Thick Cloud Fraction -* Water Vapor Path -* Precipitation - -Following variables are defined so that they can be evaluated after their COSP outputs become available. - -* CCI Total Cloud Fraction -* CCI High Level Intermediate Cloud Fraction -* CCI High Level Thick Cloud Fraction -* CCI Middle Level Intermediate Cloud Fraction -* CCI Middle Level Thick Cloud Fraction -* CCI Low Level Intermediate Cloud Fraction -* CCI Low Level Thick Cloud Fraction -* CCI Total Liquid Cloud Area Fraction -* CCI Mean Cloud Top Pressure - -The main plot is a summary plot which shows normalized RMS errors of different diagnostics in a model (version) relative to those in another model (version). - -Specific Routines ------------------ - -See the individual namelists for specific routines. - -**Summary Plot** - -A python program which draw a summary plot: plot_scripts/python/plot_norm_ac_ideal.py - -A script to run the program: -plot_scripts/python/AutoAssess_radiation_summary/Plot_AutoAssess_radiation_summary.csh -(Please follow instructions written in the script to obtain a summary file with RMS errors for multi variables.) - -Observational uncertainty can be calculated using the second reference data. See below how to calculate observational uncertainty for other variables. - -**Observational Uncertainty** - -Observational uncertainty is defined by the RMS difference of two reference dataset. -Area mean of this RMS difference can be calculated by using the AutoAssess_radiation programs, giving two reference data as input to the program. This value can be plotted as an uncertainty bar for each variable in the summary plot. -As an example, the file radiation_obs2_cmipname_ANN.csv.example contains the RMS differences calculated with the example namelist nml/namelist_AutoAssess_radiation_rms_Amon_all_obs.xml. - -The following steps are required to obtain a summary plot with observational uncertainty bars: - -* Calculate the RMS difference of two reference dataset - - * An example namelist file: nml/namelist_AutoAssess_radiation_rms_Amon_all_obs.xml - -* You get csv files for each diagnostics with the RMS difference value in each file: summary_global_.csv (e.g. summary_global_CERES-EBAF.csv) - -* Create a file 'radiation_obs2_cmipname_ANN.csv' under the directory 'plot_scripts/python/AutoAssess_radiation_summary' and add the diagnostics names with their RMS difference values - - * There is a template file: - - plot_scripts/python/AutoAssess_radiation_summary/radiation_obs2_cmipname_ANN.csv.template - - * Edit the file (with your favourite editor) by replacing the undefined value to the calculated RMS difference value - - * If the RMS difference value is not available, please set undefined value '-10000', instead - -* Run Plot_AutoAssess_radiation_summary.csh - -Variables ---------- - -* rlut (atmos, monthly mean, longitude, latitude, time) -* rlutcs (atmos, monthly mean, longitude, latitude, time) -* rsut (atmos, monthly mean, longitude, latitude, time) -* rsutcs (atmos, monthly mean, longitude, latitude, time) -* rsdt (atmos, monthly mean, longitude, latitude, time) -* rsds (atmos, monthly mean, longitude, latitude, time) -* rsus (atmos, monthly mean, longitude, latitude, time) -* rlds (atmos, monthly mean, longitude, latitude, time) -* rlus (atmos, monthly mean, longitude, latitude, time) -* rldscs (atmos, monthly mean, longitude, latitude, time) -* prw (atmos, monthly mean, longitude, latitude, time) -* pr (atmos, monthly mean, longitude, latitude, time) -* clisccp (atmos, monthly mean, longitude, latitude, time) - -Observations and Scripts ------------------------- - -* Reference data (and the second reference data which are currently available in a readable netCDF format to the program to estimate the observational uncertainty) -* obs4mips CERES-EBAF L3B Ed2-8 (CERES CERES_SYN1deg-Month Terra-Aqua-MODIS Ed3A) -* obs4mips SSMI L3 RSS (obs4mips SSMI-MERIS L3 V1-00) -* obs4mips GPCP-SG L3 v2.2 -* ana4mips JRA-55 Amon reanalysis -* obs4mips ISCCP_L3_V1.0 - -* Global mean of the RMS difference of variables are in - - scripts/python/AutoAssess_radiation_summary/radiation_obs2_cmipname_ANN.csv.new - -Example Plots -------------- - -.. image:: /namelists/figures/autoassess_rad/fig-1.png - :width: 80% - :align: center - diff --git a/doc/sphinx/source/namelists/namelist_carbon_cycle.rst b/doc/sphinx/source/namelists/namelist_carbon_cycle.rst deleted file mode 100644 index 44ff3efc8b..0000000000 --- a/doc/sphinx/source/namelists/namelist_carbon_cycle.rst +++ /dev/null @@ -1,150 +0,0 @@ -Land and ocean components of the global carbon cycle -==================================================== - -Overview --------- - -This namelist reproduces most of the figures of Anav et al. (2013): - -* seasonal cycle plot for different regions -* errorbar plot for different regions showing mean and standard deviation -* scatterplot for different regions showing mean vs. interannual variability -* 3D-scatterplot for different regions showing mean vs. linear trend and the - model variability index (MVI) as a third dimension (color coded) -* scatterplot for different regions comparing two variable against each other - (cSoil vs. cVeg) - -In addition, performance metrics are calculated for all variables using the -performance metric diagnostics (see details in section :ref:`nml_perfmetrics`). This however applies only to variables -on a regular grid (i.e., not to fgco2), as irregular grids are not yet -supported by the performance "*mwtr*". - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_anav13jclim.xml - -Diagnostics are stored in diag_scripts/ - -* CarbonCycle_main.ncl: calculate temporal and spatial averages and plots - the variable as error-bar and seasonal cycle plots. -* CarbonCycle_MVI.ncl: calculate the model variability index (MVI), - interannual variability (IAV) and mean, and draw them in a 3D scatter plot. -* CarbonCycle_2vars.ncl: draw a scatter plot with two variables. -* (perfmetrics_main.ncl): see section :ref:`nml_perfmetrics` -* (perfmetrics_grading.ncl): see section :ref:`nml_perfmetrics` - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_anav13jclim/ - -1. CarbonCycle_MVI.ncl - - *Diag_script_info attributes* - - * grid: target grid for regridding ("0.5deg", "1deg", "2deg") - * region: region for spatial average ("Global", "Northern Hemisphere", - "Southern Hemisphere", "Tropics") - * ref_model : reference model, e.g. "CRU" - -2. CarbonCycle_main.ncl - - *Diag_script_info attributes* - - * region: region for spatial average ("Global", "Northern Hemisphere", - "Southern Hemisphere", "Tropics") - * legend_outside: plot legend in a separate file (True, False) - * styleset: plot style set ("CMIP5", "EMAC", "DEFAULT") - * sort: sort models alphabetically (True, False) - * seasonal_cycle_plot: create seasonal cycle plot (True, False) - * errorbar_plot: create error bar plot (True, False) - * mean_IAV_plot: create mean (x-axsis), IAV (y-axsis) plot (True, False) - -3. CarbonCycle_2vars.ncl - - *Diag_script_info attributes* - - * region: region for spatial average ("Global", "Northern Hemisphere", - "Southern Hemisphere", "Tropics") - * legend_outside: plot legend in a separate file (True, False) - * styleset: plot style set ("CMIP5", "EMAC", "DEFAULT") - -4. perfmetrics_main.ncl, perfmetric_grading.ncl - - *Diag_script_info attributes* - - * see section :numref:`nml_perfmetrics` - - -Variables ---------- - -* tas (atmos, monthly mean, longitude latitude time) -* pr (atmos, monthly mean, longitude latitude time) -* nbp (lmon, monthly mean, longitude latitude time) -* gpp (lmon, monthly mean, longitude latitude time) -* lai (lmon, monthly mean, longitude latitude time) -* cVeg (lmon, monthly mean, longitude latitude time) -* cSoil (lmon, monthly mean, longitude latitude time) -* fgco2 (omon, monthly mean, longitude latitude time) - - -Observations and reformat scripts ---------------------------------- - -*Note:* (1) obs4mips data can be used directly without any preprocessing; -(2) see headers of reformat scripts for non-obs4mips data for download -instructions. - -* CRU (near-sruface air temperature, precipitation) - - *Reformat script:* reformat_scripts/obs/reformat_obs_CRU.ncl -* MTE (gross primary productivity of carbon) -* LAI3g (leaf area index) -* JMA-TRANSCOM (CO2 exchange) -* HSWD (soil carbon content) -* NDP (vegetation carbon content) - - *Reformat scripts:* The reformat scripts for the following data sets - **could not be included in the ESMValTool v1.1**: MTE, LAI3g, JMA-TRANSCOM, - HSWD, and NDP. Please contact the author of this diagnostic package - (A. Anav) for obtaining the reformat scripts. - - - -References ----------- - -* Anav, A. et al.: Evaluating the land and ocean components of the global - carbon cycle in the CMIP5 Earth System Models, J. Climate, 26, 6901-6843, - doi: 10.1175/JCLI-D-12-00417.1, 2013. - - -Example plots -------------- - -.. centered:: |pic_carbcyc_1| |pic_carbcyc_2| - -.. |pic_carbcyc_1| image:: /namelists/figures/carbon_cycle/fig_carbon_cycle_1.png - :width: 45% - -.. |pic_carbcyc_2| image:: /namelists/figures/carbon_cycle/fig_carbon_cycle_2.png - :width: 45% - -.. centered:: |pic_carbcyc_3| |pic_carbcyc_4| - -.. |pic_carbcyc_3| image:: /namelists/figures/carbon_cycle/fig_carbon_cycle_3.png - :width: 45% - -.. |pic_carbcyc_4| image:: /namelists/figures/carbon_cycle/fig_carbon_cycle_4.png - :width: 45% - -.. figure:: /namelists/figures/carbon_cycle/fig_carbon_cycle_5.png - :width: 50% - :align: center - diff --git a/doc/sphinx/source/namelists/namelist_carbon_emergent_constraints.rst b/doc/sphinx/source/namelists/namelist_carbon_emergent_constraints.rst deleted file mode 100644 index 4a28a549c8..0000000000 --- a/doc/sphinx/source/namelists/namelist_carbon_emergent_constraints.rst +++ /dev/null @@ -1,124 +0,0 @@ -Emergent constraints on carbon cycle feedbacks -============================================== - -Overview --------- - -Figures from Wenzel et al. (2014) are reproduced with namelist_wenz14jgr.xml. Variables relevant for the carbon cycle-climate feedback such as near surface air temperature (tas), net biosphere productivity (nbp) and (fgco2) are analyzed for coupled (1pctCO2; here the carbon cycle is fully coupled to the climate response) and uncoupled (esmFixCLim1; here the carbon cycle is uncoupled to the climate response) simulations. The standard namelist includes a comparison of cumulated nbp from coupled and uncoupled simulations and includes a set of routines to diagnose the long-term carbon cycle-climate feedback parameter (GammaLT) from an ensemble of CMIP5 models. Also included in the namelist is a comparison of the interannual variability of nbp and fgco2 for historical simulations used to diagnose the observable sensitivity of CO2 to tropical temperature changes (GammaIAV). As a key figure of this namelist, the diagnosed values from the models GammaLT vs. GammaIAV are compared in a scatter plot constituting an emergent constraint. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_wenzel14jgr.xml - -Diagnostics are stored in diag_scripts/ - -* tsline.ncl: time line plots of annual means for spatial averages -* carbon_corr_2var.ncl: scatter plot of annual mean anomalies of two different variables; diagnosing and saving GammaIAV -* carbon_constraint.ncl: scatter plot of GammaLT vs. GammaIAV + line plot of probability density functions; diagnosing GammaLT - - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_carbon/ - -1. tsline (cfg_carbon_line.ncl, cfg_carbon_line_h.ncl) - - *Required diag_script_info attributes* - - * styleset: "CMIP5" - * ts_minlat: minimum latitude for area-averaging - * ts_maxlat: maximum latitude for area-averaging - * ts_minlon: minimum longitude for area-averaging - * ts_maxlon: maximum longitude for area-averaging - * multi_model_mean: True for multi-model mean calculation - * ts_maxyear: last year (time range) - * ts_minyear: first year (time range) - * time_avg: "yearly" (currently, only yearly is available) - * ts_anomaly: calculates anomalies with respect to the first 10-year average (anom, noanom) - * area_opper: type of area operation (average, sum) - -2. ts_line (cfg_carbon_line_h.ncl) - - Required diag_script_info attributes - - * ts_detrend: detrend time series (detr, nodetr) - -3. create_co2_flux.ncl, carbon_corr_2var.ncl - - Required diag_script_info attributes - - * styleset: "CMIP5" - * con_latrange: 2-element array of latitudes for time series plots if 2D or 3D - * con_lonrange: 2-element array of pressure levels for time series plots if 2D or 3D - * con_units: label string for units, e.g., "GtC/K" - * pcBGC: label for CMIP5 experiment (for creating filename mask), e.g., "esmFixClim1" - * reg_models: models to be included in emergent constraint (n-element array or (/"all"/)); **note: has to be consistent with the list of models specified in the namelist!** - - - -Variables ---------- - -* tas (atmos, monthly mean, longitude latitude time) -* co2 (atmos, monthly mean, plev longitude latitude time) -* nbp (land, monthly mean, longitude latitude time) -* fgco2 (ocean, monthly mean, longitude latitude time) - -Observations and reformat scripts ---------------------------------- - -**Note:** (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* GCP - Global Carbon Budget including land (nbp) and ocean (fgco2) carbon fluxes - -Reformat script: reformat_scripts/obs/reformat_obs_GCP.ncl - -* NCEP - National Centers for Environmental Prediction reanalysis data for near surface temperature - -Reformat script: reformat_scripts/obs/reformat_obs_NCEP.ncl - -References ----------- - -* Cox, P. M., D. B. Pearson, B. B. Booth, P. Friedlingstein, C. C. Huntingford, C. D. B. Jones, and C. M. Luke, 2013, Sensitivity of tropical carbon to climate change constrained by carbon dioxide variability, Nature, 494(7437), 341–344. doi: 10.1038/nature11882 -* Wenzel, S., P. M. Cox, V. Eyring, and P. Friedlingstein, 2014, Emergent Constraints on Climate Carbon Cycle Feedbacks in the CMIP5 Earth System Models, JGR Biogeoscience, 119(5), doi: 2013JG002591. - - - -Example plots -------------- - - -.. figure:: /namelists/figures/carbon_constraints/fig1.png - :width: 10 cm - :alt: xxxxx - - Time series of tropical (30°S - 30°N) mean near surface temperature (tas) change between year 30 and year 110 for the CMIP5 models simulated with prescribed CO2 (1%/yr CO2 increase) coupled simulation (1pctCO2). - - -.. figure:: /namelists/figures/carbon_constraints/fig2.png - :width: 10 cm - :alt: xxxxx - - Correlations between the interannual variability of global co2flux (nbp+fgco2) and tropical temperature for the individual CMIP5 models using esmHistorical simulations, and for observations. - -.. figure:: /namelists/figures/carbon_constraints/fig3.png - :scale: 50 % - :alt: xxxxx - - Carbon cycle-climate feedback of tropical land carbon vs. the sensitivity of co2flux to interannual temperature variability in the tropics (30°S-30°N). The red line shows the linear best fit of the regression together with the prediction error (orange shading) and the gray shading shows the observed range. - - - -.. figure:: /namelists/figures/carbon_constraints/fig4.png - :scale: 30 % - :alt: xxxxx - - Probability Density Functions for the pure CMIP5 ensemble (black dashed) and after applying the observed constraint to the models (red solid) - diff --git a/doc/sphinx/source/namelists/namelist_catchment.rst b/doc/sphinx/source/namelists/namelist_catchment.rst deleted file mode 100644 index 7b0dfea508..0000000000 --- a/doc/sphinx/source/namelists/namelist_catchment.rst +++ /dev/null @@ -1,96 +0,0 @@ -Catchment analysis -===================== - -Overview --------- - -This diagnostic calculates biases of long-term climatological annual means -of total runoff, precipitation and evapotranspiration for 12 large-scale -catchments on different continents and climates. For total runoff, catchment -averaged model values are compared to climatological GRDC station -observations of river runoff (Dümenil Gates et al., 2000). Due to the -incompleteness of these station data, a year-to-year correspondence of data -cannot be achieved in a generalized way, so that only climatological data -are considered, such it has been done in Hagemann et al. (2013). -For precipitation, catchment-averaged WFDEI precipitation -(Weedon et al., 2014) data from 1979-2010 is used as reference. -For evapotranspiration, observations are estimated using the difference -of the above mentioned precipitation reference minus the climatological -GRDC river runoff. - - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_runoff_et.xml - -Diagnostics are stored in diag_scripts/ - -* catchment_analysis_val.py - - -User settings -------------- - -None. - - -Variables ---------- - -* mrro (land, annual mean, longitude latitude time) -* evspsbl (atmos, annual mean, longitude latitude time) -* pr (atmos, annual mean, longitude latitude time) - -Observations and reformat scripts ---------------------------------- - -The observational data (big_catchments.nc) are provided with the ESMValTool -and are located in diag_scripts/aux/catchment_analysis/. - -* Climatological river runoff from various GRDC stations -* WFDEI precipitation (Weedon et al., 2014). - - -References ----------- - -* Dümenil Gates, L., S. Hagemann and C. Golz, 2000: Observed historical - discharge data from major rivers for climate model validation. Max Planck - Institute for Meteorology Report 307, Hamburg, Germany. -* Hagemann, S., A. Loew, A. Andersson, 2013: Combined evaluation of MPI-ESM - land surface water and energy fluxes. J. Adv. Model. Earth Syst., 5: - 259-286, doi: 10.1029/2012MS000173. -* Weedon, G. P., G. Balsamo, N. Bellouin, S. Gomes, M. J. Best, and P. - Viterbo (2014), The WFDEI meteorological forcing data set: WATCH Forcing - Data methodology applied to ERA-Interim reanalysis data, Water Resour. Res., - 50, 75057514, doi: 10.1002/2014WR015638. - - - -Example plots -------------- - -.. centered:: |pic_catchment_1| |pic_catchment_2| - -.. |pic_catchment_1| image:: /namelists/figures/catchment/fig_catchment_1.png - :width: 45% - -.. |pic_catchment_2| image:: /namelists/figures/catchment/fig_catchment_2.png - :width: 45% - -.. image:: /namelists/figures/catchment/fig_catchment_3.png - :width: 45% - :align: center - -.. centered:: |pic_catchment_3| |pic_catchment_4| - -.. |pic_catchment_3| image:: /namelists/figures/catchment/fig_catchment_4.png - :width: 45% - -.. |pic_catchment_4| image:: /namelists/figures/catchment/fig_catchment_5.png - :width: 45% - diff --git a/doc/sphinx/source/namelists/namelist_clouds.rst b/doc/sphinx/source/namelists/namelist_clouds.rst deleted file mode 100644 index 9d7fd607ee..0000000000 --- a/doc/sphinx/source/namelists/namelist_clouds.rst +++ /dev/null @@ -1,228 +0,0 @@ -Clouds -====== - -Overview --------- - -The namelist namelist_lauer13jclim.xml computes the climatology and interannual variability of climate relevant cloud variables such as cloud radiative forcing (CRE), liquid (lwp) and ice water path (iwp), cloud amount (clt), and total precipitation (pr) reproducing some of the evaluation results of Lauer and Hamilton (2013). -The standard namelist includes a comparison of the geographical distribution of multi-year average cloud parameters from individual models and the multi-model mean with satellite observations. -Taylor diagrams are generated that show the multi-year annual or seasonal average performance of individual models and the multi-model mean in reproducing satellite observations. -The diagnostic also facilitates the assessment of the bias of the multi-model mean and zonal averages of individual models compared with satellite observations. -Interannual variability is estimated as the relative temporal standard deviation from multi-year timeseries of data with the temporal standard deviations calculated from monthly anomalies after subtracting the climatological mean seasonal cycle. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - - * namelist_lauer13jclim.xml - -Diagnostics are stored in diag_scripts/ - - * clouds.ncl: global maps of (multi-year) annual means including multi-model mean - * clouds_bias.ncl: global maps of the multi-model mean and the multi-model mean bias - * clouds_interannual: global maps of the interannual variability - * clouds_isccp: global maps of multi-model mean minus observations + zonal averages of individual models, multi-model mean and observations - * clouds_taylor.ncl: taylor diagrams - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_cloud/ - -#. clouds.ncl: cfg_clouds.ncl - - *Required diag_script_info attributes* - - * grid: grid for regridding (coarsest, finest, ref, 1°x1°) in case calculation of the multi-model mean or difference plots are requested - * ref_model: name of reference data set - - *Optional diag_scipt_info attributes* - - * calcmm: calculate multi-model mean (True, False) - * embracesetup: True = 2 plots per line, False = 4 plots per line (default) - * showdiff: calculate and plot differences (True, False) - * timemean: time averaging, i.e. "seasonal" (DJF, MAM, JJA, SON), "annual" (annual mean) - - *Required variable_info attributes* - - * long_name: description of variable - * map_Levels: contour levels for plotting - * units: variable units - - *Color tables* - - * variable "lwp": diag_scripts/lib/ncl/rgb/qcm3.rgb - -#. clouds_bias.ncl: cfg_clouds_bias.ncl - - *Required diag_script_info attributes* - - * grid: grid for regridding (coarsest, finest, ref) in case calculation of the multi-model mean is requested - * ref_model: name of reference data set - * valid_fraction: minimum fraction of valid data points (for creating a mask) - - *Optional diag_scipt_info attributes* - - * ncdf: enable to output to netCDF; either use "default" or give a full file name - * projection: map projection, e.g., Mollweide, Mercator (see http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpProjection for available projections) - * timemean: time averaging, i.e. "seasonalclim" (DJF, MAM, JJA, SON), "annualclim" (annual mean) - - *Required variable_info attributes* - - * long_name: description of variable - * map_diff_Levels: contour levels for difference plot - * units: variable units - - *Color tables* - - * variable "tas": diag_scripts/lib/ncl/rgb/ipcc-tas.rgb, diag_scripts/lib/ncl/rgb/ipcc-tas-delta.rgb - * variable "pr-mmday": diag_scripts/lib/ncl/rgb/ipcc-precip.rgb, diag_scripts/lib/ncl/rgb/ipcc-precip-delta.rgb - -#. clouds_interannual.ncl: cfg_clouds_interannual.ncl - - *Required diag_script_info attributes* - - * colormap: e.g., WhiteBlueGreenYellowRed, rainbow - * grid: grid for regridding (coarsest, finest, ref, 1°x1°) in case calculation of the multi-model mean is requested - * models_to_skip: name(s) of data set(s) to be skipped when calculating the multi-model mean - * projection: map projection, e.g., Mollweide, Mercator (see http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpProjection for available projections) - * ref_model: specifies model that should be taken as "reference" when regridding to "ref" (only required if grid = "ref") - - *Optional diag_scipt_info attributes* - - * calcmm: calculate multi-model mean (True, False) - * extrafiles: write plots for individual models to separate files (True, False) - - *Color tables* - - * variable "lwp": diag_scripts/lib/ncl/rgb/qcm3.rgb - -#. clouds_ipcc.ncl: cfg_clouds_ipcc.ncl - - *Required diag_script_info attributes* - - * grid: grid for regridding (coarsest, finest, ref, 1x1) - * ref_model: name of reference data set - * valid_fraction: minimum fraction of valid data points (for creating a mask) - * projection: map projection, e.g., Mollweide, Mercator (see http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpProjection for available projections) - - *Optional diag_scipt_info attributes* - - * mask_ts_sea_ice: True = mask T < 272 K as sea ice (only for variable "ts"), False = no additional grid cells masked for variable "ts" - * models_to_skip: name(s) of data set(s) to be skipped when calculating the multi-model mean (usually all observations) - * ncdf: enable to output to netCDF; either use "default" or give a full file name - * styleset: "CMIP5", "DEFAULT" - * timemean: time averaging, i.e. "seasonalclim" (DJF, MAM, JJA, SON), "annualclim" (annual mean) - - *Required variable_info attributes* - - * long_name: description of variable - * map_Levels: contour levels for plotting - * units: variable units - - *Color tables* - - * variables "pr", "pr-mmday": diag_scripts/lib/ncl/rgb/ ipcc-precip-delta.rgb - -#. clouds_taylor.ncl: cfg_clouds_taylor.ncl - - *Required diag_script_info attributes* - - * grid: grid for regridding (coarsest, finest, ref, 1x1) - * valid_fraction: minimum fraction of valid data points (for creating a mask) - - *Optional diag_scipt_info attributes* - - * calcmm: calculate multi-model mean (True, False) - * models_to_skip: name(s) of data set(s) to be skipped when calculating the multi-model mean (usually all observations) - * embracelegend: False (default) = include legend in plot, max. 2 columns with model names in legend; True = write extra file with legend, max. 7 model names per column in legend, alternative observational dataset(s) will be plotted as a red star and labeled "altern. ref. dataset" in legend (only if dataset is of class "OBS") - * estimate_obs_uncertainty: True = estimate observational uncertainties from mean values (assuming fractions of obs. RMSE from documentation of the obs data); only available for "CERES-EBAF", "MODIS", "MODIS-L3"; False = do not estimate obs. uncertainties from mean values - * mask_ts_sea_ice: True = mask T < 272 K as sea ice (only for variable "ts"); False = no additional grid cells masked for variable "ts" - * styleset: "CMIP5", "DEFAULT" (if not set, CLOUDS_TAYLOR will create a color table and symbols for plotting) - * ref_model: name of reference data set (if this attribute is not set the variable attribute "ref_model" defined in the namelist is used; see below); note: if neither diag_script_info\@ref_model nor the variable attribute ref_model is set, an error message is issued - * timemean: time averaging, i.e. "seasonalclim" (DJF, MAM, JJA, SON), "annualclim" (annual mean) - - *Optional variable attributes (defined in namelist)* - - * ref_model: name of reference data set; note: if diag_script_info\@ref_model is defined, diag_script_info\@ref_model will be used and the variable attribute ref_model will be ignored - - -Variables ---------- - -* clwvi (atmos, monthly mean, longitude latitude time) -* clivi (atmos, monthly mean, longitude latitude time) -* clt (atmos, monthly mean, longitude latitude time) -* pr (atmos, monthly mean, longitude latitude time) -* rlut, rlutcs (atmos, monthly mean, longitude latitude time) -* rsut, rsutcs (atmos, monthly mean, longitude latitude time) - - -Observations and reformat scripts ---------------------------------- - -*Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.* - -* CERES-EBAF (obs4mips) - CERES TOA radiation fluxes (used for calculation of cloud forcing) -* GPCP-SG (obs4mips) - Global Precipitation Climatology Project total precipitation -* MODIS (obs4mips) - MODIS total cloud fraction -* MODIS-CFMIP - MODIS ice water path climatology, originally created for CFMIP, references: King et al. (2003), IEEE Trans. Geosci. Remote Sens.; Pincus et al. (2012), J. Clim. - - *Reformat script:* reformat_scripts/obs/reformat_obs_MODIS-CFMIP.ncl - -* UWisc - University of Wisconsin-Madison liquid water path climatology, based on satellite observbations from TMI, SSM/I, and AMSR-E, reference: O'Dell et al. (2008), J. Clim. - - *Reformat script:* reformat_scripts/obs/reformat_obs_UWisc.ncl - -References ----------- - -* King, M. D., et al. (2003), Cloud and aerosol properties, precipitable water, and profiles of temperature and water vapor from MODIS, IEEE Trans. Geosci. Remote Sens., 41, 442-458, doi: 10.1109/TGRS.2002.808226. - -* Lauer A., and K. Hamilton (2013), Simulating clouds with global climate models: A comparison of CMIP5 results with CMIP3 and satellite data, J. Clim., 26, 3823-3845, doi: 10.1175/JCLI-D-12-00451.1. - -* O’Dell, C. W., F. J. Wentz, and R. Bennartz (2008), Cloud liquid water path from satellite-based passive microwave observations: A new climatology over the global oceans, J. Clim., 21, 1721-1739, doi:10.1175/2007JCLI1958.1. - -* Pincus, R., S. Platnick, S. A. Ackerman, R. S. Hemler, Robert J. Patrick Hofmann (2012), Reconciling simulated and observed views of clouds: MODIS, ISCCP, and the limits of instrument simulators. J. Climate, 25, 4699-4720, doi: 10.1175/JCLI-D-11-00267.1. - - -Example plots -------------- - -.. _fig_cloud_1: -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_liq_h2o_path_multi.png - :align: center - - The 20-yr average LWP (1986-2005) from the CMIP5 historical model runs and the multi-model mean in comparison with the UWisc satellite climatology (1988-2007) based on SSM/I, TMI, and AMSR-E (O'Dell et al. 2008). - -.. _fig_cloud_2: -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_liq_h2o_taylor.png - :align: center - :width: 7cm - - Taylor diagram showing the 20-yr annual average performance of CMIP5 models for total cloud fraction as compared to MODIS satellite observations. - -.. _fig_cloud_3: -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_cloud_sweffect.png - :align: center - :width: 9cm - -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_cloud_lweffect.png - :align: center - :width: 9cm - -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_cloud_neteffect.png - :align: center - :width: 9cm - - 20-year average (1986-2005) annual mean cloud radiative effects of CMIP5 models against the CERES EBAF (2001–2012). Top row shows the shortwave effect; middle row the longwave effect, and bottom row the net effect. Multi-model mean biases against CERES EBAF are shown on the left, whereas the right panels show zonal averages from CERES EBAF (thick black), the individual CMIP5 models (thin gray lines) and the multi-model mean (thick red line). Similar to Figure 9.5 of Flato et al. (2013). - -.. _fig_cloud_4: -.. figure:: /namelists/figures/clouds/figure_namelist_clouds_cloud_var_multi.png - :align: center - - Interannual variability of modeled and observed (GPCP) precipitation rates estimated as relative temporal standard deviation from 20 years (1986-2005) of data. The temporal standard devitions are calculated from monthly anomalies after subtracting the climatological mean seasonal cycle. - diff --git a/doc/sphinx/source/namelists/namelist_crem.rst b/doc/sphinx/source/namelists/namelist_crem.rst deleted file mode 100644 index 8be7faa72b..0000000000 --- a/doc/sphinx/source/namelists/namelist_crem.rst +++ /dev/null @@ -1,69 +0,0 @@ -Cloud Regime Error Metric (CREM) -================================ - -Overview --------- - -The radiative feedback from clouds remains the largest source of uncertainty in determining the climate sensitivity. Traditionally, cloud has been evaluated in terms of its impact on the mean top of atmosphere fluxes. However it is quite possible to achieve good performance on these criteria through compensating errors, with boundary layer clouds being too reflective but having insufficient horizontal coverage being a common example (e.g., Nam et al., 2012). Williams and Webb (2009) (WW09) propose a Cloud Regime Error Metric (CREM) which critically tests the ability of a model to simulate both the relative frequency of occurrence and the radiative properties correctly for a set of cloud regimes determined by the daily mean cloud top pressure, cloud albedo and fractional coverage at each grid-box. WW09 describe in detail how to calculate their metrics and we have included the CREMpd metric from their paper in ESMValTool, with clear references in the lodged code to tables in their paper. This has been applied to those CMIP5 models who have submitted the required diagnostics for their AMIP simulation (see Figure 8 below). As documented by WW09, a perfect score with respect to ISCCP would be zero. WW09 also compared MODIS/ERBE to ISCCP in order to provide an estimate of observational uncertainty. This was found to be 0.96 and this is marked on Figure 8, hence a model with a CREM similar to this value could be considered to have an error comparable with observational uncertainty, although it should be noted that this does not necessarily mean that the model lies within the observations for each regime. A limitation of the metric is that it requires a model to be good enough to simulate each regime. If a model is that poor that the simulated frequency of occurrence of a particular regime is zero, then a NaN will be returned from the code and a bar not plotted on the figure for that model. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_williams09climdyn_CREM.xml - -Diagnostics are stored in diag_scripts/ - -* ww09_ESMValTool.py - - - -User settings -------------- - -None. - - -Variables ---------- - -* albisccp (atmos, daily mean, longitude latitude time) -* cltisccp (atmos, daily mean, longitude latitude time) -* pctisccp (atmos, daily mean, longitude latitude time) -* rlut (atmos, daily mean, longitude latitude time) -* rlutcs (atmos, daily mean, longitude latitude time) -* rsut (atmos, daily mean, longitude latitude time) -* rsutcs (atmos, daily mean, longitude latitude time) -* sic (atmos, daily mean, longitude latitude time) -* snc (atmos, daily mean, longitude latitude time) - -If snc is not available then snw can be used instead. For AMIP simulations, sic is often not submitted as it’s a boundary condition and effectively the same for every model. In this case the same daily sic data set can be used for each model. - -**Note: in case of using sic data from a different model (AMIP), it has to be checked by the user that the calendar definitions of all data sets are compatible, in particular whether leap days are included or not.** - - - -Observations and reformat scripts ---------------------------------- - -All observational data have been pre-processed and included within the routine. These are ISCCP, ISCCP-FD, MODIS, ERBE. No additional observational data are required at runtime. - - - -References ----------- - -* Williams, K.D. and Webb, M.J.: A quantitative performance assessment of cloud regimes in climate models. Clim. Dyn. 33, 141-157, doi: 10.1007/s00382-008-0443-1, 2009. - - -Example plots -------------- - -.. figure:: /namelists/figures/crem/crem_error_metric.png - :width: 10cm - :alt: xxxxx - - Cloud Regime Error Metrics (CREMpd) from William and Webb (2009) applied to those CMIP5 AMIP simulations with the required data in the archive. A perfect score with respect to ISCCP is zero; the dashed red line is an indication of observational uncertainty. - diff --git a/doc/sphinx/source/namelists/namelist_cvdp.rst b/doc/sphinx/source/namelists/namelist_cvdp.rst deleted file mode 100644 index d2badeec14..0000000000 --- a/doc/sphinx/source/namelists/namelist_cvdp.rst +++ /dev/null @@ -1,155 +0,0 @@ -NCAR's Climate Variability Diagnostics Package (CVDP) -===================================================== - -Overview --------- - -**The NCAR CVDP version currently implemented into the ESMValTool is v4.1.** - -The Climate Variability Diagnostics Package (CVDP) developed by NCAR's Climate -Analysis Section (Phillips et al., 2014) has been implemented into the -ESMValTool in order to be able to run it within this framework and alongside -the ESGF on CMIP output. CVDP can be used to evaluate the major modes of -climate variability including ENSO, PDO, AMO, Northern and Southern Annular -Modes (NAM and SAM), North Atlantic Oscillation (NAO), Pacific North and South -American teleconnection patterns (PNA and PSA). In addition it calculates -global trend maps and index time series for the above modes and the North -Pacific Index, the Tropical North Atlantic SST, Tropical South Atlantic SST, -Tropical Indian Ocean SST, Niño1+2, Niño3, and Niño4 times series, and the -Indian Ocean Dipole (IOD). - -CVDP is developed as a standalone tool outside the ESMValTool. Once a new -version of CVDP is released, the ESMValTool will be updated -accordingly. Therefore, the structure of CVDP was kept as is and a wrapper has -been written to be able to run CVDP directly within the ESMValTool. - - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - - * namelist_CVDP.xml - -Diagnostics are stored in diag_scripts/ - -*Wrapper scripts to run CVDP within the framework of the ESMValTool* - - * cvdp_obs.ncl: run for each variable separately with observational data available; renames the ESMValTool output (observations) following the filename conventions of the CVDP and creates the CVDP namelist "namelist_obs". - * cvdp_ocean.ncl: renames the ESMValTool output (ocean variables) following the filename conventions of the CVDP. - * cvdp_atmos.ncl: renames the ESMValTool output (atmosphere variables) following the filename conventions of the CVDP and creates the CVDP namelist "namelist" containing the models. The script then runs the CVDP via a call to the wrapper script cvdp_driver.ncl. - - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_CVDP/ - -#. cvdp_obs.ncl - - *Required diag_script_info attributes* - - * obs_ref: list of reference data sets (observations) (array) - -#. cvdp_driver.ncl (called by cvdp_atmos.ncl) - - *The wrapper script cvdp_driver.ncl sets the user options for the CVDP.* - - - -Variables ---------- - - * ts (atmos, monthly mean, longitude latitude time) - * psl (atmos, monthly mean, longitude latitude time) - * tas (atmos, monthly mean, longitude latitude time) - * pr (atmos, monthly mean, longitude latitude time) - * msftmyz (ocean, monthly mean, latitude level basin time) - - - -Observations and Reformat Scripts ---------------------------------- - -**Note:** (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - - - * Sea Surface Temperature (SST): HadISST (1870 - 2005) - - *Reformat script:* reformat_scripts/obs/reformat_obs_HadISST.ncl - - * Sea Level Pressure (PSL): ERA-Interim/IFS-Cy31r2 (1979 - 2013) - - *Reformat script:* reformat_scripts/obs/reformat_obs_ERA-Interim.ncl - - * 2m Air Temperature (TAS): NCEP (1979 - 2005) - - *Reformat script:* reformat_scripts/obs/reformat_obs_NCEP.ncl - - * Precipitation (PR): GPCP-SG (1979 - 2005) (obs4mips) - - - -References ----------- - -* Danabasoglu, G., S. G. Yeager, Y. -O. Kwon, J. J. Tribbia, A. S. Phillips, and J. W. Hurrell, 2012. Variability of the Atlantic Meridional Overturning Circulation in CCSM4. J. Climate, 25, 5153-5172, doi: 10.1175/JCLI-D-11-00463.1 (AMOC). - -* Deser, C., M. A. Alexander, S. -P. Xie, and A. S. Phillips, 2010: Sea surface temperature variability: patterns and mechanisms. Ann. Rev. Mar. Sci., 2010.2, 115-143, doi: 10.1146/annurev-marine-120408-151453 (PDO). - - -* Deser, C., A. S. Phillips, R. A. Tomas, Y. Okumura, M. A. Alexander, A. Capotondi, J. D. Scott, Y. -O. Kwon, and M. Ohba, 2012: ENSO and Pacific Decadal Variability in Community Climate System Model Version 4. J. Climate, 25, 2622-2651, doi: 10.1175/JCLI-D-11-00301.1 (ENSO Spatial Composites). - -* Hurrell, J. W., and C. Deser, 2009: North Atlantic climate variability: The role of the North Atlantic Oscillation. J. Mar. Syst., 78, 28-41, doi 10.1016/j.jmarsys.2008.11.026 (NAO). - -* Mantua, N. J., S. R. Hare, Y. Zhang, J. M. Wallace, and R. Francis, 1997: A Pacific interdecadal climate oscillation with impacts on salmon production. Bull. Amer. Met. Soc., 1069-1079 (PDO). - -* Phillips, A. S., Deser, C., and Fasullo, J.: Evaluating Modes of Variability in Climate Models, Eos Trans. AGU, 95(49), 453-455, 2014 (Overview Paper of Climate Variability Diagnostics Package). - -* Thompson, D. W. J. and J.M. Wallace, 2000: Annular modes in the extratropical circulation. Part I: Month-to-month variability. J. Climate, 13, 1000-1016 (NAM). - -* Trenberth, K. E., and D. J. Shea, 2006: Atlantic hurricanes and natural variability in 2005, Geophys. Res. Lett., 33, L12704, doi: 10.1029/2006GL026894 (AMO). - - - -.. raw:: latex - - \newpage - - -Example plots -------------- - -.. fig_cvdp_1: -.. figure:: /namelists/figures/cvdp/figure_namelists_cvdp_EOF-SST-NorthPacific.png - :align: center - :width: 90% - - The leading empirical orthogonal function (EOF) of monthly sea surface temperature (SST) anomalies over the North Pacific (after removing the global mean SST anomaly) based on the HadISST observational data set (top left) during 1900-2005, and (remaining panels) several model simulations of the Coupled Model Intercomparison Project Phase 5 (CMIP5), for the models MIROC4h and CanCM4 during 1960-2005. - - -.. fig_cvdp_2: -.. figure:: /namelists/figures/cvdp/figure_namelists_cvdp_Nino34-Index.png - :align: center - :width: 100% - - The weighted area average of monthly SST anomalies in the region 5°S-5°N, 190°-240°E also known as the "Niño-3.4 Index" (Trenberth et al., 2002) based on the HadISST observational data set (top left) for the period 1900-2005, and (remaining panels) several model simulations of the Coupled Model Intercomparison Project Phase 5 (CMIP5), for the models MIROC4h and CanCM4 during 1960-2005. The red/blue shading on the Niño3.4 time series denotes positive/negative deviations from the best-fit linear trend line. - - -.. fig_cvdp_3: -.. figure:: /namelists/figures/cvdp/figure_namelists_cvdp_LaNina-Composite.png - :align: center - :width: 80% - - Longitude-latitude sections of composite SST anomalies along the equator (3°N-3°S) for La Niña based on the HadISST oberservational data set (top left) for the period 1900-2005, and (remaining panels) several model simulations of the Coupled Model Intercomparison Project Phase 5 (CMIP5), for the models MIROC4h and CanCM4 during 1960-2005. The number at the top right of each panel indicates the number of events used for the composite. - - -.. fig_cvdp_4: -.. figure:: /namelists/figures/cvdp/figure_namelists_cvdp_AMO-Monthly.png - :align: center - :width: 80% - - The power spectrum as a function of frequency in cycle per month of the Niño-3.4 SST index for the HadISST observational data set (top left) for the period 1900-2005, and (remaining panels) several model simulations of the Coupled Model Intercomparison Project Phase 5 (CMIP5), for the models MIROC4h and CanCM4 during 1960-2005. The black line denotes the spectrum. The red line indicates the best-fit first-order Markov red noise spectrum, the blue line its 95% and the green line its 99% confidence bounds. The observational spectrum is overlaid in gray on each model spectrum if available. - diff --git a/doc/sphinx/source/namelists/namelist_diurnal.rst b/doc/sphinx/source/namelists/namelist_diurnal.rst deleted file mode 100644 index 88d838a9b6..0000000000 --- a/doc/sphinx/source/namelists/namelist_diurnal.rst +++ /dev/null @@ -1,126 +0,0 @@ -Diurnal cycle of convection -=========================== - -Overview --------- - -The diurnal cycle of precipitation and radiative fluxes is closely related to the representation of boundary-layer turbulence and cumulus clouds, as well as to the triggering criteria of the deep convection scheme, which will give the onset of precipitation, and its closure, which in turn determines its intensity and duration. Associated clouds will have a different radiative impact given their timing of occurrence within the day. Thus, the evaluation of the representation of the diurnal cycle of precipitation and radiative fluxes gives interesting insights into the progress achieved in the design and setup of physical parameterizations. - -This diagnostic evaluates the representation of the diurnal cycle of precipitation over specific regions in the Tropics. The diurnal cycle is known to be different over land and ocean. Over land, the semi-arid Sahel region is contrasted with humid regions (Amazonia) as well as with the two monsoon regions West-Africa and India. Over the ocean, the diagnostic focuses on the Gulf of Guinea, the Indian Ocean and the East and West Equatorial Pacific. A harmonic analysis is done to provide global maps of the timing and amplitude of maximum rainfall with 3-hourly TRMM observations used as a reference. - -Optionally, the analysis can be extended to include the diurnal cycle of radiative fluxes at the top of the atmosphere and at the surface (LW and SW, total and clear-sky components). 3-hourly CERES data are used as a reference derived from measurements at the top of the atmosphere and computed using a radiative transfer model at the surface. - - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_DiurnalCycle_box_pr.xml -* namelist_DiurnalCycle_box_SFCflux.xml -* namelist_DiurnalCycle_box_TOAflux.xml -* namelist_DiurnalCycle_harmonic.xml - -Diagnostics are stored in diag_scripts/ - -The following diagnostic script is called by namelist_DiurnalCycle_harmonic.xml: - -* DiurnalCycle_precip_harmonic.ncl: computes the amplitude, phase and percentage of the variance of the first harmonic of the mean diurnal cycle of precipitation by season over the globe. 3-hr mean precipitation outputs are used and interpolated onto a common 2.5°x2.5° grid. - -The following diagnostic script is called by namelist_DiurnalCycle_box_pr.xml, namelist_DiurnalCycle_box_SFCflux.xml, namelist_DiurnalCycle_box_TOAflux.xml: - -* DiurnalCycle_box.ncl: computes the mean diurnal cycle of precipitation and available radiative fluxes over specific regions and seasons. Regions include Sahel (Sahel, 12°N-23°N, 10°E-10°W), West-Africa (WestAf, 4°N-10°N, 8°E-8°W), Gulf of Guinea (GoG, 2°S-4°N, 8°E-8W), Amazonia (Amazon, 15°S-0°, 70°W-50°W), India (India, 12°N-20°N, 75°E-80°E), Indian Ocean (IO, 10°S-5°N, 70°E-90°E), East-Equatorial Pacific (EEP, 0°-10°N, 110°W-90°W) and West-Equatorial Pacific (WEP, 0°-20°N, 130°E-150°E). Seasons include DJF, MAM, JJA and SON. - - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_DiurnalCycle/ - -1. namelist_DiurnalCycle_harmonic.xml - - *Required diag_script_info attributes* - - * season: season (DJF, MAM, JJA, SON) - * destgrid: common grid for interpolation ("2.5x2.5") - * latrange_basic: latitude range of box - * lonrange_basic: longitude range of box - * cn_levels_amplitude_basic: contour levels for amplitude plots - * cn_levels_phase_basic: contour levels for phase plots - * cn_levels_var_basic: contour levels for percentage of variance - * styleset: "CMIP5", "DEFAULT" - * my_region: label for region - -2. namelist_DiurnalCycle_box_pr.xml, namelist_DiurnalCycle_box_SFCflux.xml, namelist_DiurnalCycle_box_TOAflux.xml - - *Required diag_script_info attributes* - - * season: season (DJF, MAM, JJA, SON) - * latrange: latitude range of box - * lonrange: longitude range of box - * styleset: "CMIP5", "DEFAULT" - * box: label for region - * multi_model_mean: calculate multi-model mean ("y", "n") - * supporting_gridlines: display supporting gridline ("y", "n") - * x_gridlines: display gridline along x-axis ("y", "n") - * y_gridlines: display gridline along y-axis ("y", "n") - - -Variables ---------- - -* pr (atmos, 3hr mean, longitude latitude time) -* rsds (atmos, 3hr mean, longitude latitude time) -* rsdscs (atmos, 3hr mean, longitude latitude time) -* rlds (atmos, 3hr mean, longitude latitude time) -* rldscs (atmos, 3hr mean, longitude latitude time) -* rsus (atmos, 3hr mean, longitude latitude time) -* rsuscs (atmos, 3hr mean, longitude latitude time) -* rlus (atmos, 3hr mean, longitude latitude time) -* rlut (atmos, 3hr mean, longitude latitude time) -* rlutcs (atmos, 3hr mean, longitude latitude time) -* rsut (atmos, 3hr mean, longitude latitude time) -* rsutcs (atmos, 3hr mean, longitude latitude time) - - - -Observations and reformat scripts ---------------------------------- - -Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* TRMM-3B42, 3-hr, 0.25°x0.25°: pr (obs4mips) -* CERES-SYN1deg, 3-hr, 1°x1°: rsds, rsdscs, rlds, rldscs, rsus, rsuscs, rlus, rsut, rsutcs, rlut, rlutcs - -Reformat scripts: reformat_scripts/obs/reformat_obs_CERES-SYN1deg-SFC.bash, -reformat_scripts/obs/reformat_obs_CERES-SYN1deg-TOA.bash - -References ----------- - -None. - - -Example plots -------------- - -.. figure:: /namelists/figures/diurnal/fig1.png - :width: 90% - -.. figure:: /namelists/figures/diurnal/fig2.png - :width: 90% - -.. figure:: /namelists/figures/diurnal/fig3.png - :width: 90% - - -.. centered:: |pic_diurnal_1| |pic_diurnal_2| - -.. |pic_diurnal_1| image:: /namelists/figures/diurnal/fig4.png - :width: 45% - -.. |pic_diurnal_2| image:: /namelists/figures/diurnal/fig5.png - :width: 45% - diff --git a/doc/sphinx/source/namelists/namelist_esacci.rst b/doc/sphinx/source/namelists/namelist_esacci.rst deleted file mode 100644 index 4fa6c26d11..0000000000 --- a/doc/sphinx/source/namelists/namelist_esacci.rst +++ /dev/null @@ -1,282 +0,0 @@ -ESA CCI -======= - -Overview --------- - -Namelist for creating the 20 figures from Lauer et al. (2017) using the European Space Agency’s Climate Change Initiative (ESA CCI) data sets for sea surface temperature, sea ice, cloud, soil moisture, land cover, aerosol, ozone, and greenhouse gases (CO\ :sub:`2`\). -This namelist demonstrates the value of the ESA CCI data for model evaluation providing an overview on the possible applications of the new data to evaluating CMIP models. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - - * namelist_lauer17rse.xml - -Diagnostics are stored in diag_scripts/ - - * aerosol_stations.ncl: comparison of ESA CCI aerosol with AeroNet and MODIS - * clouds.ncl: global maps of (multi-year) annual means including multi-model mean - * clouds_interannual.ncl: global maps of interannual variability of cloud properties - * clouds_ipcc.ncl: maps of multi-model mean bias and zonal averages - * clouds_taylor.ncl: taylor diagrams - * eyring13jgr_fig01.ncl: calculates seasonal cycles of zonally averaged total ozone columns. - * eyring13jgr_fig02.ncl: time series of area-weighted total ozone from 1960-2005 for the annual mean averaged over the global domain (90°S-90°N), Tropics (25°S-25°N), northern mid-latitudes (35°N-60°N), southern mid-latitudes (35°S-60°S), and the March and October mean averaged over the Arctic (60°N-90°N) and the Antarctic (60°S-90°S). - * eyring13jgr_fig04.ncl: climatological annual mean tropospheric ozone columns (geographical distribution). - * lc_ESACCI.py: ESA CCI land cover diagnostics including global maps of grass and cropland cover and of forest and shrub cover - * perfmetrics_grading.ncl: calculates grades according to a given metric with different options for normalization. It requires fields precalculated by perfmetrics_main.ncl (see :ref:`nml_perfmetrics`). - * perfmetrics_grading_collect.ncl: collects results from metrics previously calculated by perfmetrics_grading.ncl and passes them to the plotting functions (see :ref:`nml_perfmetrics`). - * perfmetrics_main.ncl: calculates and (optionally) plots annual/seasonal cycles, zonal means, lat-lon fields and time-lat-lon fields from input monthly 2-d or 3-d ("T2M", "T3Ms") data. The calculated fields can be also plotted as difference w.r.t. a given reference model. They are also used as input to calculate grading metrics (see perfmetrics_grading.ncl) (see :ref:`nml_perfmetrics`). - * SeaIce_polcon.ncl: polar stereographic plots of sea ice concentration (= sea ice area fraction) and extent (grid cells with a sea ice concentration of at least 15%) for individual models or observational data sets, for Arctic and Antarctic regions with flexible paneling of the individual plots. The edges of sea ice extent can be highlighted via an optional red line. - * SeaIce_polcon_diff.ncl: polar stereographic plots of sea ice area concentration difference between individual models and reference data (e.g., an observational data set) for both Arctic and Antarctic with flexible paneling of the individual plots. All data are regridded to a common grid (1°x1°) before comparison. - * SeaIce_tsline.ncl: time series line plots of total sea ice area and extent (accumulated) for northern and southern hemispheres with optional multi-model mean and standard deviation. One value is used per model per year, either annual mean or the mean value of a selected month. - * sm_ESACCI.py: ESA CCI soil moisture diagnostics including global maps of temporal trend in soil moisture and percentile maps for soil moisture - * sst_ESACCI.py: ESA CCI SST diagnostics including global maps of absolute and relative SST bias and time series of mean SST for different ocean basins - * tsline.ncl: time line plots of annual means for spatial averages - * vpline.ncl: produces vertical profiles according to Eyring et al. (2006) Figure 5 upper panels following eyring06jgr_fig05.ncl. - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_lauer17rse/ - - * cfg_aerosol_stations_AERONET.ncl - * cfg_carbon_line_3030.ncl - * cfg_carbon_line_3060.ncl - * cfg_carbon_line_6030.ncl - * cfg_carbon_line_h.ncl - * cfg_clouds_err.ncl - * cfg_clouds_interannual_esa.ncl - * cfg_clouds_ipcc.ncl - * cfg_clouds.ncl - * cfg_clouds_taylor_esa.ncl - * cfg_clouds_taylor_esa-sic.ncl - * cfg_dummy.conf - * cfg_esacci_vpline.ncl - * cfg_eyring13jgr_fig01.ncl - * cfg_eyring13jgr_fig01_NIWA.ncl - * cfg_eyring13jgr_fig02.ncl - * cfg_eyring13jgr_fig04.ncl - * cfg_lc_ESACCI.py - * cfg_perfmetrics_grading_collect.ncl - * cfg_perfmetrics_grading_RMSD_200_glob.ncl - * cfg_perfmetrics_grading_RMSD_400_glob.ncl - * cfg_perfmetrics_grading_RMSD_500_glob.ncl - * cfg_perfmetrics_grading_RMSD_850_glob.ncl - * cfg_perfmetrics_grading_RMSD_all_glob_aero.ncl - * cfg_perfmetrics_grading_RMSD_all_glob.ncl - * cfg_perfmetrics_grading_RMSD_all_glob_sm.ncl - * cfg_perfmetrics_grading_RMSD_all_glob_toz.ncl - * cfg_perfmetrics_grading_RMSD_all_glob_ts.ncl - * cfg_perfmetrics_grading_RMSD_all_glob_xco2.ncl - * cfg_perfmetrics_grading_RMSD_all_NHpolar_sic.ncl - * cfg_perfmetrics_grading_RMSD_all_SHpolar_sic.ncl - * cfg_perfmetrics_grading_RMSD_all_SHpolar_toz.ncl - * cfg_perfmetrics_latlon_annualclim_all_glob_aerosol.ncl - * cfg_perfmetrics_latlon_annualclim_all_glob.ncl - * cfg_SeaIce_NH.ncl - * cfg_SeaIce_SH.ncl - * cfg_sm_ESACCI.py - * cfg_sst_ESACCI_fig3.py - * cfg_sst_ESACCI_fig4.py - - -Variables ---------- - -* abs550aer -* clt, cltStderr -* grassNcropFrac -* hus -* LW_CRE -* od550aer, od550aerStderr -* od550lt1aer -* od870aer, od870aerStderr -* pr -* rlut, rsut -* shrubNtreeFrac -* sic -* sm, smStderr -* SW_CRE -* ta -* tas -* tos -* toz, tozStderr -* tro3prof -* ts, tsStderr -* ua, va -* xco2, xco2Stderr -* zg - - -Observations and reformat scripts ---------------------------------- - -*Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.* - - * AIRS (hus): obs4mips - * BDBP (tro3prof): reformat_scripts/obs/reformat_obs_BDBP.ncl - * CERES-EBAF (LW_CRE, rlut, rsut, SW_CRE): obs4mips - * CLARA-A2 (clt): *contact ESMValtool development team* - * ERA-Interim (hus, ta, tas, ua, va, zg): reformat_scripts/obs/reformat_obs_ERA-Interim.ncl, reformat_scripts/obs/reformat_obs_ERA-Interim_surffluxes.ncl - * ESACCI-AEROSOL (abs550aer, od550aer, od550aerStderr, od550lt1aer, od870aer, od870aerStder): reformat_scripts/obs/reformat_obs_ESACCI-AEROSOL.ncl - * ESACCI-CLOUD (clt, cltStderr): reformat_scripts/obs/reformat_obs_ESACCI-CLOUD.ncl - * ESACCI-GHG (xco2, xco2Stderr): reformat_scripts/obs/reformat_obs_ESACCI-GHG.csh - * ESACCI-LANDCOVER (grassNcropFrac, shrubNtreeFrac): reformat_scripts/obs/reformat_obs_ESACCI-LANDCOVER.py - * ESACCI-OZONE (toz, tozStderr, tro3prof): reformat_scripts/obs/reformat_obs_ESACCI-OZONE.ncl, reformat_scripts/obs/reformat_obs_ESACCI-OZONE_LP.ncl - * ESACCI-SIC (sic): reformat_scripts/obs/reformat_obs_ESACCI-sic.ncl - * ESACCI-SOILMOISTURE (sm, smStderr): reformat_scripts/obs/reformat_obs_ESACCI-SOILMOISTURE.ncl - * ESACCI-SST (tos, ts, tsStderr): reformat_scripts/obs/reformat_obs_ESACCI-SST.ncl - * GPCP-SG (pr): obs4mips - * HadISST (ts): reformat_scripts/obs/reformat_obs_HadISST.ncl - * MODIS-L3-C6 (clt, od550aer): reformat_scripts/obs/reformat_obs_MODIS-L3-C6.ncl - * NCEP (ta, tas, ua, va, zg): reformat_scripts/obs/reformat_obs_NCEP.ncl - * NIWA (toz): reformat_scripts/obs/reformat_obs_NIWA.ncl - * NSIDC-NT (sic): reformat_scripts/obs/reformat_obs_NSIDC.ncl - * PATMOS (clt): *contact ESMValtool development team* - - -References ----------- - -* Lauer, A., V. Eyring, M. Righi, M. Buchwitz, P. Defourny, M. Evaldsson, P. Friedlingstein, R. de Jeuf, G. de Leeuw, A. Loew, C. J. Merchant, B. Müller, T. Popp, M. Reuter, S. Sandven, D. Senftleben, M. Stengel, M. Van Roozendael, S. Wenzel, and U. Willén: Benchmarking CMIP5 models with a subset of ESA CCI Phase 2 data using the ESMValTool, Remote Sensing of Environment, https://doi.org/10.1016/j.rse.2017.01.007, 2017. - - -Example plots -------------- - -.. _fig_esacci_1: -.. figure:: /namelists/figures/esacci/Lauer17_fig01.png - :align: center - :width: 14cm - - Relative space-time root-mean-square deviation (RMSD) calculated from the climatological seasonal cycle of the CMIP5 simulations (Lauer et al. 2017, Fig. 1). - -.. _fig_esacci_2: -.. figure:: /namelists/figures/esacci/Lauer17_fig02.png - :align: center - - Extended Taylor diagrams showing the multi-year annual average performance of CMIP5 models in comparison with ESA CCI data (Lauer et al. 2017, Fig. 2). - -.. _fig_esacci_3: -.. figure:: /namelists/figures/esacci/Lauer17_fig03.png - :align: center - :width: 14cm - - Temporal means of SST in K for the ESA CCI data set (top right) and the CMIP5 model MPI-ESM (top left) as well as absolute (bottom left) and relative differences (bottom right) (Lauer et al. 2017, Fig. 3). - -.. _fig_esacci_4: -.. figure:: /namelists/figures/esacci/Lauer17_fig04.png - :align: center - :width: 11cm - - Time series of SST for different ocean basins from 7 CMIP5 models compared with the ESA CCI SST data (Lauer et al. 2017, Fig. 4). - -.. _fig_esacci_5: -.. figure:: /namelists/figures/esacci/Lauer17_fig05.png - :align: center - :width: 10cm - - Evolution (1960-2020) of September Arctic sea ice extent in million km\ :sup:`2`\ from the CMIP5 models (colored lines) and from observations (thick black lines) (Lauer et al. 2017, Fig. 5). - -.. _fig_esacci_6: -.. figure:: /namelists/figures/esacci/Lauer17_fig06.png - :align: center - :width: 12cm - - Polar-stereographic map of Arctic September (upper row) and Antarctic March (lower row) sea ice concentration from ESA CCI SI SSM/I (left column) and NSIDC-NT (middle column) observations averaged over the years 1992-2008. The right column depicts the differences between the CMIP5 multi-model mean and the ESA CCI SI SSM/I observations averaged over the years 1992-2005 (Lauer et al. 2017, Fig. 6). - -.. _fig_esacci_7 -.. figure:: /namelists/figures/esacci/Lauer17_fig07.png - :align: center - - Maps of the multi-years seasonal mean of total cloud cover, 1-sigma uncertainty from ESA CCI cloud, the differences between the ESA CCI data and the CMIP5 multi-model mean, and zonal means (Lauer et al. 2017, Fig. 7). - -.. _fig_esacci_8 -.. figure:: /namelists/figures/esacci/Lauer17_fig08.png - :align: center - - Interannual variability in total cloud cover estimate from relative temporal standard deviation of the deseasonalized monthly means time series from 1982 to 2014 (Lauer et al. 2017, Fig. 8). - -.. _fig_esacci_9: -.. figure:: /namelists/figures/esacci/Lauer17_fig09.png - :align: center - - Temporal mean fields of volumetric soil moisture from the CNRM-CM5 model (top left), the ESA CCI soil moisture data set (top right) as well as their absolute (bottom left) and relative differenecs (bottom right) (Lauer et al. 2017, Fig. 9). - -.. _fig_esacci_10: -.. figure:: /namelists/figures/esacci/Lauer17_fig10.png - :align: center - - Temporal trend in soil moisture over the period 1988-2008 as derived from the CNRM-CM5 model (left) and the ESA CCI soil moisture data sets (right) (Lauer et al. 2017, Fig. 10). - -.. _fig_esacci_11: -.. figure:: /namelists/figures/esacci/Lauer17_fig11.png - :align: center - :width: 11cm - - Percentile maps for ESA CCI soil moisture (left column) and soil moisture from CNRM-CM5 (right column) (Lauer et al. 2017, Fig. 11). - -.. _fig_esacci_12: -.. figure:: /namelists/figures/esacci/Lauer17_fig12.png - :align: center - :width: 11cm - - Area fraction (%) of forest and shrub cover in the MPI-ESM-MR model (top left) and the ESA CCI land cover data set (top right) and absolute (bottom left) and relative differences (bottom right) (Lauer et al. 2017, Fig. 12). - -.. _fig_esacci_13: -.. figure:: /namelists/figures/esacci/Lauer17_fig14.png - :align: center - :width: 14cm - - Climatological mean AOD (left column), fine mode optical depth (middle) and absorption optical depth (right column) at 550 nm averaged over the period 1997-2011. The first row shows the the observations (ESA CCI ATSR SU v4.21), the other rows the differences between selected CMIP5 models with interactive aerosols and the ESA CCI data (Lauer et al. 2017, Fig. 14). - -.. _fig_esacci_14: -.. figure:: /namelists/figures/esacci/Lauer17_fig15.png - :align: center - :width: 12cm - - Comparison of AOD at 550 nm from the ESA CCI ATSR SU v4.21 and the MODIS Terra C6 satellite products against the AERONET ground-based measurements for the period 2003-2011. The top row shows the AERONET values as open circles plotted on top of the satellite data averaged over the same time period. The bottom row shows scatter plots of spatially and temporally collocated measurements on a monthly-mean basis (Lauer et al. 2017, Fig. 15). - -.. _fig_esacci_15: -.. figure:: /namelists/figures/esacci/Lauer17_fig16.png - :align: center - :width: 12cm - - Time series of area-weighted total column ozone from 1960 to 2010 for a) global annual mean (90°S-90°N) and b) Antarctic October mean (60°S-90°S). The figure shows the multi-model mean (black line) and standard deviation (gray shading) as well as individual CMIP5 models with interactive chemistry (colored lines) compared with ESA CCI (filled circles) and NIWA (open triangles) data (Lauer et al. 2017, Fig. 16). - -.. _fig_esacci_16: -.. figure:: /namelists/figures/esacci/Lauer17_fig17.png - :align: center - :width: 14cm - - Vertical ozone profile climatologies (2007-2008) at a) 80°N in March, b) the equator in March, and c) at 80°S in October from individual CMIP5 models with interactive chemistry (colored lines) and the ESA CCI ozone data set (solid black line). The multi-model mean (MMM) is shown as a red solid line with one standard deviation of the inter-model spread shown as the light-blue shaded area (Lauer et al. 2017, Fig. 17). - -.. _fig_esacci_17: -.. figure:: /namelists/figures/esacci/Lauer17_fig18.png - :align: center - :width: 12cm - - Total column ozone climatologies (1997-2010) for (upper row, from left to right) the multi-model mean of CMIP5 models with interactive chemistry, the ESA CCI ozone data set, and the differences between the CMIP5 multi-model mean and the ESA CCI ozone data. The lower row shows the same plots but for the NIWA combined total column ozone data (Lauer et al. 2017, Fig. 18). - -.. raw:: latex - - \clearpage - -.. _fig_esacci_18: -.. figure:: /namelists/figures/esacci/Lauer17_fig19.png - :align: center - :width: 13cm - - Time series of column averaged carbon dioxide (XCO\ :sub:`2`\) from 2003 to 2014 from the CMIP5 emission driven simulations for the historical period (2003 to 2005) extended with RCP8.5 simulations (from 2006 to 2014) in comparison with the ESA CCI GHG XCO\ :sub:`2` data (Lauer et al. 2017, Fig. 19). - -.. _fig_esacci_19: -.. figure:: /namelists/figures/esacci/Lauer17_fig20.png - :align: center - :width: 14cm - - Annual mean XCO\ :sub:`2` climatologies averaged over the years 2003-2008 (top row) and over the years 2009-2014 (bottom row). Shown are deviations from the global annual mean (printed in the right above each panel) for (left) the CMIP5 multi-model mean and (middle) ESA CCI XCO\ :sub:`2`\. The right panels show the absolute differences between the CMIP5 multi-model mean and ESA CCI XCO\ :sub:`2` data (Lauer et al. 2017, Fig. 20). - diff --git a/doc/sphinx/source/namelists/namelist_evapotranspiration.rst b/doc/sphinx/source/namelists/namelist_evapotranspiration.rst deleted file mode 100644 index 9246ec4ec1..0000000000 --- a/doc/sphinx/source/namelists/namelist_evapotranspiration.rst +++ /dev/null @@ -1,99 +0,0 @@ -Evapotranspiration -================== - -Overview --------- - -This diagnostic produces monthly climatologies of evapotranspiration on a -global scale. The model outputs are compared to the LandFlux-EVAL data set -(Mueller et al., 2013), which is used as reference product for -evapotranspiration. An example of application of this diagnostic on CMIP5 -models is presented in Mueller and Seneviratne (2014). - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_Evapotranspiration.xml - -Diagnostics are stored in diag_scripts/ - -* Evapotranspiration.ncl - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_et/ - -* Evapotranspiration.ncl - -*Required diag_script_info attributes* - -* et_colormap: filename of color table -* cn_levels_mean_basic: contour levels of absolute values (array) -* cn_levels_mean_diff_basic: contour levels of differences -* sftlf_cutoff: threshold for land sea mask (> 50 land grid cell) - -*Color tables* - -* diag_scripts/aux/Evapotranspiration/absolute_evapotranspiration.rgb - - - -Variables ---------- - -* hfls (atmos, monthly mean, longitude latitude time) - - - -Observations and deformat scripts ---------------------------------- - -*Note:* see also header of reformat script for downloading instructions. - -* The LandFlux-EVAL data set - (http://www.iac.ethz.ch/groups/seneviratne/research/LandFlux-EVAL). - The data set is document in Mueller et al (2013). Download data at the - above link, then follow the instructions in the reformat script available - in the repository. The data set is free to use after registration but may - not be redistributed. - - Reformat script: reformat_scripts/obs/reformat_obs_LandFlux-EVAL.ncl - - - - -References ----------- - -* Mueller, B., and S. I. Seneviratne (2014), Systematic land climate and - evapotranspiration biases in CMIP5 simulations, Geophys. Res. Lett., - 41, 128-134, doi: 10.1002/2013GL058055. - -* Mueller, B., Hirschi, M., Jimenez, C., Ciais, P., Dirmeyer, P. A., Dolman, - A. J., Fisher, J. B., Jung, M., Ludwig, F., Maignan, F., Miralles, D. G., - McCabe, M. F., Reichstein, M., Sheffield, J., Wang, K., Wood, E. F., Zhang, - Y., and Seneviratne, S. I. (2013), Benchmark products for land - evapotranspiration: LandFlux-EVAL multi-data set synthesis, Hydrol. - Earth Syst. Sci., 17, 3707-3720, doi: 10.5194/hess-17-3707-2013. - - -Example plots -------------- - -.. figure:: /namelists/figures/evapotranspiration/fig_evapo_1.png - :align: center - :width: 70% - -.. figure:: /namelists/figures/evapotranspiration/fig_evapo_2.png - :align: center - :width: 70% - -.. figure:: /namelists/figures/evapotranspiration/fig_evapo_3.png - :align: center - :width: 50% - diff --git a/doc/sphinx/source/namelists/namelist_ipccar5_ch9.rst b/doc/sphinx/source/namelists/namelist_ipccar5_ch9.rst deleted file mode 100644 index 18278cea12..0000000000 --- a/doc/sphinx/source/namelists/namelist_ipccar5_ch9.rst +++ /dev/null @@ -1,247 +0,0 @@ -IPCC AR5 Chapter 9 -================== - -Overview --------- - -The goal of this effort is to code up routines to reproduce Chapter 9 of AR5, so that the plots can be readily reproduced and compared to previous CMIP versions. In this way we can next time start with what was available in the previous round and can focus on developing more innovative methods of analysis rather than constantly having to "re-invent the wheel". - -The plots will be done based on a collection of individual namelists. The following figures from Flato et al. (2013) can currently be reproduced: - -* Figure 9.2 a,b,c: Annual-mean surface air temperature for the period 1980-2005. a) multi-model mean, b) bias as the difference between the CMIP5 multi-model mean and the climatology from ERA-Interim (Dee et al., 2011), c) mean absolute model error with respect to the climatology from ERA-Interim. - -* Figure 9.4: Annual-mean precipitation rate (mm day\ :sup:`-1`) for the period 1980-2005. a) multi-model mean, b) bias as the difference between the CMIP5 multi-model mean and the climatology from the Global Precipitation Climatology Project (Adler et al., 2003), c) difference between the multi-model mean and the ECMWF reanalysis of the seasonality, and d) difference between the multi-model mean and the ERA-Interim absolute seasonality. - -* Figure 9.5: Climatological (1985-2005) annual-mean cloud radiative effects in Wm\ :sup:`-2` for the CMIP5 models against CERES EBAF (2001-2011) in Wm\ :sup:`-2`. Top row shows the shortwave effect; middle row the longwave effect, and bottom row the net effect. Multi-model-mean biases against CERES EBAF 2.6 are shown on the left, whereas the right panels show zonal averages from CERES EBAF 2.6 (black), the individual CMIP5 models (thin gray lines), and the multi-model mean (thick red line). - -* Figure 9.7: Relative space-time root-mean square error (RMSE) calculated from the 1980-2005 climatological seasonal cycle of the CMIP5 historical simulations. A relative performance is displayed, with blue shading indicating performance being better and red shading worse, than the median of all model results. A diagonal split of a grid square shows the relative error with respect to the reference data set (lower right triangle) and the alternate data set (upper left triangle). White boxes are used when data is not available for the given model and variable or no alternate data set has been used. The figure shows that performance varies across CMIP5 models and variables, with some models comparing better with observations for one variable and another model performing better for a different variable. - -* Figure 9.8: Observed and simulated time series of the anomalies in annual and global mean surface temperature. All anomalies are differences from the 1961-1990 time-mean of each individual time series. The reference period 1961-1990 is indicated by yellow shading; vertical dashed grey lines represent times of major volcanic eruptions. Single simulations for CMIP5 models (thin lines); multi-model mean (thick red line); different observations (thick black lines). - -* Figure 9.10: Total column ozone time series for (a) annual global and (b) Antarctic October mean. CMIP5 models are shown in colored lines and the multi-model mean in thick black, their standard deviation as gray shaded area, and observations (NIWA) (black symbols). - -* Figure 9.24 a,b: Time series (1960-2005) of (a) September mean Arctic and (b) February mean Antarctic sea ice extent from the CMIP5 historical simulations. The CMIP5 ensemble mean is highlighted in dark red and the individual ensemble members of each model (colored lines) are shown in different line styles. The model results are compared to observations from the NSIDC (1978-2011, black solid line) and the Hadley Centre Sea ice and Sea Surface Temperature (HadISST, 1978-2011, black dashed line). - -* Figure 9.28: Multi-year average aerosol optical depth (AOD) in comparison with satellite data. - -* Figure 9.29: Time series of global oceanic mean aerosol optical depth (AOD) from individual CMIP5 models historical (1850-2005) and RCP 4.5 (2006-2010) simulations compared with MODIS and ESACCI-AEROSOL satellite data. - -* Figure 9.30: Composite diurnal cycle of precipitation averaged over land / ocean for different latitude bands / seasons (June-July-August (JJA), December-January-February (DJF), or their sum) at local time. - -* Figure 9.31: (a, b) The two leading Empirical Orthogonal Functions (EOFs) of outgoing longwave radiation (OLR). The 20- to 100-day filtered OLR from observations and each of the CMIP5 historical simulations is projected on these two leading EOFs to obtain MJO Principal Component time series. The scatterplot (c) shows the maximum positive correlation between the resulting MJO Principal Components and the time lag at which it occurred for all winters (November to March). The maximum positive correlation is an indication of the coherence with which the MJO convection propagates from the Indian Ocean to the Maritime Continent/western Pacific, and the time lag is approximately one fourth of the period of the MJO. - -* Figure 9.32: Monsoon precipitation intensity (upper panels) and monsoon precipitation domain (lower panels) for TRMM and an example of deviations from observations from three CMIP5 models (EC-Earth, HadGEM2-ES, and GFDL-ESM2M). - -* Figure 9.35: Maximum entropy power spectra of surface air temperature averaged over the NINO3 region for the CMIP5 models and. The vertical lines correspond to periods of two and seven years. - -* Figure 9.36: ENSO metrics for pre-industrial control simulations in CMIP3 and CMIP5. (a) and (b): SST anomaly standard deviation (deg C) in Nino 3 and Nino 4, respectively, (c) precipitation response (standard deviation, mm/day) in Nino4. - -* Figure 9.45: The carbon cycle-climate feedback (gamma\ :sub:`LT`\) versus the short-term sensitivity of atmospheric CO\ :sub:`2`\ to interannual temperature variability (gamma\ :sub:`IAV`\) in the tropics for CMIP5 models. The red line shows the best fit line across the CMIP5 simulations and the vertical dashed lines show the observed range of gamma\ :sub:`IAV`\. (b) Probability distribution function (PDF) for gamma\ :sub:`LT`\. The solid line is derived after applying the interannual variability (IAV) constraint to the models while the dashed line is the prior PDF derived purely from the models before applying the IAV constraint. - - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_flato13ipcc.xml - -Diagnostics are stored in diag_scripts/ - -* aerosol_satellite.ncl (Fig. 9.28: Multi-year average AOD in comparison with satellite data) - -* carbon_constraint.ncl (fig. 9.45b: Emergent constraints on carbon cycle feedbacks) - -* carbon_corr_2var.ncl (fig. 9.45b: Emergent constraints on carbon cycle feedbacks) - -* carbon_dummy.ncl (fig. 9.45b: Emergent constraints on carbon cycle feedbacks) - -* clouds_bias.ncl (figs. 9.2 a,b,c + 9.4 a,b: Clouds) - -* clouds_ipcc.ncl (fig. 9.5: Clouds) - -* create_co2flux.ncl (fig. 9.45b: Emergent constraints on carbon cycle feedbacks) - -* enso_mem.ncl (fig. 9.35: Maximum entropy power spectra of surface air temperature averaged over the NINO3 region) - -* eyring13jgr_fig02.ncl (fig. 9.10: Ozone and associated climate impacts) - -* ipcc-fig-9-30.ncl (fig. 9.30: Composite diurnal cycle of precipitation) - -* ipcc-fig-9-31.ncl (fig. 9.31: Two leading Empirical Orthogonal Functions (EOFs) of the observed outgoing longwave radiation (OLR).) - -* ipcc-fig-9-36.ncl (fig. 9.36: (Anomaly) standard deviation averaged over Nino 3 and Nino 4 regions.) - -* perfmetrics_grading.ncl (fig. 9.7: Performance metrics for essential climate parameters) - -* perfmetrics_grading_collect.ncl (fig. 9.7: Performance metrics for essential climate parameters) - -* perfmetrics_main.ncl (fig. 9.7: Performance metrics for essential climate parameters) - -* SAMonsoon_precip_domain.ncl (fig. 9.32: South Asian Summer Monsoon diagnostics) - -* SeaIce_tsline.ncl (fig. 9.24 a,b: Sea ice) - -* seasonality_mm.ncl (fig. 9.30: Seasonality) - -* tsline.ncl (fig. 9.29: Aerosol; fig. 9.45: Emergent constraints on carbon cycle feedbacks) - -* tsline_IPCC_Fig_9_8.ncl (fig. 9.8: Time series of anomalies of annual and global surface temperature) - -User settings -------------- - -See individual diagnostics (Annex C): - -* Aerosol -* Clouds -* Emergent constraints on carbon cycle feedbacks -* Ozone and associated climate impacts -* Performance metrics for essential climate parameters -* Sea ice -* South Asian Summer Monsoon diagnostics - - - -Variables ---------- - -* co2 (atmos, monthly mean, longitude, latitude, plev, time) -* fgco2 (ocean, monthly mean, longitude, latitude, time) -* hus (atmos, monthly mean, longitude, latitude, level, time) -* nbp (land, monthly mean, longitude, latitude, time) -* od550aer (aero, monthly mean, longitude, latitude, time) -* pr (atmos, 3-hr/monthly mean, longitude, latitude, time) -* rlut, rlutcs (atmos, monthly mean, longitude, latitude, time) -* rsut, rsutcs (atmos, monthly mean, longitude, latitude, time) -* sic (ocean, monthly mean, longitude, latitude, time) -* ta (atmos, monthly mean, longitude, latitude, level, time) -* tas (atmos, monthly mean, longitude, latitude, time) -* toz (atmos, monthly mean, longitude, latitude, time) -* tro3 (atmos, monthly mean, longitude, latitude, level, time) -* ua (atmos, monthly mean, longitude, latitude, level, time) -* va (atmos, monthly mean, longitude, latitude, level, time) -* zg (atmos, monthly mean, longitude, latitude, level, time) - - - -Observations and reformat scripts ---------------------------------- - -*Note:* (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* AIRS L3 (hus -- obs4mips) -* CERES-EBAF (rlut, rlutcs, rsut, rsutcs -- obs4mips) -* CMAP (pr -- reformat_scripts/obs/reformat_obs_CMAP.ncl) -* ERA-Interim (tas, ta, ua, va, zg, hus -- reformat_scripts/obs/reformat_obs_ERA-Interim.ncl) -* ESACCI-AEROSOL (od550aer -- reformat_scripts/obs/reformat_obs_ESACCI-AEROSOL.ncl) -* GCP -- Global carbon budget including land (nbp) and ocean (fgco2) carbon fluxes (reformat_scripts/obs/reformat_obs_GCP.ncl) -* GPCP-SG (pr -- obs4mips) -* HadISST (sic -- reformat_scripts/obs/reformat_obs_HadISST.ncl) -* MERRA (pr -- obs4mips) -* MODIS-L3 (od550aer -- obs4mips) -* NCEP (tas, ta, ua, va, zg -- reformat_scripts/obs/reformat_obs_NCEP.ncl) -* NIWA (toz -- reformat_scripts/obs/reformat_obs_NIWA.ncl) -* NSIDC-NT (sic -- reformat_scripts/obs/reformat_obs_NSIDC.ncl) -* TRMM-3B42 (pr -- reformat_scripts/obs/reformat_obs_TRMM-3B42-3hourly.ncl) - - - -References ----------- - -* Adler, R. F., Huffman, G. J., Chang, A., Ferraro, R., Xie, P.-P., Janowiak, J., Rudolf, B., Schneider, U., Curtis, S., Bolvin, D., Gruber, A., Susskind, J., Arkin, P., and Nelkin, E.: The Version-2 Global Precipitation Climatology Project (GPCP) Monthly Precipitation Analysis (1979Present), J Hydrometeorol, 4, 1147-1167, 2003. - -* Dee, D. P., Uppala, S. M., Simmons, A. J., Berrisford, P., Poli, P., Kobayashi, S., Andrae, U., Balmaseda, M. A., Balsamo, G., Bauer, P., Bechtold, P., Beljaars, A. C. M., van de Berg, L., Bidlot, J., Bormann, N., Delsol, C., Dragani, R., Fuentes, M., Geer, A. J., Haimberger, L., Healy, S. B., Hersbach, H., Holm, E. V., Isaksen, L., Kallberg, P., Kohler, M., Matricardi, M., McNally, A. P., Monge-Sanz, B. M., Morcrette, J. J., Park, B. K., Peubey, C., de Rosnay, P., Tavolato, C., Thepaut, J. N., and Vitart, F.: The ERA-Interim reanalysis: configuration and performance of the data assimilation system, Q J Roy Meteor Soc, 137, 553-597, 2011. - -* Eyring, V., Righi, M., Lauer, A., Evaldsson, M., Wenzel, S., Jones, C., Anav, A., Andrews, O., Cionni, I., Davin, E. L., Deser, C., Ehbrecht, C., Friedlingstein, P., Gleckler, P., Gottschaldt, K.-D., Hagemann, S., Juckes, M., Kindermann, S., Krasting, J., Kunert, D., Levine, R., Loew, A., Mäkelä, J. Martin, G., Mason, E., Phillips, A. S., Read, S., Rio, C., Roehrig, R., Senftleben, D., Sterl, A., van Ulft, L. H., Walton, J., Wang, S., and Williams, K. D.: ESMValTool (v1.0) a community diagnostic and performance metrics tool for routine evaluation of Earth System Models in CMIP, Geosci. Model Dev., 9, 1747-1802, doi: 10.5194/gmd-9-1747-2016, 2016. - -* Flato, G., J. Marotzke, B. Abiodun, P. Braconnot, S.C. Chou, W. Collins, P. Cox, F. Driouech, S. Emori, V. Eyring, C. Forest, P. Gleckler, E. Guilyardi, C. Jakob, V. Kattsov, C. Reason and M. Rummukainen, 2013: Evaluation of Climate Models. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change [Stocker, T.F., D. Qin, G.-K. Plattner, M. Tignor, S.K. Allen, J. Boschung, A. Nauels, Y. Xia, V. Bex and P.M. Midgley (eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA. - - - -Example plots -------------- - - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-2.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.2a,b,c. - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-3.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.3. - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-4.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.4. - -.. figure:: /namelists/figures/ipccar5_ch9/fig3_ipccar5_ch9.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.5 (Eyring et al., 2016: Fig. 12). - -.. figure:: /namelists/figures/ipccar5_ch9/fig4_ipccar5_ch9.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.7 (Eyring et al., 2016: Fig. 2). - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-8.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.8. - -.. figure:: /namelists/figures/ipccar5_ch9/fig5_ipccar5_ch9.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.10 (Eyring et al., 2016: Fig. 25). - -.. figure:: /namelists/figures/ipccar5_ch9/fig6_ipccar5_ch9.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.24 (Eyring et al., 2016: Fig. 17). - -.. figure:: /namelists/figures/ipccar5_ch9/fig7_ipccar5_ch9.png - :width: 80% - - Similar to Flato et al. (2013), Fig. 9.28. - -.. figure:: /namelists/figures/ipccar5_ch9/fig8_ipccar5_ch9.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.29 (Eyring et al., 2016: Fig. 23). - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-30.png - :width: 80% - - Similar to Flato et al. (2013), Fig. 9.30. - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-31.png - :width: 60% - - Similar to Flato et al. (2013), Fig. 9.31. - -.. figure:: /namelists/figures/ipccar5_ch9/fig10_ipccar5_ch9.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.32 (Eyring et al., 2016: Fig. 5). - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-35.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.35. - -.. figure:: /namelists/figures/ipccar5_ch9/fig-9-36.png - :width: 60% - - Resembling Flato et al. (2013), Fig. 9.36. - -.. figure:: /namelists/figures/ipccar5_ch9/fig11_ipccar5_ch9.png - :width: 80% - - Resembling Flato et al. (2013), Fig. 9.45b (Eyring et al., 2016: Fig. 26). - diff --git a/doc/sphinx/source/namelists/namelist_marine_bgc.rst b/doc/sphinx/source/namelists/namelist_marine_bgc.rst deleted file mode 100644 index f3d3370c86..0000000000 --- a/doc/sphinx/source/namelists/namelist_marine_bgc.rst +++ /dev/null @@ -1,142 +0,0 @@ -Marine biogeochemistry -====================== - -Overview --------- - -A series of routines are provided to support the evaluation of ocean biogeochemical cycles at global scales as -simulated by both ocean-only and coupled climate-carbon cycle models. Diagnostics have been implemented to -generate time series line and contour plots for climatological distributions and inter-annual or inter-seasonal -(e.g., JJAS) variability of selected ocean biogeochemical variables along with companion plots for differences -("diff") relative to a chosen reference (observational) data set. Basic benchmarking statistics are also -provided (bias, standard deviation, root mean squared error, correlation coefficient). - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_GlobalOcean.xml - -Diagnostics are stored in diag_scripts/ - -* GO_comp_map.ncl: this diagnostic takes input from up to four models, one of which is defined as the reference, to produce contour maps of the time-mean (climatology) and standard deviation (inter-annual or inter-seasonal [e.g., JJAS] variability) together with the difference between the reference and each model. GO_comp_map.ncl is based on SAM_monsoon/SAMonsoon_wind_basic.ncl and uses many SAMonsoon underlying functions. Extensions to these routines include support for the pre-processing and interpolation of curvilinear ocean grids (e.g., ORCA2, NEMO) along with the option to use 3-D (TO3M; depth-resolving) input model data (ocean) and select a single depth level on which to produce comp_maps. - -* GO_tsline.ncl: this diagnostic (developed from SeaIce_tsline.ncl) produces annual and seasonal time series plots from monthly ocean data, and includes reformatting options to convert input irregularly gridded data into a version that NCL can interpret by introducing intermediate referencing co-ordinates in dimensioning the variable, and writing gridcell areas to the same file. Plots can be produced either globally or from a selected latitude-longitude range, with optional extensions including the ability to mask model fields with observational coverage, plot anomaly fields, or overlay derived fields such as linear trend lines, running means or multi-model means. Support for irregular grids (e.g., ORCA2, ORCA1) is provided to, for instance, apply a weighting based on gridcell areas before calculating averages (see reformat_scripts/GO/). - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_GO/ - - #. GO_tsline.ncl - - *Required diag_script_info attributes* - - * month: "A" (A = annual mean) - * styleset: "CMIP5" (CMIP5, DEFAULT, GO, EXPT) - * colors = (/"red", "green", "blue", "yellow", "purple", "black", "gray", "white", "pink", "orange", "brown", "palegreen"/) - * ts_multimean: "True" = plot multi-model mean & stddev; "False" = don't - * ts_latrange: min. and max. latitude for area-averaging of first variable (array) - * ts_lonrange: min. and max. longitude for area-averaging of first variable (array) - - *Optional diag_info_script attributes* - - * ts_anom: calculates anomalies with respect to the first 10-year average (anom, noanom) - * ts_ymin: y-axis minimum - * ts_ymax: y-axis maximum - * ts_min_year: start year - * ts_max_year: end year - * ts_smooth: smoothing (True, False) - * ts_trend: overlay trend line (True, False) - * ts_coverage: *not used* - - #. GO_comp_map.ncl - - *Required diag_script_info attributes* - - * GO_season: season (e.g., "JJASO") - * GO_detrend: detrend data (True, False) - * latrange_basic: min. and max latitude of region (array) - * lonrange_basic: min. and max. longitude of region (array) - * ref_model: name of reference data set - * cn_levels_mean_basic: contour levels for mean (array) - * cn_levels_mean_diff_basic: contour levels for differences (array) - * cn_levels_stddev_basic: contour levels for standard deviation (array) - * cn_levels_stddev_diff_basic: contour levels for difference in standard deviation (array) - * regrid_for_these_projects: list of project names that will be regridded (e.g., "CMIP5_gridfile", "GO_gridfile", "CMIP5_fx") (array) - -Variables ---------- - -* spco2 (ocnBgchem, monthly mean, longitude latitude time) -* chl (ocnBgchem, monthly mean, longitude latitude time) -* talk (ocnBgchem, monthly mean, longitude latitude time) -* o2 (ocnBgchem, monthly mean, longitude latitude olevel time) - -Observations and reformat scripts ---------------------------------- - -*Note:* (1) obs4mips data can be used directly without any preprocessing; -(2) see headers of reformat scripts for non-obs4mips data for download -instructions. - -* spco2: Surface Ocean CO2 Atlas (SOCAT version 2; Bakker et al., 2014) - - *Reformat script*: reformat_scripts/obs/reformat_obs_SOCAT.csh - -* spco2: Two Surface Ocean pCO2 Mapping Intercomparison (SOCOM) products: UEA-SI v1.0 (Jones et al., In Rev.) and ETH-SOM-FFN (Landshüster et al., 2014) - - *Reformat script*: reformat_scripts/obs/reformat_obs_ETH-SOM-FFN.csh - -* chl: Chlorophyll concentration data from Sea-viewing WIde Field-of-view Sensor (SeaWIFs; available at: http://oceancolor.gsfc.nasa.gov/SeaWiFS/) - - *Reformat script*: reformat_scripts/obs/reformat_obs_SeaWIFS.csh - -* o2: World Ocean Atlas (WOA) 2005 dissolved oxygen concentration data with corrections applied as described in Bianchi et al. (2012) - - *Reformat script*: reformat_scripts/obs/reformat_obs_woa2005.csh - -* talk: Monthly surface climatological Total Alkalinity (T14; Takahashi et al., 2014) - - *Reformat script*: reformat_scripts/obs/reformat_obs_takahashi14.csh - -References ----------- - -* Bakker, D. C. E., Pfeil, B., Smith, K., Hankin, S., Olsen, A., Alin, S. R., Cosca, C., Harasawa, S., Kozyr, A., Nojiri, Y., O'Brien, K. M., Schuster, U., Telszewski, M., Tilbrook, B., Wada, C., Akl, J., Barbero, L., Bates, N. R., Boutin, J., Bozec, Y., Cai, W.-J., Castle, R. D., Chavez, F. P., Chen, L., Chierici, M., Currie, K., de Baar, H. J. W., Evans, W., Feely, R. A., Fransson, A., Gao, Z., Hales, B., Hardman-Mountford, N. J., Hoppema, M., Huang, W.-J., Hunt, C. W., Huss, B., Ichikawa, T., Johannessen, T., Jones, E. M., Jones, S. D., Jutterström, S., Kitidis, V., Körtzinger, A., Landschützer, P., Lauvset, S. K., Lefèvre, N., Manke, A. B., Mathis, J. T., Merlivat, L., Metzl, N., Murata, A., Newberger, T., Omar, A. M., Ono, T., Park, G.-H., Paterson, K., Pierrot, D., Ríos, A. F., Sabine, C. L., Saito, S., Salisbury, J., Sarma, V. V. S. S., Schlitzer, R., Sieger, R., Skjelvan, I., Steinhoff, T., Sullivan, K. F., Sun, H., Sutton, A. J., Suzuki, T., Sweeney, C., Takahashi, T., Tjiputra, J., Tsurushima, N., van Heuven, S. M. A. C., Vandemark, D., Vlahos, P., Wallace, D. W. R., Wanninkhof, R., and Watson, A. J.: An update to the Surface Ocean CO2 Atlas (SOCAT version 2), Earth Syst. Sci. Data, 6, 69-90, doi: 10.5194/essd-6-69-2014, 2014. - -* Bianchi, D., Dunne, J. P., Sarmiento, J. L., and Galbraith, E. D.: Data-based estimates of suboxia, denitrification, and N2O production in the ocean and their sensitivities to dissolved O2, Global Biogeochem. Cy., 26, GB2009, doi: 10.1029/2011GB004209, 2012. - -* Jones, S. D., Le Quere, C., Rödenbeck, C., Manning, A. C., and Olsen, A.: A statistical gap-filling method to interpolate global monthly surface ocean carbon dioxide data, J, Adv. Model Earth Syst., in review. Key, R. M., Kozyr, A., Sabine, C. L., Lee, K., Wanninkhof, R., Bullister, J. L., Feely, R. A., Millero, F. J., Mordy, C., and Peng, T.-H.: A global ocean carbon climatology: results from Global Data Analysis Project (GLODAP), Global Biogeochem. Cy., 18, GB4031, doi: 10.1029/2004GB002247, 2004. - -* Rödenbeck, C., Keeling, R. F., Bakker, D. C. E., Metzl, N., Olsen, A., Sabine, C., and Heimann, M.: Global surface-ocean pCO2 and sea-air CO2 flux variability from an observation-driven ocean mixed-layer scheme, Ocean Sci., 9, 193-216, doi: 10.5194/os-9-193-2013, 2013. - -* Takahashi, T., Sutherland, S. C., Chipman, D. W., Goddard, J. G., Ho, C., Newberger, T., Sweeney, C., and Munro, D. R.: Climatological distributions of pH, pCO2, total CO2, alkalinity, and CaCO3 saturation in the global surface ocean, and temporal changes at selected locations, Mar. Chem., 164, 95-125, doi: 10.1016/j.marchem.2014.06.004, 2014. - - -.. raw:: latex - - \newpage - - -Example plots -------------- - -.. figure:: /namelists/figures/marine_bgc/marine_bgc_fig_1.png - :width: 80% - -.. centered:: |pic_marinebgc_1| |pic_marinebgc_2| - -.. |pic_marinebgc_1| image:: /namelists/figures/marine_bgc/marine_bgc_fig_2a.png - :width: 45% - -.. |pic_marinebgc_2| image:: /namelists/figures/marine_bgc/marine_bgc_fig_2b.png - :width: 45% - -.. figure:: /namelists/figures/marine_bgc/marine_bgc_fig_3.png - :width: 50% - -.. figure:: /namelists/figures/marine_bgc/marine_bgc_fig_4.png - :width: 90% - diff --git a/doc/sphinx/source/namelists/namelist_ozone_climate.rst b/doc/sphinx/source/namelists/namelist_ozone_climate.rst deleted file mode 100644 index 1aca69dff6..0000000000 --- a/doc/sphinx/source/namelists/namelist_ozone_climate.rst +++ /dev/null @@ -1,325 +0,0 @@ -Ozone and associated climate impacts -==================================== - -Overview --------- - -This namelist, implemented into the ESMValTool to evaluate atmospheric -chemistry and the climate impact of stratospheric ozone changes, reproduces -selected plots from Eyring et al. (2013), i.e. their figs. 1, 2, 4, 6, 7, -10, and 11. These include calculation of the zonally averaged seasonal -cycle of total ozone columns (:numref:`fig_ozone01`), time series of the total ozone -averaged over given regions (:numref:`fig_ozone02`), climatological mean tropospheric -ozone columns (:numref:`fig_ozone04`), stratospheric ozone time series (:numref:`fig_ozone06`), -differences in vertical ozone profiles between the 2090s and 2000s -(:numref:`fig_ozone07`), trends in annual mean ozone, temperature, and jet position -(:numref:`fig_ozone10`), and trend relationships between ozone and temperature and -jet position (:numref:`fig_ozone11`). - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_eyring13jgr.xml - -Diagnostics are stored in diag_scripts/ - -* eyring13jgr_fig01.ncl: calculates seasonal cycles of zonally - averaged total ozone columns. -* eyring13jgr_fig02.ncl: time series of area-weighted total ozone - from 1960-2005 for the annual mean averaged over the global domain - (90°S-90°N), Tropics (25°S-25°N), northern mid-latitudes (35°N-60°N), - southern mid-latitudes (35°S-60°S), and the March and October mean - averaged over the Arctic (60°N-90°N) and the Antarctic (60°S-90°S). -* eyring13jgr_fig04.ncl: climatological annual mean tropospheric ozone - columns (geographical distribution). -* eyring13jgr_fig06.ncl: 1980 baseline-adjusted stratospheric column - ozone time series from 1960-2100. -* eyring13jgr_fig07.ncl: differences in vertically resolved ozone - between the 2090s and 2000s for the annual mean averaged over the - global domain (90°S-90°N), Tropics (25°S-25°N), northern mid-latitudes - (35°N-60°N), southern mid-latitudes (35°S-60°S), and the March and October - mean averaged over the Arctic (60°N-90°N) and the Antarctic (60°S-90°S). -* eyring13jgr_fig10.ncl: trends in annual mean near-global (82.5°S-82.5°N) - ozone at 50 hPa and temperature at 100 hPa, - September-October-November-December (SOND) ozone at 50 hPa over Antarctica - (60°S-90°S), October-November-December-January (ONDJ) temperature at 100 hPa - over Antarctica (60°S-90°S), DJF SH jet position at 850 hPa, and DJF upper - tropospheric tropical (30°S-30°N) temperatures at 250 hPa. The trends are - calculated over 1979-2005 for the past and over 2006-2050 for the future. -* eyring13jgr_fig11.ncl: trend relationship between annual mean near-global - (82.5°S-82.5°N) ozone at 50 hPa and temperature at 100 hPa, SOND ozone at - 50 hPa and ONDJ temperature at 100 hPa over Antarctica (60°S-90°S), SOND - ozone at 50 hPa and DJF jet position at 850 hPa; and DJF 250 hPa tropical - (30°S-30°N) temperatures and DJF jet position at 850 hPa. The trends are - calculated over 1979-2005 for the past and over 2006-2050 for the future. - - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_eyring13jgr - -#. eyring13jgr_fig01.ncl - - *diag_script_info attributes* - - * rgb_file: path + filename of color table (e.g., - "diag_scripts/lib/ncl/rgb/eyring_toz.rgb") - * styleset: style set ("DEFAULT", "CMIP5") - * font: overrides default font (e.g., 21 ; see - www.ncl.ucar.edu/Document/Graphics/Resources/tx.shtml#txFont) - * range_option: 0 = as in nml, 1 = overlapping time period - * lbLabelBarOn: plot a label bar (True, False) - * e13fig01\_ = "True" - * e13fig01_list_chem_mod: list of models in the group "chem" - (array of strings, default = (/"All"/)) - * e13fig01_list_chem_mod_string: plotting label for group - "chem", e.g., "CMIP5" - * e13fig01_list_nochem_mod: list of models in the group "nochem" - (array of strings, default = (/""/)) - * e13fig01_list_nochem_mod_string: plotting label for group "nochem", - e.g., "NoChem" - * e13fig01_diff_ref: name of reference model for difference plots, - e.g., "NIWA" - -#. eyring13jgr_fig02.ncl - - *diag_script_info attributes* - - * e13fig02_latrange: min. and max. latitude of the regions - (n-element array of 2-element pairs, e.g., (/(/-90,90/), (/-90,-60/)/)); - one pair of latitudes is required for each season (see below) - * styleset: style set ("DEFAULT", "CMIP5") - * e13fig02_season: seasons (n-element array of strings, "ANN", - "JAN", "FEB", "MAR", "DJF", "SON", etc.) - * e13fig02_XMin: min. x-values (start years) for plotting - (n-element array, e.g., (/1960., 1960./)); array is required to have - the same number of elements as "seasons" (see above) - * e13fig02_XMax: max. x-values (end years) for plotting (n-element - array, e.g., (/2005., 2005./)); array is required to have the same - number of elements as "seasons" (see above) - * e13fig02_YMin: min. y-values for plotting (n-element array, e.g., - (/260., 150./)); array is required to have the same number of elements - as "seasons" (see above) - * e13fig02_YMax: max. y-values for plotting (n-element array, e.g., - (/340.,500./)); array is required to have the same number of elements - as "seasons" (see above) - * e13fig02_legend: plot legend (string, e.g., "True") - * e13fig02_legend_MMM: include multi model mean in legend (string, - e.g., "False") - * list_chem_mod: list of models in the group "chem" (array of strings, - default = (/"All"/) - * list_nochem_mod: list of models in the group "nochem" (array of - strings, default = (/"None"/)) - -#. eyring13jgr_fig04.ncl - - *diag_script_info attributes* - - * styleset: style set ("DEFAULT", "CMIP5") - * font: overrides default font (e.g., 21 ; - see www.ncl.ucar.edu/Document/Graphics/Resources/tx.shtml#txFont) - * range_option: 0 = as in nml, 1 = overlapping time period - * lbLabelBarOn: plot a label bar (True, False) - * e13fig04\_ = "True" - * e13fig04_list_chem_mod: list of models in the group "chem" - (array of strings, default = (/"All"/)) - * e13fig04_list_chem_mod_string: plotting label for group "chem", - e.g., "CMIP5" - * e13fig04_list_nochem_mod: list of models in the group "nochem" - (array of strings, default = (/""/)) - * e13fig04_list_nochem_mod_string: plotting label for group - "nochem", e.g., "NoChem" - * e13fig04_diff_ref: name of reference model for difference plots, - e.g., "AURA-MLS-OMI" - * mpProjection: map projection, optional (e.g., "CylindricalEquidistant") (see - http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpProjection - for available projections) - -#. eyring13jgr_fig06.ncl - - *diag_script_info attributes* - - * e13fig06_latrange: min. and max. latitude of the regions (n-element array - of 2-element pairs, e.g., (/(/-90,90/), (/-90,-60/)/)); one pair of - latitudes is required for each season (see below) - * styleset: style set ("DEFAULT", "CMIP5") - * e13fig06_season: seasons (n-element array of strings, "ANN", - "JAN", "FEB", "MAR", "DJF", "SON", etc.) - * e13fig06_baseline_adj: do baseline adjustment (string: "True", "False") - * e13fig06_baseline: year for baseline adjustment (e.g., 1980) - * e13fig06_mod_plot: "MMT" = plot of the MultiModel mean of each scenario - and selection "list_chem_mod" and "list_nochem_mod"; "IMT" = plot of each - single model trend; "RAW" = plot of each model as raw data - * e13fig06_mod_plot_CI: plot confidence interval (string: "True", "False"); - for e13fig06_mod_plot = "MMT" only! - * e13fig06_mod_plot_PI: plot prediction interval (string: "True", "False"); - for e13fig06_mod_plot = "MMT" only! - * e13fig06_XMin: min. x-values (start years) for plotting (n-element array, - e.g., (/1960., 1960./)); array is required to have the same number of - elements as "seasons" (see above) - * 13fig06_XMax: max. x-values (end years) for plotting (n-element array, - e.g., (/2010., 2010./)); array is required to have the same number of - elements as "seasons" (see above) - * e13fig06_YMin: min. y-values for plotting (n-element array, e.g., - (/260., 150./)); array is required to have the same number of elements - as "seasons" (see above) - * e13fig06_YMax: max. y-values for plotting (n-element array, e.g., - (/330., 500./)); array is required to have the same number of elements - as "seasons" (see above) - * list_chem_mod: list of models in the group "chem" (array of strings, - default = (/"All"/) - * list_nochem_mod: list of models in the group "nochem" (array of strings, - default = (/"None"/)) - * e13fig06_labels_exp_esp: specify experiment name (string: "True", - "False"); only if e13fig06_mod_plot = “IMT” or “RAW”! - -#. eyring13jgr_fig07.ncl - - *diag_script_info attributes* - - * e13fig06_latrange: min. and max. latitude of the regions (n-element - array of 2-element pairs, e.g., (/(/-90,90/), (/-90,-60/)/)); one pair - of latitudes is required for each season (see below) - * styleset: style set ("DEFAULT", "CMIP5") - * e13fig07_season: seasons (n-element array of strings, "ANN", "JAN", - "FEB", "MAR", "DJF", "SON", etc.) - * e13fig07_period1: start and end year of "period1" (= 2000s), e.g., - (/2000., 2009/) - * e13fig07_period2: start and end year of "period2" (= 2090s), e.g., - (/2090., 2099/) - * e13fig07_XMin: min. x-values for plotting (n-element array, e.g., - (/-2., -2./)); array is required to have the same number of elements - as "seasons" (see above) - * 13fig07_XMax: max. x-values for plotting (n-element array, e.g., - (/2., 12./)); array is required to have the same number of elements - as "seasons" (see above) - * list_chem_mod: list of models in the group "chem" (array of strings, - default = (/"All")) - * list_nochem_mod: list of models in the group "nochem" (array of strings, - default = (/"None"/)) - -#. eyring13jgr_fig10.ncl - - *diag_script_info attributes* - - * e13fig10_latrange: min. and max. latitude of the regions (n-element - array of 2-element pairs, e.g., (/(/-30, 30/)/)); one pair of latitudes - is required for each season (see below) - * styleset: style set ("DEFAULT", "CMIP5") - * e13fig10_season: seasons (n-element array of strings, e.g., "ANN", - "JAN", "FEB", "MAR", "DJF", "SON", etc.) - * e13fig10_lev: vertical level (in hPa) - * plot_number: string used for plot labeling / sub-figure (e.g., "(a)") - * list_chem_mod: list of models in the group "chem" (array of strings, - default = (/"All"/) - * list_nochem_mod: list of models in the group "nochem" (array of strings, - default = (/"None"/)) - -#. eyring13jgr_fig11.ncl - - *diag_script_info attributes* - - * styleset: style set ("DEFAULT", "CMIP5") - * e13fig11_V0_units: unit label for "variable 0" (x-axis) (string) - * e13fig11_V1_units: unit label for "variable 1" (y-axis) (string) - * e13fig11_V0_latrange: min. and max. latitude of the region for "variable 0" - * e13fig11_V1_latrange: min. and max. latitude of the region for "variable 1" - * e13fig11_V0_season: season for "variable 0" (e.g., "yearly") - * e13fig11_V1_season: season for "variable 1" (e.g., "yearly") - * e13fig10_V0_lev: vertical level (in hPa) for "variable 0" - * e13fig10_V1_lev: vertical level (in hPa) for "variable 1" - * plot_number: string used for plot labeling / sub-figure (e.g., "(a)") - * e13fig11_XMin: min. x-value for plotting - * e13fig11_XMax: max. x-value for plotting - * e13fig11_YMin: min. y-value for plotting - * e13fig11_YMax: max. y-value for plotting - * list_chem_mod: list of models in the group "chem" (array of strings, - default = empty) - * list_nochem_mod: list of models in the group "nochem" (array of strings, - default = empty) - - -Variables ---------- - -* tro3 (atmos, monthly mean, longitude latitude lev time) -* ta (atmos, monthly mean, longitude latitude lev time) -* ua (atmos, monthly mean, longitude latitude lev time) - - -Observations and reformat scripts ---------------------------------- - -* Total column ozone (toz): NIWA (Bodeker et al., 2005) - - *Reformat script:* reformat_scripts/obs/reformat_obs_NIWA.ncl - -* Tropospheric column ozone (tropoz): MLS/OMI (Ziemke et al., 2006) - - *Reformat script:* reformat_scripts/obs/reformat_obs_AURA-MLS-OMI.ncl - - -References ----------- - -* Eyring, V., J. M. Arblaster, I. Cionni, J. Sedlacek, J. Perlwitz, - P. J. Young, S. Bekki, D. Bergmann, P. Cameron-Smith, W. J. Collins, - G. Faluvegi, K.-D. Gottschaldt, L. W. Horowitz, D. E. Kinnison, J.-F. - Lamarque, D. R. Marsh, D. Saint-Martin, D. T. Shindell, K. Sudo, S. Szopa, - and S. Watanabe, Long-term ozone changes and associated climate impacts - in CMIP5 simulations, J. Geophys. Res. Atmos., 118, doi: 10.1002/jgrd.50316, - 2013. - - - -Example plots -------------- - - -.. _fig_ozone01: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_1.png - :width: 75% - - Produced with "eyring13jgr_fig01.ncl". - -.. _fig_ozone02: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_2.png - :width: 60% - - Produced with "eyring13jgr_fig02.ncl". - -.. _fig_ozone04: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_3.png - :width: 90% - - Produced with "eyring13jgr_fig04.ncl". - -.. _fig_ozone06: -.. figure:: /namelists/figures/ozone_climate/eyring13jgr_fig06.png - :width: 60% - - Produced with "eyring13jgr_fig06.ncl". - -.. _fig_ozone07: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_4.png - :width: 60% - - Produced with "eyring13jgr_fig07.ncl". - -.. _fig_ozone10: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_5.png - :width: 100% - - Produced with "eyring13jgr_fig10.ncl". - -.. _fig_ozone11: -.. figure:: /namelists/figures/ozone_climate/fig_ozone_climate_6.png - :width: 70% - - Produced with "eyring13_jgr_fig11.ncl" - diff --git a/doc/sphinx/source/namelists/namelist_ozone_precursors.rst b/doc/sphinx/source/namelists/namelist_ozone_precursors.rst deleted file mode 100644 index e40c494061..0000000000 --- a/doc/sphinx/source/namelists/namelist_ozone_precursors.rst +++ /dev/null @@ -1,216 +0,0 @@ -Ozone and some precursors -========================= - -Overview --------- - -This namelist provides diagnostics to evaluate the simulated atmospheric composition in ESMs with a focus on ozone and precursor gases such as NO\ :sub:`x`\. -This includes comparisons of simulated tropospheric ozone columns, seasonal cycle and vertical profiles of trace gases with observations. -Model data are sampled for the same regions and the same time of year as the observations, monthly data are weighted according to the number of days in each month contributing to the respective campaign climatology. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - - * namelist_righi15gmd_Emmons.xml - * namelist_righi15gmd_tropo3.xml - -Diagnostics are stored in diag_scripts/ - - * ancyc_lat.ncl: annual cycle contour plots of zonal means. - * Emmons.ncl: profiles of atmospheric trace gas mixing ratios, compared to the in-situ data climatologies of Emmons et al. (2000). Simulation data are sampled for the same regions and the same time of year as the observations. Monthly data are weighted according to the number of days in each month contributing to the respective campaign climatology. Note: simulation data are sampled according to the period specified in the namelist. Observational data may be from different years. - * lat_lon.ncl: plots the geographical distribution of a variable (latitude-longitude plot). - * perfmetrics_grading.ncl: calculates grades according to a given metric with different options for normalization. It requires fields precalculated by perfmetrics_main.ncl (see :ref:`nml_perfmetrics`). - * perfmetrics_grading_collect.ncl: collects results from metrics previously calculated by perfmetrics_grading.ncl and passes them to the plotting functions (see :ref:`nml_perfmetrics`). - * perfmetrics_main.ncl: calculates and (optionally) plots annual/seasonal cycles, zonal means, lat-lon fields and time-lat-lon fields from input monthly 2-d or 3-d ("T2M", "T3Ms") data. The calculated fields can be also plotted as difference w.r.t. a given reference model. They are also used as input to calculate grading metrics (see perfmetrics_grading.ncl) (see :ref:`nml_perfmetrics`). - * perfmetrics_taylor.ncl: calculates grades according to a given metric with different options for normalization. It requires fields precalculated by perfmetrics_main.ncl (see :ref:`nml_perfmetrics`). - * perfmetrics_taylor_collect.ncl: collects results from metrics previously calculated by perfmetrics_taylor.ncl and passes them to the plotting functions (see :ref:`nml_perfmetrics`). - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_righi15gmd/Emmons/ and nml/cfg_righi15gmd_tropo3/ - -#. ancyc_lat.ncl - - *Requires diag_script_info attributes* - - * styleset: style ("DEFAULT, "righi15gmd"; see diag_scripts/lib/ncl/style.ncl for available styles) - * font: font type (see www.ncl.ucar.edu/Document/Graphics/Resources/tx.shtml#txFont) - - *Optional diag_script_attributes* - - * obsfiles - * range_option: 0 = as in nml, 1 = overlapping time period - * case - * y1 - * y2 - * obsname - * lbLabelBarOn: plot label bar (True/False) - -#. Emmons.ncl - - * **obsfiles: list of observational files including full pathnames; all files matching the following will be scanned, all suitable data will be used (mandatory), wildcards are allowed.** - - *OBS parameters* - - The target variable (e.g., "vmro3") + the following extensions give the variable names in the obs file for specific quantities such as mean, standard devition, minimum, etc. - Deactivate lines corresponding to parameters that are not in the obs file; either *obsvar_mean* or *obsvar_median* is mandatory. - "_N" is only used for grading: will use equal weights if disabled. - Disabling any other quantity will just cause the corresponding whisker not to be drawn (this may be used to switch off whiskers). - - * obsvar_N: extension to assemble variable name for number of observations, e.g., "_N" - * obsvar_mean: extension to assemble variable name for mean, e.g., "_mean" - * obsvar_stddev: extension to assemble variable name for standard deviation, e.g., "_stddev" - * obsvar_min: extension to assemble variable name for minima, e.g, "_min" - * obsvar_max : extension to assemble variable name for maxima, e.g, "_max" - * obsvar_5: extension to assemble variable name for 5% percentiles, e.g., "_5" - * obsvar_25: extension to assemble variable name for 25% percentiles, e.g., "_25" - * obsvar_median: extension to assemble variable name for median, e.g., "_median" - * obsvar_75: extension to assemble variable name for 75% percentiles, e.g, "_75" - * obsvar_95: extension to assemble variable name for 95% percentiles, e.g., "_95" - - *Campaign parameters, expected to be global attributes of each obs file (all mandatory)* - - * obsatt_campaign: name of the attribute containing the campaign name (plot annotation), e.g., "campaign" - * obsatt_location: name of the attribute containing the region (plot annotation), e.g., "location" - * obsatt_period: name of the attribute containing the time period covered, e.g., "period" - * obsatt_latmin: name of the attribute containing the min. latitude of the region, e.g., "latmin" - * obsatt_latmax: name of the attribute containing the max. latitude of the region, e.g., "latmax" - * obsatt_lonmin: name of the attribute containing the min. longitude of the region, e.g., "lonmin" - * obsatt_lonmax: name of the attribute containing max. longitude of the region, e.g., "lonmax" - - *Optional FILTER parameters for selection of obs data* - - * roi: region of interest (4-element array given as (/latmin, latmax, lonmin, lonmax/)) (default = (/90., 90., 0., 360./)) - * roi_match: "contained", "center", "overlap", "encloses", "outside" (default: "center"); e.g., "center" = center of observational region (given by global attributes of observational file) must be inside the "region of interest (roi)" for the data to be considered - * poi: period of interest for obsservations (2-element array), (/first, last/) years to be considered (default = (/1900, 2100/)) - * poi_match: "contained" / "center" / "overlap" / "encloses" / "outside" (default = "overlap"), e.g., "overlap" = period of observations (given by the corresponding global attribute of the observational data file) must overlap with the "period of interest (poi)" for the data to be considered - - *Optional GENERAL parameters* - - * quantity: determines quantities to be evaluated and plotted for grading ("mean", "median" (not fully implemented yet)) - * ncdf: enable to output to netCDF: either use "default" or give a full file name (default = no netCDF output) - * interpolation: flag determining regridding from simulation to observations' pressure levels: 1 = linear, 2 = log; sign (-/+) = with/without extrapolation (default: -1 or +1 will be used, depending on levels) - - *Optional PANELING parameters (none of them mandatory, because there are defaults)* - - * max_vert: max. plots per column (default = 1) - * max_hori: max. plots per row (default = 1) - * aux_info: string to include in outfile name (default = period of interest) - - *Optional STYLE parameters (used by function profile_plev)* - - * styleset: style, e.g., "righi15gmd" (see diag_scripts/lib/ncl/style.ncl for available styles) (default = "DEFAULT") - * colors: override line colors (list), e.g., (/"black"/) - * dashes: overrides line styles (list), e.g., (/"0"/) - * thicks: override line thicknesses (list), e.g., (/2, 1, 1, 1, 1, 1, 1/) * 6. - * annots: e.g., (/"data"/) - * FuncCode: overrides default function code for strings - * font: overrides default font (see www.ncl.ucar.edu/Document/Graphics/Resources/tx.shtml#txFont) - - *Optional PLOTTING parameters (used by function profile_plev)* - - * ptop: top pressure in hPa; "auto" = observational range from input file (default = minimum of pressure coordinate from observational data file) - * pbot: surface pressure in hPa; "auto" = observational range from input file (default = maximum of pressure coordinate from observational data file) - * zoom: zoom x-axis range; "yes" = consider only mean/median when determining x-axis range; "no" = use min/max/5%/95% values to determine x-axis range; alternatively, an explicit range can be specified, e.g., (/0, 300/) (default = "yes") - * inline_legend: legend in the plot (True, False) (default = False) - -#. lat_lon.ncl - - *Required diag_script_info attributes* - - * styleset: style ("DEFAULT, "righi15gmd"; see diag_scripts/lib/ncl/style.ncl for available styles) - * font: font type (see www.ncl.ucar.edu/Document/Graphics/Resources/tx.shtml#txFont) - * mpProjection: map projection, e.g., "CylindricalEquidistant"; see http://www.ncl.ucar.edu/Document/Graphics/Resources/mp.shtml#mpProjection for available projections) - - *Optional diag_script_attributes* - - * range_option: 0 = as in nml, 1 = overlapping time period - * gsnZonalMean: plot zonal mean next to map (True, False) - -#. perfmetrics_grading.ncl, perfmetrics_grading_collect.ncl, perfmetrics_main.ncl, perfmetrics_taylor.ncl, perfmetrics_taylor_collect.ncl - - See "user settings" for :ref:`nml_perfmetrics`. - -Variables ---------- - - * vmro3 (monthly mean, time level latitude longitude) - * vmrnox (monthly mean, time level latitude longitude) - * vmrco (monthly mean, time level latitude longitude) - * vmrc2h4 (monthly mean, time level latitude longitude) - * vmrc2h6 (monthly mean, time level latitude longitude) - * vmrc3h6 (monthly mean, time level latitude longitude) - * vmrc3h8 (monthly mean, time level latitude longitude) - * vmrch3coch3 (monthly mean, time level latitude longitude) - * tropoz (monthly mean, time latitude longitude) - * toz (monthly mean, time latitude longitude) - * vmrco - * vmro3 - - -Observations and reformat scripts ---------------------------------- - -*Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.* - -* Total column ozone (toz): NIWA (Bodeker et al., 2005) and GTO-ECV (Loyola and Coldewey-Egbers, 2012; Loyola et al., 2009) - - *Reformat scripts:* - - * reformat_scripts/obs/reformat_obs_NIWA.ncl - * reformat_scripts/obs/reformat_obs_GTO-ECV.ncl - -* Tropospheric column ozone (tropoz): MLS/OMI (Ziemke et al., 2006) - - *Reformat script:* reformat_scripts/obs/reformat_obs_AURA-MLS-OMI.ncl - -* Ozonesonde profiles: Tilmes et al. (2012) - - *Reformat script:* reformat_scripts/obs/reformat_obs_Tilmes.ncl - -* CO surface mixing ratios: GLOBALVIEW (2010) - - *Reformat script:* reformat_scripts/obs/reformat_obs_GLOBALVIEW.ncl - -* Trace gas in-situ campaign composite data: Emmons et al. (2000) - - *Reformat script:* reformat_scripts/obs/reformat_obs_Emmons.ncl - - -References ----------- - - * Bodeker, G. E., Shiona, H., and Eskes, H.: Indicators of Antarctic ozone depletion, Atmos. Chem. Phys., 5, 2603-2615, doi: 10.5194/acp-5-2603-2005, 2005. - * Emmons, L. K., Hauglustaine, D. A., Müller, J.-F., Carroll, M. A., Brasseur, G. P., Brunner, D., Staehelin, J., Thouret, V., and Marenco, A.: Data composites of airborne observation of tropospheric ozone and its precursors, J. Geophys. Res., 105, 20497-20538, 2000. - * GLOBALVIEW-CO2: Cooperative Atmospheric Data Integration Project -- Carbon Dioxide, CD-ROM, NOAA ESRL, Boulder, Colorado, available at: ftp://ftp.cmdl.noaa.gov (last access: 2 October 2014), 2010. - * Klinger, C., Quantitative evaluation of ozone and selected climate parameters in the chemistry-climate model EMAC, Master Thesis, Ludwig-Maximilians-Universität München, 2011. - * Loyola, D. and Coldewey-Egbers, M.: Multi-sensor data merging with stacked neural networks for the creation of satellite long-term climate data records, EURASIP J. Adv. Sig. Pr., 2012, 1-10, doi: 10.1186/1687-6180-2012-91, 2012. - * Loyola, D. G., Coldewey-Egbers, R. M., Dameris, M., Garny, H., Stenke, A., Van Roozendael, M., Lerot, C., Balis, D., and Koukouli, M.: Global long-term monitoring of the ozone layer -- a prerequisite for predictions, Int. J. Remote Sens., 30, 4295-4318, doi: 10.1080/01431160902825016, 2009. - * Righi, M., V. Eyring, K.-D Gottschaldt, C. Klinger, F. Frank, P. Jöckel, and I. Cionni, Quantitative evaluation of ozone and selected climate parameters in a set of EMAC simulations, Geosci. Model Dev., 8, 733-768, doi: 10.5194/gmd-8-733-2015, 2015. - * Tilmes, S., Lamarque, J.-F., Emmons, L. K., Conley, A., Schultz, M. G., Saunois, M., Thouret, V., Thompson, A. M., Oltmans, S. J., Johnson, B., and Tarasick, D.: Technical Note: Ozonesonde climatology between 1995 and 2011: description, evaluation and applications, Atmos. Chem. Phys., 12, 7475-7497, doi: 10.5194/acp-12-7475-2012, 2012. - * Ziemke, J. R., Chandra, S., Duncan, B. N., Froidevaux, L., Bhartia, P. K., Levelt, P. F., and Waters, J. W.: Tropospheric ozone determined from Aura OMI and MLS: Evaluation of measurements and comparison with the Global Modeling Initiative’s Chemical Transport Model, J. Geophys. Res., 111, D19303, doi: 10.1029/2006JD007089, 2006. - -Example plots -------------- - -.. centered:: |pic_ozone_prec1| |pic_ozone_prec2| - -.. |pic_ozone_prec1| image:: /namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz.png - :width: 45% - -.. |pic_ozone_prec2| image:: /namelists/figures/ozone_precursors/figure_namelist_precursors_trop_col_Oz_ref.png - :width: 45% - -.. centered:: |pic_ozone_prec3| |pic_ozone_prec4| - -.. |pic_ozone_prec3| image:: /namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_plevel.png - :width: 45% - -.. |pic_ozone_prec4| image:: /namelists/figures/ozone_precursors/figure_namelist_precursors_Oz_TS.png - :width: 45% - diff --git a/doc/sphinx/source/namelists/namelist_precip_sm.rst b/doc/sphinx/source/namelists/namelist_precip_sm.rst deleted file mode 100644 index c6913d2eb9..0000000000 --- a/doc/sphinx/source/namelists/namelist_precip_sm.rst +++ /dev/null @@ -1,75 +0,0 @@ -Precipitation dependence on soil moisture -========================================= - -Overview --------- - -The "precipitacion dependance on soil moisture diagnostic" is used for the analysis of the coupling between soil moisture and precipitation in Taylor et al. 2012. The script sm_pr_diag_nml.py provides the diagnostic on a regular 5°x5° grid for the land surface between 60°S and 60°N. In the output plots (see example :numref:`fig_precip_sm`) shading blue (red) indicates convective precipitation more likely over wetter (drier) soils. - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_sm_pr.xml - -Diagnostics are stored in diag_scripts/ - -* sm_pr_diag_nml.py: this script computes and plot the diagnostic "preference for afternoon precipitation over soil moisture anomalies" as in Fig.3 of Taylor et al. (2012). - -Specific Routines ------------------ - -* main(project_info): call all callable fuctions to read CMIP5 data, compute and plot the diagnostic -* read_pr_sm_topo(project_info): read and extract input for computing the diagnostic from CMIP5 input data and topography from aux file topo_var_5x5.gra -* get_smclim(sm, lon, time): compute monthly soil moisture climatology at 0600 LT (note that more strictly this is between 0600 and 0859 LT) -* get_monthly_input(project_info, mn, time, lon, lat, time_bnds_1, pr, sm, fileout, samplefileout, verbosity): prepare and agregate by month the input data required by the F90 routines global_rain_sm and sample_events -* F90 routine global_rain_sm: identifies rain events (time and location) from 3-hourly rainfall -* F90 routine sample_events: creates two datasets of difference in soil moisture between the locations of rainfall maximum and minimum, dataset 1 is for the events themselves, dataset 2 for the same locations but in different years (i.e. non-events) -* get_p_val(in_dir): compares the statistics of the two datasets above by resampling, to compute percentiles (p_values) of "preference for afternoon precipitation over soil moisture anomalies" as in Fig.3 of Taylor et al. 2012 -* write_nc(fileout, xs, ys, p_vals, project_info): save netCDF file with the diagnostic in a regular 5°x5° grid -* plot_diagnostic(fileout, plot_dir, project_info): plot diagnostic and save to .png file - -**Installation procedure** - -The diagnostics uses two Fortran programs that have to be compiled and interfaced to Python. This is done via the F2PY - Fortran to Python interface -generator. General instructions for this is: - -.. code:: bash - - cd diag_scripts - f2py --fcompiler=gfortran -c -m global_rain_sm global_rain_sm.f90 - f2py --fcompiler=gfortran -c -m sample_events sample_events.f90 - cd ../ - - -User settings -------------- - -User setting files (cfg files) are stored in nml/ cfg_sm_pr/ - -Variables ---------- - -* pr -- precipitation (atmos, 3hr, time latitude longtitude) -* mrsos -- moisture in upper portion of soil column (land, 3hr, time latitude longtitude) - -Observations and reformat scripts ---------------------------------- - -None. - -References ----------- - -* Taylor, C. M., R. A. M. de Jeu, F. Guichard, P. P. Harris, and W. A. Dorigo (2012), Afternoon rain more likely over drier soils, Nature, 489(7416), 423-426, doi: 10.1038/nature11377. - -Example plots -------------- - -.. _fig_precip_sm: -.. figure:: /namelists/figures/precip_sm/precip_sm_fig1.png - :width: 60% - - CNRM-CM5_sm_pr_diag_plot (CNRM-CM5, 3hr, amip, r1i1p1, 1999-2008). - diff --git a/doc/sphinx/source/namelists/namelist_seaice.rst b/doc/sphinx/source/namelists/namelist_seaice.rst deleted file mode 100644 index 13306c30f2..0000000000 --- a/doc/sphinx/source/namelists/namelist_seaice.rst +++ /dev/null @@ -1,197 +0,0 @@ -Sea ice -======= - - -Overview --------- - -The sea ice diagnostics cover sea ice extent and concentration, but work is -underway to include other variables and processes in future releases of the -ESMValTool. Current diagnostics include time series of September (Arctic) and -March (Antarctic) sea ice extent calculated as the total area (km\ :sup:`2`\) of grid -cells with sea ice concentrations (sic) of at least 15%. Also included are the -seasonal cycle of sea ice extent, polar stereographic contour and polar -contour difference plots of Arctic and Antarctic sea ice concentrations. - - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - - * namelist_SeaIce.xml - -Diagnostics are stored in diag_scripts/ - - * SeaIce_tsline.ncl: time series line plots of total sea ice area and - extent (accumulated) for northern and southern hemispheres with - optional multi-model mean and standard deviation. One value is used - per model per year, either annual mean or the mean value of a - selected month. - - * SeaIce_ancyc.ncl: as SeaIce_tsline.ncl, but for the annual cycle - (multi-year monthly mean values). - - * SeaIce_polcon.ncl: polar stereographic plots of sea ice - concentration (= sea ice area fraction) and extent (grid cells with - a sea ice concentration of at least 15%) for individual models or - observational data sets, for Arctic and Antarctic regions with - flexible paneling of the individual plots. The edges of sea ice - extent can be highlighted via an optional red line. - - * SeaIce_polcon_diff.ncl: polar stereographic plots of sea ice area - concentration difference between individual models and reference - data (e.g., an observational data set) for both Arctic and Antarctic - with flexible paneling of the individual plots. All data are - regridded to a common grid (1°x1°) before comparison. - - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_SeaIce/ - - * region: label of region to be plotted ("Arctic", "Antarctic"); make - sure to specify correct observational data for the selected region - in the sea ice namelist. - - * month: "A" = annual mean, "3" = March (Antarctic), "9" = September - (Arctic) - - * styleset: "CMIP5", "DEFAULT" - - * fill_pole_hole: fill observational hole at North Pole, default = - False - - * legend_outside: True: draw legend in an extra plot - -Settings specific to SeaIce_polcon, SeaIce_polcon_diff, SeaIce_ancyc - - * range_option: 0 = use each model's whole time range as specified in - namelist, 1 = use only intersection of all time ranges - -Setting specific to SeaIce_tsline.ncl and SeaIce_ancyc.ncl - - * multi_model_mean: plots multi-model mean and standard deviation - ("y", "n") - - * EMs_in_lg: create legend label for each individual ensemble member - (True, False) - -Settings specific to SeaIce_polcon.ncl and SeaIce_polcon_diff.ncl - - * contour_extent: draw a red contour line for sic extent in polar - stereographic plots ("y", "n") - - * max_vert: max. number of rows on a panel page (vertical) - - * max_hori: max. number of columns on a panel page (horizontal) - - * max_lat: Antarctic plotted from 90°S up to this latitude - - * min_lat: Arctic plotted from 90°N up to this latitude - - * PanelTop: tune to get full title of uppermost row (1 = no top - margin, default = 0.99) - -Settings specific to SeaIce_polcon_diff.ncl - - * ref_model: reference model, as specified in annotations; if this - string is not found, the routine will print a list of valid strings - before stopping - - * dst_grid: path to destination grid file for Climate Date Operators - (CDO), required by cdo_remapdis; e.g.: - "./diag_scripts/aux/CDO/cdo_dst_grid_g010" - - * grid_min: min. contour value (default = -1.0) - - * grid_max: max. contour value (default = 1.0) - - * grid_step: step between contours (default = 0.2) - - * grid_center: value to center the color bar (default = 0.0) - - - - -Variables ---------- - - * sic (sea ice, monthly mean, longitude latitude time) - - - -Observations and reformat scripts ---------------------------------- - -*Note:* (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - - * National Snow and Ice Data Center (NSIDC) - - *Reformat script:* reformat_scripts/obs/reformat_obs_NSIDC.ncl - - * Hadley Centre Sea Ice and Sea Surface Temperature data set (HadISST) - - *Reformat script:* reformat_scripts/obs/reformat_obs_HadISST.ncl - - - - -References ----------- - -* Bräu, M.: Sea-ice in decadal and long-term simulations with the Max Planck Institute Earth System Model, Bachelor thesis, LMU, 2013. - -* Hübner, M.: Evaluation of Sea-ice in the Max Planck Institute Earth System Model, Bachelor thesis, LMU, 2013. - - - - -Example plots -------------- - -.. _fig_seaice1: -.. figure:: /namelists/figures/seaice/figure_namelist_seaice_polcon-Arctic.png - :width: 80% -   :align: center - - Polar-stereographic contour maps (Arctic) of sea ice concentration averaged - over the period 1979-2005 from HadISST and NSIDC observations, as well as - historical CMIP5 simulations from different Earth system models. The red - line indicates the sea ice extent (i.e., sea ice concentration of 15%). - - -.. _fig_seaice2: -.. figure:: /namelists/figures/seaice/figure_namelist_seaice_polcon-diff-Antarctic.png - :width: 80% -   :align: center - - Polar-stereogrpahic projections (Antarctic) of the difference in sea ice - concentration between historical CMIP5 simulations from different Earth - system models and HadISST observations (1979-2005). Red (blue) colors - indicate a positive (negative) bias of the respective model towards - observations. - - -.. _fig_seaice3: -.. figure:: /namelists/figures/seaice/figure_namelist_seaice_tsline-Arctic.png - :width: 60% -   :align: center - - Timeseries (1960-2005) of September Arctic sea ice extent from different - historical CMIP5 Earth system model simulations, and HadISST (black, - dashed) and NSIDC (black, solid) observations. The thick red line - represents the multi-model mean. Sea ice extent is the total area of all - grid cells with a sea ice concentration of at least 15%. - - -.. _fig_seaice4: -.. figure:: /namelists/figures/seaice/figure_namelist_seaice_anncyc-Antarctic.png - :width: 60% -   :align: center - - Same as :numref:`fig_seaice3`, but for the annual cycle of Antarctic sea ice extent. - diff --git a/doc/sphinx/source/namelists/namelist_southern_hemisphere.rst b/doc/sphinx/source/namelists/namelist_southern_hemisphere.rst deleted file mode 100644 index 56faf3cfa5..0000000000 --- a/doc/sphinx/source/namelists/namelist_southern_hemisphere.rst +++ /dev/null @@ -1,172 +0,0 @@ -Southern hemisphere -=================== - -Overview --------- - -The diagnostics compare model estimates of cloud, radiation and surface turbulent flux variables with suitable observational data sets. Seasonal mean maps of TOA, total and clear-sky, outgoing short wave (SW) and long wave (LW) radiation are constructed for the Southern Ocean region (30°S-65°S) comparing available model data with CERES-EBAF satellite observations (Loeb et al., 2005). Absolute values, model to satellite differences and total minus clear sky flux values are plotted through standard namelists. Combined with TOA radiation, seasonal mean maps of total cloud cover, vertically integrated cloud liquid water and cloud ice are also plotted with CloudSat data (Stephens et al., 2002) providing an observational constraint. Finally, seasonal mean maps of surface sensible and latent heat fluxes over the same region compare model estimates with the Woods Hole OAflux observations (Yu et al., 2008). For each of these quantities (TOA radiation, cloud and surface flux variables) climatological annual cycles are constructed using zonal means averaged separately over 3 latitude bands: (i) 30°S-65°S, the entire Southern Ocean, (ii) 30°S-45°S, the subtropical Southern Ocean, and (iii) 45°S-65°S, the mid-latitude Southern Ocean. Finally, annual means of each variable (models and observations) are constructed as zonal means, plotted over 30°S-65°S, and as latitudinal means (over 30°S-65°S) plotted around a longitude circle. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_SouthernHemisphere.xml - -Diagnostics are stored in diag_scripts/ - -* SouthernHemisphere.py -* SouthernHemisphere_scatter.py - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_SouthernHemisphere/ - -#. SouthernHemisphere.py and SouthernHemisphere_scatter.py - - *Diag_script_info attributes* - - General options for all diagnostics - - * plot_clouds: True, False - * plot_fluxes: True, False - * plot_radiation: True, False - * plot_scatter: True, False - * plot_background_grid: True, False - * plot_total_cover: True, False - * plot_liquid_path: True, False - * plot_ice_path: True, False - * plot_optical_depth: True, False - * plot_flux_maps: True, False - * plot_radiation_maps: True, False - - Common sub keys for all diagnostics (plot\_): X_maps, X_averages, sub_areas - - * plot_lat_averages: True, False - * plot_lon_averages: True, False - * plot_monthly_averages: True, False - * plot_sub_areas: True, False - * mask_unwanted_values: mask values (e.g., missing values) exceeding "mask_limit_low" and "mask_limit_high" (True, False) - * mask_limit_low: lower threshold used for creating a mask (if "mask_unwanted_values" = True) - * mask_limit_high: upper threshold used for creating a mask (if "mask_unwanted_values" = True) - - Configuration for Southern Hemisphere maps and plots. All plots will be generated for all areas but only monthly averages for sub_areas. - - * areas: name of area(s), defined separately for each area (see below), e.g., default - * sub_areas: name of sub-area(s), defined separately for each sub-area (see below), e.g., northern southern - * scatter_areas: cloud vs radiation scatter plot areas; areas must be defined separately (see below), e.g., default - * seasons: which months to plot for each contour and lat/lon mean plots (e.g., DJF MAM JJA SON); each season has to be defined separately (see below) - - Definition of each area, e.g., [SouthernHemisphere_default] - - * lat_min: min. latitude - * lat_max: max. latitude - * lon_min: min. longitude - * lon_max: max. longitude - * stride: color difference interval (how many units per color/shade); if set to 0, the stride is calculated automatically using "maxshades" (max. number of colors/shades) - * maxshades: max. number of colors/shades - - The contour_limits_* are contour map limits and are given by 3 or 5 integers (min, max, diff, [dev_min, dev_max]). The min and max values define the limits for model maps (and the clear sky (cs) variant). The diff value gives a range [-diff, diff] for difference maps of model - obs (and cs). The last range [dev_min, dev_max] is the range for model/obs - model/obs (cs). - - * hfls, hfss (latent, sensible heat); rlut, rsut (long, shortwave radiation). - * contour_limits_clt: contour limits for total cloud cover - * contour_limits_clivi: contour limits for ice water path - * contour_limits_clwvi: contour limits for total condensed water path - * contour_limits_hfls: contour limits for latent heat - * contour_limits_hfss: contour limits for sensible heat - * contour_limits_rlut: contour limits for longwave radiation - * contour_limits_rsut: contour limits for shortwave radiation - * contour_limits_rlds: contour limits for surface downwelling longwave radiation - * contour_limits_rsds: contour limits for surface downwelling shortwave radiation - - Color maps for map plots. You may change the maps as you will, just google "python matplotlib colormaps" for examples. Color maps can be inverted by adding '_r' at the end. - - * colourmap_clouds: e.g., Blues - * colourmap_model: e.g., RdYlGn_r - * colourmap_diff: e.g., jet - * colourmap_dev: e.g., cool hot_r - - Definition of sub areas, e.g., [SouthernHemisphere_northern] - - * lat_min: min. latitude - * lat_max: max. latitude - * lon_min: min. longitude - * lon_max: max. longitude - - Definition of months covered by each season -- 1 is January and so forth, e.g., [SouthernHemisphere_season_DJF] - - * season_months: e.g., 12 1 2 - - Configuration for cloud vs radiation scatter plots - - * lat_min: min. latitude - * lat_max: max. latitude - * lon_min: min. longitude - * lon_max: max. longitude - * points: number of bins - - -Variables ---------- - -* clt: total cloud cover fraction (atmos, monthly mean, time latitude longitude) -* clivi: cloud ice water path (atmos, monthly mean, time latitude longitude) -* clwvi: total condensed water path (atmos, monthly mean, time latitude longitude) -* hfls: latent heat flux (atmos, monthly mean, time latitude longitude) -* hfss: sensible heat flux (atmos, monthly mean, time latitude longitude) -* rlut: top of atmosphere outgoing longwave radiation (atmos, monthly mean, time latitude longitude) -* rlutcs: top of atmosphere outgoing clear-sky longwave radiation (atmos, monthly mean, time latitude longitude) -* rsut: top of atmosphere outgoing shortwave radiation (atmos, monthly mean, time latitude longitude) -* rsutcs: top of atmosphere outgoing clear-sky shortwave radiation (atmos, monthly mean, time latitude longitude) - - -Observations and reformat scripts ---------------------------------- - -Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* CERES-EBAF (obs4mips) -* WHOI-OAFlux - - *Reformat script:* reformat_scripts/obs/reformat_obs_WHOI-OAFlux.ncl - -* CloudSat-L3 - - *Reformat script:* reformat_scripts/obs/reformat_obs_cloudsat.bash - -* MODIS-L3-C6 - - *Reformat script:* reformat_scripts/obs/reformat_obs_MODIS-L3-C6.ncl - -References ----------- - -None. - - -Example plots -------------- - -.. figure:: /namelists/figures/southern_hemisphere/fig1.png - :width: 90% -   :align: center - -.. figure:: /namelists/figures/southern_hemisphere/fig2.png - :width: 70% -   :align: center - -.. centered:: |pic_sh_1| |pic_sh_2| - -.. |pic_sh_1| image:: /namelists/figures/southern_hemisphere/fig3.png - :width: 45% - -.. |pic_sh_2| image:: /namelists/figures/southern_hemisphere/fig4.png - :width: 45% - -.. figure:: /namelists/figures/southern_hemisphere/fig5.png - :width: 45% -   :align: center - diff --git a/doc/sphinx/source/namelists/namelist_southern_ocean.rst b/doc/sphinx/source/namelists/namelist_southern_ocean.rst deleted file mode 100644 index 9517ae8d4c..0000000000 --- a/doc/sphinx/source/namelists/namelist_southern_ocean.rst +++ /dev/null @@ -1,162 +0,0 @@ -Southern ocean -============== - -Overview --------- - -These diagnostics include polar stereographic (difference) maps to compare the monthly/annual mean sea surface temperature, salinity and wind stress from ESMs with ERA-Interim data. Furthermore, there are scripts to plot the differences in the area mean vertical profiles of temperature and salinity between models and data from the World Ocean Atlas (Antonov et al., 2010; Locarnini et al., 2010). The ocean mixed layer thickness from models can be compared with that obtained from the Argo floats (Dong et al., 2008), again using polar stereographic (difference) maps. Finally, the Antarctic Circumpolar Current strength, as measured by water mass transport through the Drake Passage, is calculated using the same method as in the CDFTOOLS package (CDFtools). This diagnostic can be used to calculate the transport through other section as well, but is only available for EC-Earth/NEMO output for which all grid information is available. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_SouthernOcean.xml - -Diagnostics are stored in diag_scripts/ - -* SouthernOcean_polcon.ncl: create polar stereographic plots for ocean mixed layer thickness, sea surface salinity and sea surface temperature. -* SouthernOcean_polcon_diff.ncl: create polar stereographic plots of the difference between individual models and reference data for ocean mixed layer thickness, sea surface temperature and eastward and northward wind stress. All data are regridded to a common grid using the ESMF regridding software. -* SouthernOcean_vector_polcon_diff.ncl: create polar stereographic contour plots of the difference between individual model data and reference data similar to SouthernOcean_polcon_diff.ncl, but on top plots vectors (magnitude and direction) for both the individual models and the reference data. Currently it is used for wind stress, but it should be possible to use it for other variables with u and v components as well. All data are regridded to a common grid using the ESMF regridding software. -* SouthernOcean_areamean_vertconplot.ncl: calculate the average sea water salinity and temperature over a subdomain from model data and create a Hovmoller-like diagram with time and depth on the axes. All data are regridded to a common grid using the ESMF regridding software. -* SouthernOcean_transport.ncl: calculate the sea water volume transport across a section from the variables uo and vo using a similar approach as is done in the CDFTOOLS package. **Currently only available for EC-Earth/Nemo output** as the calculations are performed using uo and vo on a staggered grid and the grid dimensions of the u and v grids are required. - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_SouthernOcean/ - -#. SouthernOcean_polcon.ncl, SouthernOcean_polcon_diff.ncl, SouthernOcean_vector_polcon_diff.ncl - - * region: "Antarctic" (entire hemisphere will be evaluated) - * month: "A" (A = annual mean, 3 = March, 9 = September) - * styleset: "CMIP5", "DEFAULT" - * max_vert: max. number of rows on a panel page (vertical) - * max_hori: max. number of columns on a panel page (horizontal) - * grid_min: min. contour value (default = -1.0) - * grid_max: max. contour value (default = 1.0) - * grid_step: step between contours (default = 0.2) - * colormap: color table (from NCL distribution) - * PanelLabelBar: use single label bar per page (True, False) - * showunits: display units in figure title (True, False) - * range_option: 0 = use each model's time range specified in namelist, 1 = use only intersection of all time ranges - - Setting specific to SouthernOcean_vector_polcon_diff.ncl - - * vcmagnitude: magnitude of vectors (larger value = shorter arrows) - * vcmindist: controls density of vectors (larger value = less arrows) - * vccolormod: color of vectors for current model - * vccolorref: color of vectors for reference model - -#. SouthernOcean_areamean_vertconplot.ncl - - *Required diag_script_info attributes* - - * region: name of region ("Southern Ocean") - * West: western boundary of area - * East: eastern boundary of area - * South: southern boundary of area - * North: northern boundary of area - * styleset: plot style ("CMIP5", "DEFAULT") - - *Optional diag_script_info attributes* - - * grid_min: min. for plot scale - * grid_max: max. for plot scale - * grid_step: step size for plot scale - * colormap: e.g., WhiteBlueGreenYellowRed, rainbow - * dbg_plots: create additional plots for debugging purposes (True, False) - -#. SouthernOcean_transport.ncl - - *Required diag_script_info attributes* - - * styleset: plot style ("CMIP5", "DEFAULT") - * lon1: longitude of start of section - * lat1: latitude of start of section - * lon2: longitude of end of section - * lat2: latitude of end of section - * section_name: name used in title, e.g., "Drake passage" - - -Variables ---------- - -* hfds (atmos, monthly mean, longitude latitude time) = hfls + hfss + rsns + rlns -* mlotst (ocean, monthly mean, longitude latitude time) -* so (ocean, monthly mean, longitude latitude olevel time) -* sos (ocean, monthly mean, longitude latitude time) -* tauu (atmos, monthly mean, longitude latitude time) -* tauv (atmos, monthly mean, longitude latitude time) -* to (ocean, monthly mean, longitude latitude olevel time) -* tos (ocean, monthly mean, longitude latitude time) -* uo (ocean, monthly mean, longitude latitude olevel time) -* vo (ocean, monthly mean, longitude latitude olevel time) -* wfpe (atmos, monthly mean, longitude latitude time) = pr + evspsbl - - -Observations and reformat scripts ---------------------------------- - -**Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.** - -* Dong et al. (2008): Southern Ocean mixed-layer depth from Argo float profiles. - Reformat script: reformat_scripts/obs/reformat_obs_Dong08-ARGO-monthly.ncl. -* ERA-Interim, global atmospheric ECMWF reanalysis: SST, wind stress, precipitation, evaporation, etc. - - *Reformat scripts:* - - * variables tos, tauu, tauv: reformat_scripts/obs/reformat_obs_ERA-Interim.ncl - * variables pr, evspsbl, hfls, hfss, rsns, rlns: reformat_scripts/obs/reformat_obs_ERA-Interim-surffluxes.ncl - -* World Ocean Atlas 2009: sea water temperature and salinity - - *Reformat script:* reformat_scipts/obs/reformat_obs_WOA09.ncl - - - -References ----------- - -* Antonov, J. I., D. Seidov, T. P. Boyer, R. A. Locarnini, A. V. Mishonov, H. E. Garcia, O. K. Baranova, M. M. Zweng, and D. R. Johnson (2010). World Ocean Atlas 2009, Volume 2: Salinity. S. Levitus, Ed. NOAA Atlas NESDIS 69, U.S. Government Printing Office, Washington, D.C., 184 pp (available at ftp://ftp.nodc.noaa.gov/pub/WOA09/DOC/woa09_vol2_text.pdf). -* CDFtools: http://servforge.legi.grenoble-inp.fr/projects/CDFTOOLS -* Dong, S., J. Sprintall, S. T. Gille, and L. Talley (2008). Southern Ocean mixed-layer depth from Argo float profiles, J. Geophys. Res., 113, C06013, doi: 10.1029/2006JC004051. -* ERA-Interim: http://www.ecmwf.int/en/research/climate-reanalysis/era-interim -* ESMF regridding with ncl: http://www.ncl.ucar.edu/Applications/ESMF.shtml -* Locarnini, R. A., A. V. Mishonov, J. I. Antonov, T. P. Boyer, H. E. Garcia, O. K. Baranova, M. M. Zweng, and D. R. Johnson (2010). World Ocean Atlas 2009, Volume 1: Temperature. S. Levitus, Ed. NOAA Atlas NESDIS 68, U.S. Government Printing Office, * Washington, D.C., 184 pp. (available at ftp://ftp.nodc.noaa.gov/pub/WOA09/DOC/woa09_vol1_text.pdf). -* nco: http://nco.sourceforge.net -* World Ocean Atlas 2009: https://www.nodc.noaa.gov/OC5/WOA09/pr_woa09.html - - -Example plots -------------- - -.. centered:: |pic_so_1| |pic_so_2| - -.. |pic_so_1| image:: /namelists/figures/southern_ocean/fig1.png - :width: 45% - -.. |pic_so_2| image:: /namelists/figures/southern_ocean/fig2.png - :width: 45% - -.. centered:: |pic_so_3| |pic_so_4| - -.. |pic_so_3| image:: /namelists/figures/southern_ocean/fig3.png - :width: 60% - -.. |pic_so_4| image:: /namelists/figures/southern_ocean/fig4.png - :width: 35% - -.. centered:: |pic_so_5| |pic_so_6| |pic_so_7| - -.. |pic_so_5| image:: /namelists/figures/southern_ocean/fig5.png - :width: 25% - -.. |pic_so_6| image:: /namelists/figures/southern_ocean/fig6.png - :width: 25% - -.. |pic_so_7| image:: /namelists/figures/southern_ocean/fig7.png - :width: 25% - diff --git a/doc/sphinx/source/namelists/namelist_spi.rst b/doc/sphinx/source/namelists/namelist_spi.rst deleted file mode 100644 index 4431609709..0000000000 --- a/doc/sphinx/source/namelists/namelist_spi.rst +++ /dev/null @@ -1,91 +0,0 @@ -Standardized Precipitation Index (SPI) -====================================== - -Overview --------- - -For each month, the precipitation over the preceding TIMESCALE months, x, is summed. Then a two-parameter Gamma distribution of cumulative probability, Gamma\ :sub:`α,β`, is fitted to the strictly positive TIMESCALE month sums, such that the probability of a non-zero precipitation sum being below a certain value x corresponds to Gamma\ :sub:`α,β`\ (x). We estimate shape parameter α and scale parameter β with a maximum likelihood approach. If the estimation does not converge, α and β are approximated using empirical relations (Bordi et al., 2001). Accounting for TIMESCALE month periods of no precipitation, occurring at a frequency q, the total cumulative probability distribution of a precipitation sum below x, H(x), becomes H(x) = q + (1 - q) * Gamma\ :sub:`α,β`\ (x). In the last step, a precipitation sum x is assigned to its corresponding Standardized Precipitation Index (SPI) value by computing the quantile q\ :sub:`N(0,1)` of the standard normal distribution at probability H(x). The SPI of a precipitation sum x, thus, corresponds to the quantile of the standard normal distribution which is assigned by preserving the probability of the original precipitation sum, H(x). - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_SPI.xml - -Diagnostics are stored in diag_scripts/ - -* SPI.r - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_SPI/ - -#. SPR.r - - * begin.ref.year: first year of the reference period - * end.ref.year: last year of the reference period - * timescale: valid values are 3, 6 and 12 months - * seasons: "ann", "djf", "mam", "jja", "son" - * spi_colorbar_max: color bar range (= -spi_colorbar_max … +spi_colorbar_max) - * my.colors: colors for contour plot, e.g., colorRampPalette(c("brown", "orange", "white", "lightblue", "blue")) - * png_width: width of png image - * png_height: height of png image - * png_units: units of png dimensions ("px" = pixels, "in" = inches, "cm" = centimeters, "mm" = millimeters) - * png_pointsize: the default size of plotted text in points (1/72 inch) - * png_bg: background color, e.g., "white" - - -Variables ---------- - -* pr (atmos, monthly mean, longitude latitude time) - - -Observations and reformat scripts ---------------------------------- - -**Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.** - - - -References ----------- - -*A very good explanation of SPI* - -* Lloyd-Hughes, B. and Saunders, M. A. (2002), A drought climatology for Europe. Int. J. Climatol., 22, 1571-1592. doi: 10.1002/joc.846. - -*Other standard SPI references* - -* Guttman, N. B. (1999), ACCEPTING THE STANDARDIZED PRECIPITATION INDEX: A CALCULATION ALGORITHM. JAWRA Journal of the American Water Resources Association, 35, 311-322. doi: 10.1111/j.1752-1688.1999.tb03592.x. - -* McKee, T. B., N. J. Doesken, and J. Kliest, 1993: The relationship of drought frequency and duration to time scales. In Proceedings of the 8th Conference of Applied Climatology, 17-22 January, Anaheim, CA. American Meterological Society, Boston, MA. 179-184. - -* McKee, T. B, N. J. Doesken, and J. Kliest, 1995: Drought Monitoring with Multiple Time Scales. 9th AMS Conference on Applied Climatology, 15-20 January 1995, Dallas, Texas. - - -Example plots -------------- - -.. figure:: /namelists/figures/spi/fig1.png - :width: 100% - - - - - - - - - - - - - - - - diff --git a/doc/sphinx/source/namelists/namelist_template.rst b/doc/sphinx/source/namelists/namelist_template.rst deleted file mode 100644 index c746269908..0000000000 --- a/doc/sphinx/source/namelists/namelist_template.rst +++ /dev/null @@ -1,64 +0,0 @@ -TEMPLATE FOR NAMELIST -===================== - -Overview --------- - -TBD - - -Available namelists and diagnostics ------------------------------------ - -TBD - - -User settings -------------- - -TBD - - -Variables ---------- - -TBD - - -Observations and reformat scripts ---------------------------------- - -TBD - - - -References ----------- - -TBD - -q -Example plots -------------- - -TBD - -.. figure:: /namelists/figures/TBDNAMELIST/TBDnnFIG.png - :scale: 50 % - :alt: xxxx - - CAPTION CAN GO HERE - - - - - - - - - - - - - - diff --git a/doc/sphinx/source/namelists/namelist_tropical_variability.rst b/doc/sphinx/source/namelists/namelist_tropical_variability.rst deleted file mode 100644 index f36bb8c084..0000000000 --- a/doc/sphinx/source/namelists/namelist_tropical_variability.rst +++ /dev/null @@ -1,140 +0,0 @@ -Tropical variability -==================== - -Overview --------- - -The available diagnostics are motivated by the work of Li and Xie (2014). In particular, this diagnostics reproduces their Fig. 5 for models and observations/reanalyses, calculating equatorial mean (5°N-5°S), longitudinal sections of annual mean precipitation (pr), skin temperature (ts), horizontal winds (ua and va) and 925 hPa divergence (derived from the sum of the partial derivatives of the wind components extracted at the 925 hPa pressure level (that is du/dx + dv/dy). Latitude cross sections of the model variables are plotted for the equatorial Pacific, Indian and Atlantic Oceans with observational constraints provided by the TRMM-3B43-v7 for precipitation, the HadISST for SSTs, and ERA-interim reanalysis for temperature and winds. Latitudinal sections of absolute and normalized annual mean SST and precipitation are also calculated spatially averaged for the three ocean basins. Normalization follows the procedure outlined in Fig. 1 of Li and Xie (2014) whereby values at each latitude are normalized by the tropical mean (20°N-20°S) value of the corresponding parameter (e.g., annual mean precipitation at a given location is divided by the 20°N-20°S annual mean value). Finally, to assess how models capture observed relationships between SST and precipitation the co-variability of precipitation against SST is calculated for specific regions of the tropical Pacific. This analysis includes calculation of the Mean Square Error (MSE) between model SST/precipitation and observational equivalents. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_TropicalVariability.xml - -Diagnostics are stored in diag_scripts/ - -* TropicalVariability.py -* TropicalVariability_EQ.py -* TropicalVariability_wind.py - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_Tropical Variability/ - -#. TropicalVariability.py, TropicalVariability_EQ.py, TropicalVariability_wind.py - - *Settings for all diagnostics* - - * plot_equatorial: switch for equatorial plots (True, False) - * plot_scatter: switch for scatter plots (True, False) - * plot_zonal_means: switch for zonal mean plots (True, False) - * plot_clouds: True, False - * plot_fluxes: True, False - * mask_unwanted_values: mask values (e.g., missing values) exceeding "mask_limit_low" and "mask_limit_high" (True, False) - * mask_limit_low: lower threshold used for creating a mask (if "mask_unwanted_values" = True) - * mask_limit_high: upper threshold used for creating a mask (if "mask_unwanted_values" = True) - * plot_grid: provides a background grid for relavant plots (True, False) - - *Settings for equatorial mean plots with precipitation, temperature and winds* - - * areas: region to process ("Atlantic", "Indian", "Pacific"); each region is defined separately - - *Definition of regions ("areas")* - - * lat_min: min. latitude of region - * lat_max: max. latitude of region - * lon_min: min. longitude of region - * lon_max: max. longitude of region - * prec_min: range of values for precipitation (min.) - * prec_max: range of values for precipitation (max.) - * temp_min: range of values for temperature/SST (min.) - * temp_max: range of values for temperature/SST (max.) - * wind_min: range of values for wind speed (min.) - * wind_max: range of values for wind speed (max.) - * div_min: range of values for divergence (min.) - * div_max: range of values for divergence (max.) - - *Settings for temperature/precipitation scatter plots* - - * areas: region to process ("West-Pacific", "Central-Pacific", "East-Pacific") - * seasons: season (annual DJF MAM JJA SON) - * seasonal_limits: if you want to use your own limits (True) or let the code decide (False - values based on observations) - - *Definition of regions ("areas") for scatter plots* - - * lat_min: min. latitude of region - * lat_max: max. latitude of region - * lon_min: min. longitude of region - * lon_max: max. longitude of region - * season_limits_annual: "seasonal" limits (annual means), 4 integer numbers giving 'min. temp.' 'max. temp.' 'min. precip.' 'max. precip.', e.g., 300 303 4 10 - * season_limits_DJF: same as season_limits_annual, but for Dec-Jan-Feb (DJF) - * season_limits_MAM: same as season_limits_annual, but for Mar-Apr-May (MAM) - * season_limits_JJA: same as season_limits_annual, but for Jun-Jul-Aug (JJA) - * season_limits_SON: same as season_limits_annual, but for Sep-Oct-Nov (SON) - - *Definition of the seasons (each season defined separately)* - - * season_months: numbers of the months covered by the corresponding season, e.g., "12 1 2" for the season "DJF" - - *Settings for zonal means of SST and precipitation* - - * areas: region to process (Pacific Atlantic Indian) - - *Definition of the regions ("areas")* - - * lat_min: min. latitude of region - * lat_max: max. latitude of region - * lon_min: min. longitude of region - * lon_max: max. longitude of region - - -Variables ---------- - -* ts: skin temperature (atmos, monthly mean, time latitude longitude) -* pr: precipitation (atmos, monthly mean, time latitude longitude) -* ua: u-wind (atmos, monthly mean, time plevel latitude longitude) -* va: v-wind (atmos, monthly mean, time plevel latitude longitude) - - -Observations and reformat scripts ---------------------------------- - -**Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions.** - -* HadISST: skin Temperature (ts) / sea surface temperature (SST) - - *Reformat script:* reformat_scripts/obs/reformat_obs_HadISST.ncl - -* TRMM-L3 (pr, monthly means - obs4mips) - -* ERA-Interim (u-wind, v-wind) - - *Reformat script:* reformat_scripts/obs/reformat_obs_ERA-Interim.ncl - -References ----------- - -* Li, G. and S.-P. Xie (2014), Tropical Biases in CMIP5 Multimodel Ensemble: The Excessive Equatorial Pacific Cold Tongue and Double ITCZ Problems. J. Climate, 27, 1765-1780. doi: https://doi.org/10.1175/JCLI-D-13-00337.1. - - -Example plots -------------- - -.. centered:: |pic_tropvar_1| |pic_tropvar_2| - -.. |pic_tropvar_1| image:: /namelists/figures/tropical_variability/fig1.png - :width: 45% - -.. |pic_tropvar_2| image:: /namelists/figures/tropical_variability/fig2.png - :width: 45% - -.. figure:: /namelists/figures/tropical_variability/fig3.png - :width: 60% -   :align: center - diff --git a/doc/sphinx/source/namelists/namelist_wam.rst b/doc/sphinx/source/namelists/namelist_wam.rst deleted file mode 100644 index fed425f3d2..0000000000 --- a/doc/sphinx/source/namelists/namelist_wam.rst +++ /dev/null @@ -1,251 +0,0 @@ -West African Monsoon (WAM) -========================== - -Overview --------- - -West Africa is a critical region for climate models (e.g., Cook and Vizy, 2006; Roehrig et al., 2013). Roehrig et al. (2013) show that although state-of-the-art CMIP5 models can capture many features of the West African monsoon, they have not yet reached a sufficient degree of maturity that makes them trustable to anticipate climate changes and their impacts in this region, especially with regard to rainfall. Therefore, along the process of climate model development and evaluation, it is crucial for model developers and users to have at their disposal a set of synthetic and simple diagnostics that provide them an overall vision of the representation of the West African monsoon in their model or set of models. Such diagnostics are implemented in this namelist. - - -Available namelists and diagnostics ------------------------------------ - -Namelists are stored in nml/ - -* namelist_WAMonsoon.xml -* namelist_WAMonsoon_daily.xml - -Diagnostics are stored in diag_scripts/ - -* WAMonsoon_10W10E_1D_basic.ncl: same as WAMonsoon_10W10E_3D_basic.ncl but for a 2D variable (e.g., precipitation, potential temperature at 850 hPa). -* WAMonsoon_10W10E_3D_basic.ncl: computes the zonal average over 10°W-10°E of a 3-dimensional variable (e.g., zonal wind, meridional wind, potential temperature). It is then averaged over the JJAS season and plotted as a latitude-level transect over West Africa. -* WAMonsoon_autocorr.ncl: similar to WAMonsoon_isv_filtered.ncl, except that it computes the 1-day autocorrelation of intraseasonal anomalies of any field (e.g., precipitation), as a measure of convection persistence. -* WAMonsoon_contour_basic.ncl: computes the average of any 2-dimensional field over the JJAS season and plots it as a latitude-longitude map zoomed over West Africa. It is used for precipitation, 2-m air temperature and 850-hPa potential temperature (heat low signature). -* WAMonsoon_precip_IAV.ncl: plots the interannual variability of precipitation averaged over JJAS and over the Sahel (10°N-20°N, 10°W-10°E). -* WAMonsoon_isv_filtered.ncl: filters any 2-dimensional field, computes the standard deviation of the filtered field over the JJAS season and plots it on a latitude-longitude map zoomed over West Africa. High-pass and band-pass filter based on the Lanczos filtering method are available. Basically, this is used for computing the 90-day high pass or 3-10-day bandpass filtered precipitation or outgoing longwave radiation standard deviation, namely the intraseasonal and synoptic (African easterly waves) standard deviation. Data are first interpolated on a common grid before any computations. We advise a 1°x1° grid for precipitation (reference is GPCP version 1.2, 1DD, available on this grid) and a 2.5°x2.5° grid for OLR (reference is from NOAA satellites, and available on this grid). -* WAMonsoon_precip_seasonal.ncl: computes the mean monthly annual cycle of any 2-dimensional variable averaged over a given latitude-longitude box and plots it for the given models and reference data set. It is used for precipitation and 2-m air temperature averaged over the Sahel (10°N-20°N, 10°W-10°E). -* WAMonsoon_wind_basic.ncl: computes the average of zonal and meridional wind component over the JJAS season and plots it as a latitude-longitude map for a given level (200 and 700 hPa). Zonal wind is in shading and total wind is in vector. The map is zoomed over West Africa. - - -User settings -------------- - -User setting files (cfg files) are stored in nml/cfg_WAMonsoon/ - -#. WAMonsoon_10W10E_1D_basic.ncl - - *Required diag_script_info attributes* - - * latrange: min. and max. latitude for plot (2-elemen array) - * lonrange: min. and max. longitude for plot (2-element array) - * minmax: lower and upper limit of values in plot (2-element array) - * season: season, typically "JJAS" - - *Optional diag_script attributes* - - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - * cn_levels_stddev_basic: contour levels for standard deviation plot (n-element array) - * cn_levels_stddev_diff_basic: contour levels for difference stdandard deviation plot (n-element array) - * legendPos: position of legend ("TopRight", "BottomRight", "TopLeft", "BottomLeft") - * multi_model_mean: calculate multi-model mean ("y", "n") - * plottype_lbres: plot labelbar (True, False) - * styleset: stylesheet to use ("CMIP5", "DEFAULT") - * x_gridlines: display gridline along x-axis ("y", "n") - * y_gridlines: display gridline along y-axis ("y", "n") - -#. WAMonsoon_10W10E_3D_basic.ncl - - *Required diag_script_info attributes* - - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - * latrange: min. and max. latitude for plot (2-element array) - * lonrange: min. and max. longitude for plot (2-element array) - * levrange: max. and min. pressure (Pa) for plot (2-element array) - * plottype_lbres: handle for labelbar settings (True, False) - * season: season, typically "JJAS" - * plot_stddev: switch for plotting stdandard deviation (True, False) - * diff_colormap: filename and full path for colormap for difference plot, e.g., "diag_scripts/aux/WAMonsoon/cmap_difference_theta.rgb" - - *Optional diag_script_info attributes* - - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - -#. WAMonsoon_autocorr.ncl - - *Required diag_script_info attributes* - - * cn_levels_corr_basic: contour levels for correlation plot (n-element array) - * cn_levels_corr_diff_basic: contour levels for correlation difference plot (n-element array) - * latrange: min. and max. latitude for plot (2-elemen array) - * lonrange: min. and max. longitude for plot (2-element array) - * sahel_latrange: min. and max. latitude of "Sahel" region (2-element array) - * sahel_lonrange: min. and max. longitude of "Sahel" region (2-element array) - * season: season, typically "JJAS" - * destgrid: destination grid for ESMF regridding ("1x1", "2.5x2.5") - * styleset: stylesheet to use ("CMIP5", "DEFAULT") - * my_region: label for Monsoon region, e.g., "WA" - * filter_hp: value for high pass filter - * filter_type: "hp" = high pass filter, "bp" = band pass filter - * filter_weights: filter weights - * filter_min, filter_max: required for band pass filter only - -#. WAMonsoon_contour_basic.ncl - - *Required diag_script_info attributes* - - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - * latrange: min. and max. latitude for plot (2-element array) - * lonrange: min. and max. longitude for plot (2-element array) - * season: season, typically "JJAS" - * my_region: label for Monsoon region, e.g., "WA" - * plot_stddev: switch for plotting stdandard deviation (True, False) - * cn_levels_stddev_basic: contour levels for standard deviation plot (only required if plot_stddev = True) (n-element array) - * cn_levels_stddev_diff_basic: contour levels for standard deviation difference plot (only required if plot_stddev = True) (n-element array) - * diff_colormap: filename and full pathname of colormap for difference plots, e.g., "diag_scripts/aux/WAMonsoon/cmap_difference.rgb" - -#. WAMonsoon_precip_IAV.ncl, WAMonsoon_precip_seasonal.ncl - - *Required diag_script_info attributes* - - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - * cn_levels_stddev_basic: contour levels for standard deviation plot (n-element array) - * cn_levels_stddev_diff_basic: contour levels for difference stdandard deviation plot (n-element array) - * diff_colormap: filename and full pathname of colormap for difference plots, e.g., "diag_scripts/aux/WAMonsoon/cmap_difference.rgb" - * latrange_seasonal: min. and max. latitude of crop region for plot (2-element array) - * lonrange_seasonal: min. and max. longitude of crop region for plot (2-element array) - * season: season, typically "JJAS" - * styleset: stylesheet to use ("CMIP5", "DEFAULT") - * multi_model_mean: calculate multi-model mean ("y", "n") - * m y_region: label for Monsoon region, e.g., "WA" - * supporting_gridlines: display supporting grid line ("y", "n") - -#. WAMonsoon_isv_filtered.ncl - - *Required diag_script_info attributes* - - * season: season, typically "JJAS" - * destgrid: destination grid for ESMF regridding ("1x1", "2.5x2.5") - * styleset: stylesheet to use ("CMIP5", "DEFAULT") - * latrange_basic: min. and max. latitude for plot (2-elemen array) - * lonrange_basic: min. and max. longitude for plot (2-element array) - * diff_colormap: filename and full pathname of colormap for difference plots, e.g., "diag_scripts/aux/WAMonsoon/cmap_difference.rgb" - * cn_levels_stddev_basic: contour levels for standard deviation plot (n-element array) - * cn_levels_stddev_diff_basic: contour levels for difference standard deviation plot (n-element array) - * plot_norm: plot normalized stdandard deviation (True, False) - * cn_levels_stddev_norm_basic: contour levels for normalized standard deviation plot (n-element array) - * cn_levels_stddev_norm_diff_basic: contour levels for normalized standard deviation difference plot (n-element array) - * sahel_latrange: min. and max. latitude of "Sahel" region (2-element array) - * sahel_lonrange: min. and max. longitude of "Sahel" region (2-element array) - * filter_type: "hp" = high pass filter, "bp" = band pass filter - * filter_hp: value for high pass filter - * filter_weights: filter weights - * filter_min, filter_max: required for band pass filter only - * my_region: label for Monsoon region, e.g., "WA" - -#. WAMonsoon_wind_basic.ncl - - *Required diag_script_info attributes* - - * styleset: stylesheet to use ("CMIP5", "DEFAULT") - * season: season, typically "JJAS" - * latrange_basic: min. and max. latitude for plot (2-element array) - * lonrange_basic: min. and max. longitude for plot (2-element array) - * cn_levels_mean_basic: contour levels for mean plot (n-element array) - * cn_levels_mean_diff_basic: contour levels for difference plot (n-element array) - * diff_colormap: filename and full pathname of colormap for difference plots, e.g., "diag_scripts/aux/WAMonsoon/cmap_difference_wind.rgb" - * cn_levels_stddev_basic: contour levels for standard deviation plot (n-element array) (if plot_stddev = True) - * cn_levels_stddev_diff_basic: contour levels for difference standard deviation plot (n-element array) (if plot_stddev = True) - * plottype_lbres: plot labelbar (True, False) - * my_region: label for Monsoon region, e.g., "WA" - * use_for_contour: switch for kind of contour ("speed", "zonal" (ua), "meridional" (va)) - * plot_stddev: plot standard deviation (True, False) - -Variables ---------- - -* pr (atmos, monthly mean, longitude latitude time) -* tas (atmos, monthly mean, longitude latitude time) -* rlut (atmos, monthly mean, longitude latitude time) -* rsut (atmos, monthly mean, longitude latitude time) -* rlutcs (atmos, monthly mean, longitude latitude time) -* rsutcs (atmos, monthly mean, longitude latitude time) -* rlds (atmos, monthly mean, longitude latitude time) -* rsds (atmos, monthly mean, longitude latitude time) -* ua (atmos, monthly mean, longitude latitude plev time) -* va (atmos, monthly mean, longitude latitude plev time) -* ta (atmos, monthly mean, longitude latitude plev time) -* pr (atmos, daily mean, longitude latitude time) -* rlut (atmos, daily mean, longitude latitude time) - - -Observations and Reformat Scripts ---------------------------------- - -Note: (1) obs4mips data can be used directly without any preprocessing; (2) see headers of reformat scripts for non-obs4mips data for download instructions. - -* ERA-Interim Reanalysis (tas, ua, va) - - *Reformat script*: reformat_scripts/obs/reformat_obs_ERA-Interim.ncl - -* GPCP monthly (pr) -- obs4mips -* CERES-EBAF (TOA and derived surface radiation fluxes) -- obs4mips -* GPCP Version 1.2, daily and 1°x1° (pr) -- obs4mips -* Daily NOAA OLR - - *Reformat script*: reformat_scripts/obs/reformat_obs_NOAA-PSD-Interp.ncl - -References ----------- - -* Cook, K. H. and E. K. Vizy, 2006: Coupled model simulations of the West African monsoon system: Twentieth- and twenty-first-century simulations. J. Climate, 19, 3681-3703. -* Roehrig, R., D. Bouniol, F. Guichard, F. Hourdin, and J.-L. Redelsperger, 2013: The Present and Future of the West African Monsoon: A Process-Oriented Assessment of CMIP5 Simulations along the AMMA Transect. J. Climate, 26, 6471-6505. doi: https://doi.org/10.1175/JCLI-D-12-00505.1. - - -Example plots -------------- - -.. centered:: |pic_wamonsoon_1| |pic_wamonsoon_2| - -.. |pic_wamonsoon_1| image:: /namelists/figures/wam/fig1.png - :width: 45% - -.. |pic_wamonsoon_2| image:: /namelists/figures/wam/fig2.png - :width: 45% - -.. centered:: |pic_wamonsoon_3| |pic_wamonsoon_4| - -.. |pic_wamonsoon_3| image:: /namelists/figures/wam/fig3.png - :width: 45% - -.. |pic_wamonsoon_4| image:: /namelists/figures/wam/fig4.png - :width: 45% - -.. centered:: |pic_wamonsoon_5| |pic_wamonsoon_5| - -.. |pic_wamonsoon_5| image:: /namelists/figures/wam/fig5.png - :width: 45% - -.. |pic_wamonsoon_6| image:: /namelists/figures/wam/fig6.png - :width: 45% - -.. centered:: |pic_wamonsoon_7| |pic_wamonsoon_8| - -.. |pic_wamonsoon_7| image:: /namelists/figures/wam/fig7.png - :width: 45% - -.. |pic_wamonsoon_8| image:: /namelists/figures/wam/fig8.png - :width: 45% - -.. centered:: |pic_wamonsoon_9| |pic_wamonsoon_10| - -.. |pic_wamonsoon_9| image:: /namelists/figures/wam/fig9.png - :width: 45% - -.. |pic_wamonsoon_10| image:: /namelists/figures/wam/fig10.png - :width: 45% - diff --git a/doc/sphinx/source/preface.rst b/doc/sphinx/source/preface.rst index b4e424829c..43ac641ec7 100644 --- a/doc/sphinx/source/preface.rst +++ b/doc/sphinx/source/preface.rst @@ -1,20 +1,11 @@ -.. raw:: latex - - \section*{Preface} - -.. raw:: html - -

Preface

+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 (:numref:`annex_c`). +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 (**:numref:`core_dev_team` **and http://www.esmvaltool.org/). Thank you!** - -.. raw:: latex - - \clearpage +**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/process_ncl_docs.py b/doc/sphinx/source/process_ncl_docs.py deleted file mode 100644 index b8adf924a2..0000000000 --- a/doc/sphinx/source/process_ncl_docs.py +++ /dev/null @@ -1,253 +0,0 @@ -""" -This script is part of the ESMValTool distribution. It's been added as part of the incorporation -of the Sphinx documentation generator. Sphinx was originally developed for documenting Python code, -and one of its features is that it is able - using the so-called autodoc extension - to extract -documentation strings from Python source files and use them in the documentation it generates. - -The autodoc feature apparently does not exist for NCL source files (such as those which are used in -ESMValTool), but it has been mimicked (or - more-or-less - reverse-engineered) here via this script, -which walks through a subset of the ESMValTool NCL scripts, extracts function names, argument lists -and descriptions (from the comments immediately following the function definition), and assembles -them in a subdirectory of doc/sphinx/source. These output files are in the so-called reStructuredText -format (see, e.g., http://docutils.sourceforge.net/rst.html), which is the markup language used by -Sphinx; running make in doc/sphinx builds the ESMValTool documentation from them, as noted above. - -Created on July 14, 2015 - -@author: jeremy.walton@metoffice.gov.uk -""" - -import os -import glob -import re -import string -import collections - - -def make_param_details(params): - """ - Create a list of parameter names and types from the params string. - :param params: - :return: - """ - - # We'll store the parameter names and their types in a dictionary. Note that it has to be - # an ordered dictionary, because later on we want to pull the entries out in the same order - # that we added them. - param_details = collections.OrderedDict() - for param in params: - - # Extract the type if it's specified, otherwise default to integer (say). - if ':' in param: - [pname, ptype] = param.split(':') - else: - pname = param - ptype = 'integer' - - # If the parameter is an array, we only want its name in the description. - pname = pname.split('[')[0] - pname = pname.strip() - - # Tie the name and the type of the parameter together. - param_details[pname] = ptype - - return param_details - - -def process_params(params, inp, oup): - """ - Extract the parameter names and types from the params string, pull their - descriptions out from the input file and reformat the lot in the output. - """ - - # Get the names and types. - param_details = make_param_details(params) - - # We assume we're at the line before the first parameter description. Bump it, then check to see - # if we're really at the right location and issue a warning if not. - line = inp.next() - if param_details.keys()[0] not in line: - print "Warning - parameter " + param_details.keys()[0] + " not found in this line:\n" + line - - # Want a blank line just before parameter descriptions. - oup.write('\n') - - # Loop over all parameters in the argument list. - for i, pname in enumerate(param_details.keys()): - - # Now assemble the description from the line(s). - if pname in line: - - # Get the text in the line which follows the first occurrence (reading from the left) - # of the parameter name, then strip trailing spaces (including the CR). - pdesc = line.split(pname, 1)[1] - pdesc = pdesc.rstrip() - - # The description could continue on the following lines, which need to be concatenated - # together. For all except the last parameter, the end of the description is signaled - # by the name of the next parameter. For the last (or maybe the only) parameter, it's - # signaled by a blank line. - line = inp.next() - if i < len(param_details.keys())-1: - pnext = param_details.keys()[i+1] - if pnext not in line: - # Do the concatenation, stripping whitespace (including the CR) as we go. - while pnext not in line: - pdesc += " " + line.replace(';;', ' ', 1).strip() - line = inp.next() - else: - while not line.replace(';;', ' ', 1).isspace(): - pdesc += " " + line.replace(';;', ' ', 1).strip() - line = inp.next() - - # Ensure the description starts with a colon. - if pdesc[0] != ':': - pdesc = ':' + pdesc - - # Write out the complete description of this parameter. - oup.write(' :param ' + param_details[pname] + ' ' + pname + pdesc + '\n') - - # Want a blank line just after parameter descriptions. - oup.write('\n') - - -def find_argument(inp): - """ - Find the start of the Arguments list. - """ - - line = inp.next() - count = 1 - while 'Arguments' not in line: - line = inp.next() - - # We assume we're going to find this within two lines of the original location of the input - # - stop looking if we don't. - count += 1 - if count > 2: - return False - - return True - - -def parse_file(in_filename, out_filename): - """ - Processes an ncl file and produces an rst file as output, which contains documentation of the - ncl functions in a form suitable for input to the Sphinx documentation generator. - :param in_filename: - :param out_filename: - :return: - """ - - # Open the files. - try: - inp = open(in_filename, "r") - except IOError: - print "Couldn't open", in_filename - return - - try: - oup = open(out_filename, "w") - except IOError: - print "Couldn't open", out_filename - return - - # We assume the file name has the form /path/to/foo.ncl, and the module name is foo. Pull it out, - # and write it to the output file as the title. - mod_name = os.path.splitext(os.path.basename(in_filename))[0] - - oup.write(':mod:' + '`' + mod_name + '`' + '\n') - oup.write("=" * (7+len(mod_name)) + '\n') - - for line in inp: - - # Is this the start of a function? - if re.match('^function', line) or re.match('^procedure', line): - - # The function could have parameters on the following lines. Concatenate them - # up until the closing bracket, stripping whitespace (including the CR) as we go. - fname = line.rstrip() - while ')' not in fname: - line = inp.next() - fname += " " + line.strip() - - # Some ncl files have backslashes in the function declaration to indicate continuation to the - # next line (even though this isn't necessary in ncl). These will mess up our processing of - # the argument list, and don't look good in the doc. so we pull them out here. - fname = string.replace(fname, '\\', '') - - # Write the line out from the word 'function' onwards, and suitably decorated for rst. - # Need the CR at the end, as we've been pulling that off throughout the assembly of this line. - oup.write('.. function:: ' + fname[len('function')+1:] + '\n') - - # Now extract the list of parameters from the function declaration. First, pull - # out the text between the brackets, then split that into individual parameter names. - plist = fname.split('(')[1].split(')')[0] - params = plist.split(',') - - # Position the input just after the line containing 'Arguments'. - if not find_argument(inp): - print "Warning - argument list not found for " + fname - else: - - # Here's where we check whether this function has any parameters. If it doesn't, - # then we don't need to process any. - if len(plist) > 0: - # Read the parameter descriptions and reformat them before writing them out. - process_params(params, inp, oup) - - # We assume the first batch of comments immediately following the function are - # part of the documentation. - line = inp.next() - while re.match('^;;', line): - - # Write out this line, replacing the comments with spaces. - oup.write(string.replace(line, ';;', ' ', 1)) - line = inp.next() - - # Close the files. - inp.close() - oup.close() - - -def create_doc_files_from_ncl(): - # Do some rudimentary checking of where this script is being run from, because we're going to be - # using relative paths below to find the directories containing the input & output. - file_path = os.path.dirname(os.path.realpath(__file__)) - esmval_root_folder = os.path.abspath(os.path.join(file_path, '..', '..', '..')) - - # List the directories containing input files, then loop over them. - ncl_folders = {'diag_scripts': 'lib/ncl', 'plot_scripts': 'ncl'} - for ncl_folder in ncl_folders: - in_dir = os.path.join(esmval_root_folder, ncl_folder, ncl_folders[ncl_folder]) - # Form the output directory name from the input directory name (NB we assume the - # latter are all named ../../../foo/bar, where foo is the useful part of the name. - out_dir = os.path.join(esmval_root_folder, "doc/sphinx/source/", ncl_folder) - if not os.path.isdir(out_dir): - os.makedirs(out_dir) - - # Find all the ncl files in the input directory, and loop over them. - in_files = glob.glob(os.path.join(in_dir, '*.ncl')) - index_file = open(os.path.join(out_dir, 'index.rst'), 'w') - write_index_header(index_file, ncl_folder) - - for nclFile in in_files: - print "Processing " + nclFile - rst_file = os.path.join(out_dir, os.path.basename(nclFile).replace('.ncl', '.rst')) - parse_file(nclFile, rst_file) - index_file.write(' ') - index_file.write(os.path.basename(nclFile).replace('.ncl', '')) - index_file.write('\n') - - -def write_index_header(index_file, ncl_folder): - index_file.write(ncl_folder.upper()) - index_file.write('\n') - index_file.write('-' * len(ncl_folder)) - index_file.write('\n') - index_file.write('\n') - index_file.write('.. toctree::\n :maxdepth: 2\n\n') - - -if __name__ == '__main__': - create_doc_files_from_ncl() diff --git a/doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_1.png b/doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_1.png similarity index 100% rename from doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_1.png rename to doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_1.png diff --git a/doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_2.png b/doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_2.png similarity index 100% rename from doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_2.png rename to doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_2.png diff --git a/doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_3.png b/doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_3.png similarity index 100% rename from doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_3.png rename to doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_3.png diff --git a/doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_4.png b/doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_4.png similarity index 100% rename from doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_4.png rename to doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_4.png diff --git a/doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_5.png b/doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_5.png similarity index 100% rename from doc/sphinx/source/namelists/figures/perfmetrics/perfmetrics_fig_5.png rename to doc/sphinx/source/recipes/figures/perfmetrics/perfmetrics_fig_5.png diff --git a/doc/sphinx/source/recipes/index.rst b/doc/sphinx/source/recipes/index.rst new file mode 100644 index 0000000000..7aa47cdc48 --- /dev/null +++ b/doc/sphinx/source/recipes/index.rst @@ -0,0 +1,7 @@ +Recipes +------------ + +.. toctree:: + :maxdepth: 1 + + recipe_perfmetrics diff --git a/doc/sphinx/source/namelists/namelist_perfmetrics.rst b/doc/sphinx/source/recipes/recipe_perfmetrics.rst similarity index 83% rename from doc/sphinx/source/namelists/namelist_perfmetrics.rst rename to doc/sphinx/source/recipes/recipe_perfmetrics.rst index dfe89394fa..1f8ae91718 100644 --- a/doc/sphinx/source/namelists/namelist_perfmetrics.rst +++ b/doc/sphinx/source/recipes/recipe_perfmetrics.rst @@ -6,14 +6,14 @@ Performance metrics for essential climate parameters Overview -------- -The goal is to create a standard namelist for the calculation of performance metrics to quantify the ability of the models to reproduce the climatological mean annual cycle for selected "Essential Climate Variables" (ECVs) plus some additional corresponding diagnostics and plots to better understand and interpret the results. The namelist can be used to calculate performance metrics at different vertical levels (e.g., 5, 30, 200, 850 hPa as in Gleckler et al., 2008) and in four regions (global, tropics 20°N-20°S, northern extratropics 20°-90°N, southern extratropics 20°-90°S). As an additional reference, we consider the Righi et al. (2015) paper. +The goal is to create a standard recipe for the calculation of performance metrics to quantify the ability of the models to reproduce the climatological mean annual cycle for selected "Essential Climate Variables" (ECVs) plus some additional corresponding diagnostics and plots to better understand and interpret the results. The recipe can be used to calculate performance metrics at different vertical levels (e.g., 5, 30, 200, 850 hPa as in Gleckler et al., 2008) and in four regions (global, tropics 20°N-20°S, northern extratropics 20°-90°N, southern extratropics 20°-90°S). As an additional reference, we consider the Righi et al. (2015) paper. -Available namelists and diagnostics +Available recipes and diagnostics ----------------------------------- -Namelists are stored in nml/ +Recipes are stored in nml/ -* namelist_perfmetrics_CMIP5.xml +* recipe_perfmetrics_CMIP5.xml Diagnostics are stored in diag_scripts/ @@ -122,21 +122,21 @@ Example plots .. centered:: |pic_permetrics1| |pic_permetrics2| -.. |pic_permetrics1| image:: /namelists/figures/perfmetrics/perfmetrics_fig_1.png +.. |pic_permetrics1| image:: /recipes/figures/perfmetrics/perfmetrics_fig_1.png :width: 50% -.. |pic_permetrics2| image:: /namelists/figures/perfmetrics/perfmetrics_fig_2.png +.. |pic_permetrics2| image:: /recipes/figures/perfmetrics/perfmetrics_fig_2.png :width: 30% .. centered:: |pic_permetrics3| |pic_permetrics4| -.. |pic_permetrics3| image:: /namelists/figures/perfmetrics/perfmetrics_fig_3.png +.. |pic_permetrics3| image:: /recipes/figures/perfmetrics/perfmetrics_fig_3.png :width: 30% -.. |pic_permetrics4| image:: /namelists/figures/perfmetrics/perfmetrics_fig_4.png +.. |pic_permetrics4| image:: /recipes/figures/perfmetrics/perfmetrics_fig_4.png :width: 52% -.. figure:: /namelists/figures/perfmetrics/perfmetrics_fig_5.png +.. figure:: /recipes/figures/perfmetrics/perfmetrics_fig_5.png :width: 75% :align: center diff --git a/doc/sphinx/source/references.rst b/doc/sphinx/source/references.rst deleted file mode 100644 index 15776f6be5..0000000000 --- a/doc/sphinx/source/references.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _references: - -References -********** - - * Flato, G., Marotzke, J., Abiodun, B., Braconnot, P., Chou, S. C., Collins, W., Cox, P., Driouech, F., Emori, S., Eyring, V., Forest, C., Gleckler, P., Guilyardi, E., Jakob, C., Kattsov, V., Reason, C., and Rummukainen, M.: Evaluation of Climate Models. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change, Stocker, T. F., D. Qin, G.-K. Plattner, M. Tignor, S.K. Allen, J. Boschung, A. Nauels, Y. Xia, V. Bex and P.M. Midgley (Ed.), Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, 2013. - * NCL (2014) The NCAR Command Language (Version 6.2.1) [Software]. (2014). Boulder, Colorado: UCAR/NCAR/CISL/VETS. https://doi.org/10.5065/D6WD3XH5 - * PEP8 (2001) https://www.python.org/dev/peps/pep-0008/ - * Taylor, K. E., Stouffer, R. J., and Meehl, G. A.: An Overview of Cmip5 and the Experiment Design, B Am Meteorol Soc, 93, 485-498, 2012. - * XML http://www.w3.org/TR/xml/www.gmail.com diff --git a/doc/sphinx/source/running.rst b/doc/sphinx/source/running.rst deleted file mode 100644 index 6244ec0556..0000000000 --- a/doc/sphinx/source/running.rst +++ /dev/null @@ -1,588 +0,0 @@ -.. _running: - -Running the ESMValTool -********************** - -The following section gives a brief description of the steps required by a user to run an existing diagnostic. As an example, the toy diagnostic *MyDiag* is chosen to illustrate the basic steps: - -1. Check/edit the “namelist configuration file” (e.g., *config_private.xml*) (see :numref:`nml_config`). If needed, set/change the base path names for the input data (model and observations) and the output data. Note: the use of a “namelist configuration file” is optional in order to allow for machine specific standard search paths for input (and output) data without having to change the actual namelists. Alternatively, explicit path names can be used in the namelists. - -2. Check/edit the main namelist *nml/namelist_MyDiag.xml*: - - a. Set/check the file name of the “namelist configuration file” (defining the base path names) to be used by the ESMValTool (typically, this is the second line in the namelist, e.g., ). - - b. If needed, set the pathnames in the section for the “work” directory (wrk_dir), the directory for the plots (plot_dir) and the directory for reformatted files (climo_dir). See :numref:`glob_tag` for details and :numref:`tab_glob_tags` for a complete list of variables in the section. - - c. In the section, define the model(s) to be used, including the root path for the actual model data, e.g., - - *CMIP5_ETHZ MPI-ESM-LR Amon historical r1i1p1 2000 2004 @{MODELPATH}/ETHZ_CMIP5/* - - (see step 1 and :numref:`nml_config` for details on how to set base path names such as @{MODELPATH}; alternatively, explicit path names can be used). See :numref:`mod_tag`, :numref:`tab_proj_spec` and :numref:`tab_mod_tags` for details. The first year (here: 2000) and last year (here: 2004) of the model data processed for each model is specified in this section. - - d. Optionally, change variable and the field type in the section. See :numref:`diag_tag`, :numref:`tab_diag_tags` and :numref:`tab_diag_att` for details. An overview of the available “field types” is given in :numref:`tab_fld_typ`, :numref:`tab_var_def` lists the available variables. Please note that the diagnostic section may include additional models and/or observational data. - -3. Check/edit the configuration file *nml/cfg_MyDiag/cfg_MyDiag.ncl*. In case of the toy diagnostics *MyDiag*, you can for example change the map projection for the contour plot by changing the value of the attribute diag_script_info\@projection. - -4. Run the ESMValTool (in the ESMValTool root directory): *python main.py nml/namelist_MyDiag.nml* - -5. The output will be written to a subdirectory named like the diagnostics package (e.g., *MyDiag*) in the directories specified in the section of the namelist (see step 1 and also :numref:`nml_config`). The default directories are: *work/MyDiag* for the NetCDF output and *work/plots/MyDiag* for the plot(s) (see also :numref:`fig_example`). Acknowledgements and references are written to the file *work/refs-acknows_MyDiag.txt*. - -.. _fig_example: -.. figure:: /figures/example_figure3.png - :align: center - :width: 50% - - Example plot created by the toy diagnostic MyDiag showing the - 5-year annual mean temperature at 200 hPa from the CMIP5 historical run - (r1i1p1) with the MPI-ESM-LR model. - -.. _diag_avail: - -Available diagnostics and metrics -================================= - -An introduction to the available diagnostics and metrics packages implemented into the ESMValTool v1.1 including a description of the user settings, observational data used, references, and example plots is given in :numref:`annex_c`. - -.. _mod_obs_run: - -Model and observational data -============================ - - -Model data ----------- - -The project specifier (see :numref:`tab_proj_spec`) used in the section of the -namelist (see :numref:`mod_tag` for details) determines the directory structure and -file naming convention expected by the ESMValTool. The two most commonly used -project specifiers are *CMIP5* and *CMIP5_ETHZ*. Both are used to process -CMIP5 data available from the Earth System Federation Grid (e.g., -http://esgf.llnl.gov/). In order to download CMIP5 data, registration and -creation of an “openID” is required. Instructions can be found here: http://cmip-pcmdi.llnl.gov/cmip5/data_getting_started.html. - -Besides downloading files individually, the CMIP5 data portal is capable of -generation a script for automated download of model data using GNU *wget* (https://www.gnu.org/software/wget/). The *wget* script generation is recommended for downloading a large number files and/or large data volume. - -Any CMIP5 files downloaded to a single directory can be moved to a CMIP5 like directory structure using the NCL script *util/CMIP5_sort/CMIP5_sort.ncl*. The script *CMIP5_sort.ncl* expects all files to be moved to the CMIP5 like directory structure in the current directory (“.”). The root directory for creating the CMIP5 like directory structure is specified in the script *CMIP5_sort.ncl* via the variable *“outpath”*. The script is run via: - - *ncl /util/CMIP5_sort/CMIP5_sort.ncl* - -The CMIP5 files will be moved into the directories outpath/experiment/mip/variable/name/ensemble/ for direct usage with the roject specifier CMIP5_ETHZ (see below). “experiment”, “mip”, “variable” and “name” (= model name) are automatically extracted from the filename. - - -**The project specifier CMIP5** - -Syntax of the *CMIP5* specifier in the -tag (see :numref:`mod_tag` and :numref:`tab_proj_spec` -for details): - - * CMIP5 name mip experiment ensemble start_year end_year* **path** ** - -The project specifier CMIP5 will search for files in “**path**” with filenames -matching the pattern - - *variable_mip_name_experiment_ensemble_*.nc* - -Note: “variable” is specified in the -section (see :numref:`diag_tag` for -details). If “variable” is a derived quantity, all variables needed to -calculate the derived quantity are processed automatically. - -**The project specifier CMIP5_ETHZ** - -Syntax of the *CMIP5_ETHZ* specifier in the -tag (see :numref:`mod_tag` and -:numref:`tab_proj_spec` for details): - - * CMIP5_ETHZ name mip experiment ensemble start_year end_year* - **path** ** - -The project specifier *CMIP5_ETHZ* will search for files in -“**path/experiment/mip/variable/name/ensemble**” with filenames matching the -pattern - - :emphasis:`variable_mip_name_experiment_ensemble_*.nc` - -This directory structure resembles the ESGF CMIP5 directory structure. - -Note: “variable” is specified in the -section (see :numref:`diag_tag` for -details). If “variable” is a derived quantity, all variables needed to -calculate the derived quantity are processed automatically. - - - -.. _obs_data: - -Observational / reanalysis data -------------------------------- - -When possible, observations from the obs4MIPs/ana4MIPs archives are used in -the model evaluation. These data are freely available from the ESGF in the -same format as the CMIP simulations and can be directly used in the ESMValTool -using the **obs4mips** or **ana4mips** project specifiers (see :numref:`tab_proj_spec`) in the -namelist. - -A collection of all observational data used by the diagnostics of the -ESMValTool (master branch) is hosted at DLR and can be made available -(restrictions by the data owner permitting) on request (see :numref:`tab_obs_data`). The -reformatted observational data can be read using e.g., the **OBS** class in the -namelist (see below). - -All observations are tiered as follows: - - * Tier 1: data sets from the obs4MIPs and ana4MIPs archives - * Tier 2: other freely available data sets - * Tier 3: restricted data sets (e.g., license agreement required) - -Observational data sets not available in the obs4MIPs/ana4MIPs archives need -to be reformatted according to the CF/CMOR standard before they can be used -(see :numref:`dl_obs` and :numref:`mod_obs_data` for more details). - -**The project specifier OBS** - -Syntax of the *OBS* specifier in the -tag (see :numref:`mod_tag` and :numref:`tab_proj_spec` -for details): - - * OBS name case_name ensemble start_year end_year* **path** - ** - -The project specifier OBS will search for files in “**path**” with filenames -matching the pattern - - :emphasis:`OBS_name_casename_ensemble_fieldtype_variable*.nc` - -Note: “variable” and “fieldtype” are specified in the -section (see -:numref:`diag_tag` for details). If “variable” is a derived quantity, all variables -needed to calculate the derived quantity are processed automatically. - -**The project specifier obs4mips** - -Syntax of the *obs4mips* specifier in the -tag (see :numref:`mod_tag` and :numref:`tab_proj_spec` for details): - - * obs4mips name process_level ensemble start_year end_year* **path** - ** - -The project specifier obs4mips will search for files in “**path/name/**” with -filenames matching the pattern - - :emphasis:`variable_name_processlevel_ensemble_*.nc` - -Note: “variable” is specified in the -section (see :numref:`diag_tag` for -details). If “variable” is a derived quantity, all variables needed to -calculate the derived quantity are processed automatically. - -.. _dl_obs: - -Downloading and creating observational data sets ------------------------------------------------- - -obs4MIPS and ana4MIPs data sets (“tier 1”, see above) are freely available -from the ESGF. These data sets can be used directly with the ESMValTool -without the need for reformatting. Examples of such data sets include: - - * AIRS - * CERES-EBAF - * CFSR - * CloudSat-L3 - * GPCP-1DD, GPCP-SG - * IFS-Cy31r2 - * ISCCP - * MERRA - * MISR - * MODIS - * TES - * TRMM, TRMM-L3 - -**For the required file naming conventions and the expected directory structure see :numref:`obs_data`** - -For all other (non-obs4MIPs and non-ana4MIPs) data sets, reformatting routines -are provided with downloading and processing instructions in the header of the -scripts. These reformatting scripts can be found in: - - *reformat_scripts/obs/* - -These reformat scripts can be specified in a namelist-file -(e.g. *namelist_reformat_obs.xml*) and executed by calling the main.py script -with the option “-r” or “--reformat”: - - *python main.py –r namelist_reformat_obs.xml* - -This reformat namelist file contains the tag that can hold multiple --tags specifying the reformat scripts to be called: - -.. code-block:: xml - - /PATH/TO/REFORMATSCRIPT - - -An example reformat namelist file is listed below: - -.. code-block:: xml - - - - - ############################################################################### - namelist_reformat_obs.xml - - Description - Special namelist for reformatting observational data. - The currently available reformat scripts are stored in reformat_scripts/obs/ - To run this namelist the -r option must be given: - python main.py -r nml/namelist_reformat_obs.xml - - This namelist is part of the ESMValTool - ############################################################################### - - - - ./reformat_scripts/obs/reformat_obs_1.ncl - ./reformat_scripts/obs/reformat_obs_2.ncl - ./reformat_scripts/obs/reformat_obs_3.ncl - - ./reformat_scripts/obs/reformat_obs_N.ncl - - - - -A list of available data sets and their corresponding reformatting routines -are given in :numref:`tab_obs_data`. - - **Table S9** Observational data for use with the ESMValTool. See headers of the - reformatting routines for downloading and processing instructions. - -.. _tab_obs_data: - -.. tabularcolumns:: |p{1.8cm}|p{0.6cm}|p{2.3cm}|p{1.6cm}|p{1.5cm}|p{1.9cm}|p{4.2cm}| - -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -| **Name** |**Tier** |**Description** | **Variables** | **Type** | **Time range** | **Script name** | -+====================+=========+===============================+=====================+=============+================+===============================+ -|**ACCESS** | 3 |Aerosol vertical profiles | mmrbc | Campaign | -- | reformat_obs_ACCESS.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ACCESS-2** | 3 |Aerosol vertical profiles | conccnd5, conccnd10 | Campaign | 2014-2014 | reformat_obs_ACCESS-2.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**AERONET** | 2 |Aerosol optical depth at 550nm | od550aer | Ground | 1992-2012 | reformat_obs_AERONET.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**AIRS** | 1 |relative humidity, temperature | hur, hus, ta | Satellite | 2003-2010 | none (obs4MIPS) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Asmi11** | 2 |Aerosol size distributions | sizecnSTP | Ground | 2009-2010 | reformat_obs_Asmi11.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**AURA-MLS-OMI** | 2 |Tropospheric column ozone | tropoz | Satellite | 2005-2013 | reformat_obs_AURA-MLS-OMI.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**AURA-TES** | 2 |Ozone mixing ration | vmro3 | Satellite | 2005-2009 | reformat_obs_AURA-TES.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**BDBP** | 3 |zonally averaged ozone profiles| tro3prof | Ozone sondes| 1979-2007 | reformat_obs_BDBP.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CARSNET** | 2 |Aerosol optical depth at 550 nm| od550aer | Ground | 2002-2013 | reformat_obs_CARSNET.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CASTNET** | 2 |Aerosol surface level | concso4, concso3, | Ground | S1987-2012 | reformat_obs_CASTNET.ncl | -| | |concentration | concnh4 | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CERES** | 3 |CERES synoptic data (radiative |rsuscs, rsus, rsdscs,| Satellite | 2004 |reformat_obs_CERES-SYN1deg | -| | |fluxes at surface, toa) |rsds, rluscs, rlus, | | |-SFC.bash, reformat_obs_CERES- | -| | | |rldscs, rlds, rsutcs,| | |SYN1deg-TOA.bash | -| | | |rsut, rlutcs, rlut | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CFSR** | 1 | Surface pressure | psl | Reanalysis | 2013 | none (obs4MIPs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CIRRUS** | 3 | Aerosol vertical profiles | mmrbc, mmrbcfree | Campaign | late Nov. 2006 | reformat_obs_CIRRUS.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CLARA-A2** | 2 | Cloud cover | clt | Satellite | 1982-2015 | contact ESMValtool development| -| | | | | | | team | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CloudSat** | 1 | Cloud cover | clt | Satellite | 2006-2010 | reformat_obs_cloudsat.bash | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CMAP** | 2 | Precipitation | pr | merged | 1980-2013 | reformat_obs_CMAP.ncl | -| | | | | analysis | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Concert** | 3 | Aerosol vertical profiles | mmrbc, conccnSTP14 | Campaign | -- | reformat_obs_CONCERT.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CR-AVE** | 3 | Aerosol vertical profiles | mmrbc | Campaign | -- | reformat_obs_CR-AVE.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**CRU** | 3 | Surface temperature, | tas, pr | Reanalysis | 1901-2006 | reformat_obs_CRU.ncl | -| | | precipitation | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**DC3** | 3 | Aerosol vertical profiles | mmrbc | Campaign | -- | reformat_obs_DC3.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Dong08-ARGO** | 2 | Derived ocean mixed layer | mlotst | Campaign | 2001-2006 | reformat_obs_Dong08-ARGO- | -| | | depth | | | | monthly.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**EANET** | 3 | Aerosol surface level | concso4, consco3, | Ground | 2001-2005 | reformat_obs_EANET.ncl | -| | | concentrations | concnh4 | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**EMEP** | 2 | Aerosol surface level | concso4, concno3, | Ground | 1970-2012 |reformat_obs_EMEP.csh | -| | | concentration | concnh4, concnh4, | | | | -| | | | concpm2p5, concpm10 | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Emmons** | 2 | Vertical profiles of gases | various | Campaign | variable | reformat_obs_Emmons.csh | -| | | | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ERA-40** | 3 | essential climate variables | ta, ua | Reanalysis | 1960-2001 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ERA-Interim** | 3 | Basic climate parameters | ta, ua, va, zg, hus,| Reanalysis | 1979-2012 |reformat_obs_ERA-Interim.ncl, | -| | | | tas, tos, ps, psl, | | |reformat_obs_ERA-Interim- | -| | | | tauu, tauv, clwvi, | | |surffluxes.ncl | -| | | | clivi, sftif | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ERA-Interim** | 3 | Basic climate parameters, | pr, evspsbl, hfls, | Forecast | 2000-2005 |reformat_obs_ERA-Interim-surffl| -|**fluxes** | | surface fluxes | hfss, rsns, rlns | | |uxes.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-AEROSOL** | 2 | Aerosol optical depth at 550 | od550aer, od870aer, | Satellite | 1997-2011 |reformat_obs_ESACCI-AEROSOL.ncl| -| | | nm | od550lt1aer, | | | | -| | | | abs550aer, | | | | -| | | | od550aer-Stderr, | | | | -| | | | od870aer-Stderr | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-CLOUD** | 2 | Total cloud fraction, Liquid | clt, clwvi, clivi, | Satellite | 2007-2009 |reformat_obs_ESACCI-CLOUD.ncl | -| | | water path, Ice water path | lwpStderr, iwpStderr| | | | -| | | | , cltStderr | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-GHG** | 2 | column averaged CO\ :sub:`2`\ | xco2, xco2Stderr, | Satellite | 2003-2014 |reformat_obs_ESACCI-GHG.ncl | -| | | and CH\ :sub:`4` | xch4, xch4Stderr | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-OZONE** | 2 | Total ozone column, | toz, tro3prof, | Satellite | 2007-2008 |reformat_obs_ESACCI-OZONE.ncl, | -| | | Tropospheric column ozone, | tozStderr, | | |reformat_obs_ESACCI-OZONE- | -| | | Ozone mixing ratio | tro3Stderr | | |PL.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-SIC** | 2 | Sea ice concentrationtoz | sic, sicStderr | Satellite | 2003-2010 |reformat_obs_ESACCI-SIC.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-** | 2 | Degree of saturation | dos, dosStderr, | Satellite | 1988-2008 |reformat_obs_ESACCI- | -|**SOILMOISTURE** | | | sm, smStderr | | |SOILMOISTURE.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESACCI-SST** | 2 | Sea surface temperature (saved| ts, tsStderr | Satellite/ | 1992-2010 |reformat_obs_ESACCI-SST.ncl | -| | | as skin temperature) | | Analysis | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ESRL** | 2 | CO\ :sub:`2`\ surface level | co2 | Ground | 1973-2012 |reformat_obs_ESRL.ncl | -| | | concentrations | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ETH-SOM-FFN** | 2 | pCO\ :sub:`2`\ ocean surface | spco2 | -- | 1998-2011 |reformat_obs_ETH-SOM-FFN.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**GCP** | 2 | CO\ :sub:`2`\ exchange | co2flux, fgco2, nbp | Reanalysis | 1959-2011 |reformat_obs_GCP.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**GLOBAL-VIEW** | 2 | CO surface level | vmrco | Ground | 1991-2008 |reformat_obs_GLOBAL-VIEW.ncl | -| | | concentrations | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**GPCC** | 2 | Precipitation | pr | Reanalysis | 1901-2010 |reformat_obs_GPCC.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**GPCP** | 1 | Precipitation | pr, prStderr | -- | 1979-2013 | none (obs4MIPs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**GTO-ECV** | 3 | Total column ozone | toz | Satellite | 1996-2010 |reformat_obs_GTO-ECV.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**HadCRUT** | 2 | Near-surface air temperature | tas | Ground | 1850-2013 |reformat_obs_HadCRUT.ncl | -| | | | | | |reformat_obs_HadCRUT4.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**HadISST** | 2 | Sea ice concentrations and | sic, ts | Reanalysis | 1870-2014 |reformat_obs_HadISST.ncl | -| | | sea surface temperatures | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**HALOE** | 2 | Water vapour mixing ratio | vmrh2o | Satellite | 1991-2002 |reformat_obs_HALOE.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**HIPPO** | 3 | Aerosol vertical profiles | mmrbc | Campaign | -- |reformat_obs_HIPPO.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**HWSD** | 2 | Soil carbon content | cSoil | Ground | 2000 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**IFS-Cy31r2** | 1 | Surface pressure | psl | Reanalysis | 1979-2013 | none (obs4MPIs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**IMPROVE** | 2 | Aerosol surface level | concso4, concno3, | Ground | 1988-2011 | reformat_obs_IMPROVE.ncl | -| | | concentrations | concnh4, concbc, | | | | -| | | | concoa, concpm2p5, | | | | -| | | | concpm10 | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**INCA** | 3 | Aerosol vertical profiles | conccnSTP5, | Campaign | -- | reformat_obs_INCA.ncl | -| | | | conccnSTP14, | | | | -| | | | conccnSTP120 | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ISCCP** | 1 | Cloud properties | albisccp, clisccp, | Satellite | 1984-2007 | none (obs4MPIs) | -| | | | cltisccp, cttisccp | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**ISCCP-FD-SRF** | 2 | Clear-sky radiative fluxes | rsdscs, rsuscs | Satellite | 1984-2009 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**JMA-TRANSCOM** | 3 | CO\ :sub:`2`\ exchange | nbp, fgco2 | Reanalysis | 1985-2008 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**LACE** | 2 | Aerosol size distributions | sizecn | Campaign | -- | reformat_obs_LACE.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**LAI3g** | 3 | Leaf area index | LAI | Reanalysis | 1982-2010 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**LandFlux-EVAL** | 3 | Evapotranspi-ration | et, et-sd | Synthesis | 1989-2005 | reformat_obs_landflux-eval.ncl| -| | | | | product | | | -| | | | | (model + | | | -| | | | | observa- | | | -| | | | | tions) | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MERRA** | 1 | Precipitation | pr | Reanalysis | 1979-2011 | none (obs4MPIs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MISR** | 1 | Aerosol optical depth | od550aer | Satellite | 2001-2012 | none (obs4MPIs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MLS** | 1 | humidity, temperature | hus, husStderr, | Satellite | 2005-2010 | none (obs4MPIs) | -| | | | ta, taStderr | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MODIS-CFMIP** | 2 | Ice water path | clivi | Satellite | 2003-2014 | reformat_obs_MODIS-CFMIP.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MODIS_ L3_C6** | 2 | Ice water path, liquid water | clivi, clwvi, clt, | Satellite | 2003-2014 | reformat_obs_MODIS-L3-C6.ncl | -| | | path, total cloud cover, | od550aer | | | | -| | | aerosol optical depth | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**MTE** | 2 | Gross primary productivity of | gpp | Reanalysis | 1982-2008 | | -| | | carbon | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**NCEP** | 2 | Essential climate variables | ta, ua, va, zg, hus,| Reanalysis | 1948-2012 | reformat_obs_NCEP.ncl, | -| | | | tas | | | reformat_obs_NCEP-daily.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**NDP** | 2 | Vegetation carbon content | cVeg | Ground | 2000 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**NIWA** | 3 | Total column ozone | toz | Reanalysis | 1980-2010 | reformat_obs_NIWA.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**NOAA interpola-** | 2 | Interpolated outgoing | rlut | Satellite | 1975-2013 | reformat_obs_NOAA-PSD- | -|**ted OLD** | | longwave radiation | | | | Interp.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**NSIDC** | 2 | Sea ice concentrations | sic | Satellite | 1978-2010 | reformat_obs_NSIDC.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**PATMOS** | 2 | Cloud cover | clt | Satellite | 1982-2014 | *contact ESMValtool* | -| | | | | | | *development team* | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Putaud** | 2 | Aerosol size distributions | sizecn | Campaign | -- | reformat_obs_Putaud.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**SALTRACE** | 3 | Aerosol vertical profiles | mmrbc | Campaign | -- | reformat_obs_SALT-RACE.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**SeaWIFS** | 2 | Ocean biochemistry | chl | | 1997-2010 | reformat_obs_SeaWIFS.csh | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**SOCAT** | 2 | Ocean surface CO\ :sub:`2` | spco2 | | 1970-2011 | reformat_obs_SOCAT.csh | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**SRB** | 2 | Radiative fluxes | rsut, rlut, rlutcs | Satellite | 1983-2007 | reformat_obs_SRB.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**SSMI-MERIS** | 1 | Water vapour path | prw, prwStderr | Satellite | 2003-2008 | none (obs4MIPs) | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**takahashi14** | 2 | Ocean biogeochemistry | talk | | 2005 | reformat_obs_takahashi14.csh | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**TC4** | 3 | Aerosol vertical profiles | mmrbc | Campaign | -- | reformat_obs_TC4.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**TES** | 1 | Ozone | tro3 | | 2006-2009 | reformat_obs_TES.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Texas** | 3 | Aerosol vertical profiles | mmrbc, mmraer | Campaign | -- | reformat_obs_Texas.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**Tilmes** | 2 | Ozone mixing ratios | vmro3 | in-situ | 1995-2009 | reformat_obs_Tilmes.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**TOMS** | 2 | Total ozone column | toz | Satellite | 1990 | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**TRMM-3B42** | 2 | Precipitation | pr | Satellite | 1998-2014 | reformat_obs_TRMM-3B42- | -| | | | | | | daily.ncl, reformat_obs_TRMM- | -| | | | | | | 3B42-3hourly.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**UCN-Pacific** | 3 | Aerosol vertical profiles | conccnSTP3 | Campaign | -- | reformat_obs_UCN-Pacific.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**UWisc** | 3 | Liquid water path | clwvi, lwpStderr | Satellite | 1988-2007 | reformat_obs_UWisc.ncl | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**WHOI-OAFlux** | 2 | Global ocean heat flux and | hfls, hfss | Analysis | 1958-2013 | reformat_obs_WHOI-OAFlux.ncl | -| | | evaporation | | | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**WOA09** | 2 | Climatological ocean fields | so, sos, to, tos | Analyzed | -- | reformat_obs_WOA09.ncl | -| | | | | climatology | | | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ -|**woa2005** | 2 | Ocean biogeochemistry | o2 | | 2005 | reformat_obs_woa2005.csh | -+--------------------+---------+-------------------------------+---------------------+-------------+----------------+-------------------------------+ - - - -The acknowledgements log file -============================= - -Each diagnostics in the tool automatically generates a log file containing a -list of authors/contributors, details on the projects to be acknowledged and -the reference papers to be cited. It also provides a list of the used model -and observational data with the corresponding references. - -The log is created automatically when running the ESMValTool. The log file is -named *refs-acknow_.txt* and written to the directory defined in -the section of the namelist (variable wrk_dir, see section :numref:`glob_tag`), -e.g., *work/refs-acknows_MyDiag.txt* (see also :numref:`running`, step 4). - -An example excerpt of an acknowledgements log file is provided below. - - -**Example** - -.. code-block:: xml - - --------------------------------------------------------------------------- - +++++++++++++ ESMValTool REFERENCES and ACKNOWLEDGEMENTS LOG ++++++++++++++ - --------------------------------------------------------------------------- - - Namelist file: namelist_perfmetrics_CMIP5.xml - Creation date: Wed Dec 16 22:58:29 CET 2016 - ESMValTool version: 1.1.0 - Host name: ### - User name: ### - - Licensed under the Apache License, Version 2.0 (the "License"); you may - not use this file except in compliance with the License. You may obtain - a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS"BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - Please acknowledge the use of the ESMValTool. - Please cite Eyring et al., ESMValTool (v1.0) – a community diagnostic and - performance metrics tool for routine evaluation of Earth System Models in - CMIP, Geosci. Model Dev., 2016. - For the specific diagnostics, see below. - - - =========================================================================== - === perfmetrics_main.ncl === - - AUTHOR(S): - -A- ### - - CONTRIBUTOR(S): - -C- ### - -C- ### - -C- ### - - REFERENCE(S) FOR THIS DIAGNOSTIC: - -R- Please cite Righi et al., Geosci. Model Dev., 8, 733-768 - doi:10.5194/gmd-8-733-2015, 2015. - -R- Please cite Gleckler et al., J. Geophys. Res., 113, D06104, - doi:10.1029/2007JD008972, 2008. - - REFERENCE(S) FOR THE OBSERVATIONS: - -R- NCEP - Kalnay et al., Bull. Amer. Meteor. Soc., 77, 437-470, 1996. - -R- ERA-Interim - -R- AIRS - -R- CERES-EBAF - -R- SRB - - ACKNOWLEDGEMENTS FOR THE PROJECTS: - -P- EU FP7 project EMBRACE - -P- DLR project ESMVal - - PREPROCESSING/REFORMATTING (ESMValTool v1.1.0): - - Variable: ta - - Model: ERA-Interim - Input file(s): - (1) OBS_reanaly_ERA-Interim_1_T3M_ta_2000-2001.nc - Original source file(s) of all input file(s): - -S- (1) - \@{OBSPATH}/Tier3/ERA-Interim/OBS_ERA-Interim_reanaly_1_T3M_ta.nc - Fixes applied to original source file(s): none - Reference(s) of original source file(s): - (1) Dee, D. P. et al., Q. J. Roy. Meteor. Soc., 137, 553-597, - doi:10.1002/qj.828, 2011. - - Model: MPI-ESM-LR - Input file(s): - (1) CMIP5_ETHZ_Amon_historical_MPI-ESM-LR_r1i1p1_T3M_ta_1998-2002.nc - Original source file(s) of all input file(s): - -S- (1) \@{MODELPATH}/ETHZ_CMIP5/historical/Amon/ta/MPI-ESM-LR/r1i1p1/ - ta_Amon_MPI-ESM-LR_historical_r1i1p1_199001-199912.nc - (tracking_id: ea695cd3-6234-4ddf-a68e-b4d82a2e7305) - -S- (2) \@{MODELPATH}/ETHZ_CMIP5/historical/Amon/ta/MPI-ESM-LR/r1i1p1/ - ta_Amon_MPI-ESM-LR_historical_r1i1p1_200001-200512.nc - (tracking_id: f9134520-0445-4461-9a48-14d8663dab74) - Fixes applied to original source file(s): - ./reformat_scripts/fixes/CMIP5_MPI-ESM-LR_fix.ncl - - [...] diff --git a/doc/sphinx/source/tutorial.rst b/doc/sphinx/source/tutorial.rst deleted file mode 100644 index 64131538d3..0000000000 --- a/doc/sphinx/source/tutorial.rst +++ /dev/null @@ -1,5 +0,0 @@ -.. _my-tutorial-label: - -ESMValTool tutorial -=================== - diff --git a/doc/sphinx/source/user_guide.rst b/doc/sphinx/source/user_guide.rst deleted file mode 100644 index e05b11533b..0000000000 --- a/doc/sphinx/source/user_guide.rst +++ /dev/null @@ -1,11 +0,0 @@ -User's Guide -############ - - -.. include:: intro.rst -.. include:: install.rst -.. include:: namelists.rst -.. include:: directory.rst -.. include:: config_files.rst -.. include:: running.rst - diff --git a/doc/sphinx/source/user_guide2/index.rst b/doc/sphinx/source/user_guide2/index.rst index 10c530605b..899edc57f8 100644 --- a/doc/sphinx/source/user_guide2/index.rst +++ b/doc/sphinx/source/user_guide2/index.rst @@ -2,9 +2,5 @@ User's guide ####################### -.. include:: intro.rst -.. include:: install.rst -.. .. include:: namelists.rst -.. .. include:: directory.rst -.. .. include:: config_files.rst -.. .. include:: running.rst +.. include:: intro.inc +.. include:: install.inc diff --git a/doc/sphinx/source/user_guide2/install.rst b/doc/sphinx/source/user_guide2/install.inc similarity index 94% rename from doc/sphinx/source/user_guide2/install.rst rename to doc/sphinx/source/user_guide2/install.inc index 18f17cb8d6..991727b45c 100644 --- a/doc/sphinx/source/user_guide2/install.rst +++ b/doc/sphinx/source/user_guide2/install.inc @@ -72,6 +72,11 @@ For a minimal conda installation go to https://conda.io/miniconda.html. To simplify the process, an environment definition file is provided within the repository (``environment.yml`` in the root folder). +.. attention:: + Some systems provides a preinstalled version of conda (e.g., via the module environment). + Several users however reported problems when installing NCL with such versions. It is + therefore preferable to use a local, fully user-controlled conda installation. + Note that the standard conda installation has some issues with the ``csh``/``tcsh`` login shell. If you are using such shell, do not prepend the install location (````) to PATH in your ``.tcshrc`` file (as suggested by diff --git a/doc/sphinx/source/user_guide2/intro.rst b/doc/sphinx/source/user_guide2/intro.inc similarity index 64% rename from doc/sphinx/source/user_guide2/intro.rst rename to doc/sphinx/source/user_guide2/intro.inc index ad2d6563ac..f099dd3214 100644 --- a/doc/sphinx/source/user_guide2/intro.rst +++ b/doc/sphinx/source/user_guide2/intro.inc @@ -4,7 +4,7 @@ Introduction The Earth System Model Evaluation Tool (ESMValTool) is a community-development that aims at improving diagnosing and understanding of the causes and effects of model biases and inter-model spread. The ESMValTool is open to both users and developers encouraging open exchange of diagnostic source code and evaluation results from the Coupled Model Intercomparison Project (CMIP) ensemble. This will facilitate and improve ESM evaluation beyond the state-of-the-art and aims at supporting the activities within CMIP and at individual modelling centers. We envisage running the ESMValTool routinely on the CMIP model output utilizing observations available through the Earth System Grid Federation (ESGF) in standard formats (obs4MIPs) or made available at ESGF nodes. -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 namelists 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". +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. @@ -19,10 +19,10 @@ 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 (doi:10.17874/ac8548f0315) +upon use alongside with the software doi (to be added for v2) and version number: -* Eyring et al., ESMValTool (v1.0) - a community diagnostic and performance metrics tool for routine evaluation of Earth System Models in CMIP, Geosci. Model Dev., 9, 1747-1802, 2016.* +* 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 @@ -36,10 +36,10 @@ effort by the development team. Architecture ============ -:numref:`fig_schematic` shows a schematic of the ESMValTool architecture: the workflow manager (controlled by the Python script "main.py") runs a set of diagnostics on data provided by, for instance, a data archive. The configuration and the settings of each diagnostic are specified in namelists read and passed to the diagnostics by the workflow manager. The results which typically comprise of netCDF files and/or plots are stored in output folders along with log-files summarizing the data used, references, and technical details to ensure traceability and reproducibility of the results. +: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. The workflow manager (main.py) passes information to the diagnostics; results and log-files are written to dedicated folders. + Schematic of the system architecture. diff --git a/doc/sphinx/source/writing.rst b/doc/sphinx/source/writing.rst deleted file mode 100644 index 90e55da424..0000000000 --- a/doc/sphinx/source/writing.rst +++ /dev/null @@ -1,598 +0,0 @@ - - -.. _writing: - -Writing a diagnostic script or a metrics set -******************************************** - -The development of a new diagnostic (or set of diagnostics) requires the -following steps before getting started: - - * Creating a *FEATURE BRANCH* (see :numref:`annex_b`) in the applicable project subdirectory of the Git repository (via Git, see :numref:`git_repository`). Developers are encouraged to work actively through the Git repository. Regular “commits” to the repository help to document changes introduced to the ESMValTool and allow for efficient sharing of code with other developers. - * Setting up a wiki documentation page for the new diagnostic/performance metrics following the documentation templates (see :numref:`std_nml` and :numref:`documentation`). For details on the ESMValTool development team wiki see :numref:`wiki`. - * Creating a standard namelist following the template described in section :numref:`header`. - -**General coding rules and conventions** - - * Regular updates of the *FEATURE BRANCH* (see :numref:`annex_b`) are strongly recommended in order to keep it synchronized with the *DEVELOPMENT BRANCH* (see :numref:`annex_b`). - * Modularizing all diagnostic scripts as much as possible, using the general-purpose code in *lib/* and separating the diagnostic calculations from the plotting routines. - * Before creating new functions or procedures, it should be considered to use or extend the existing routines within *lib/*. Each header (see :numref:`std_nml`) provides an overview of the already implemented functions and procedures. - * Functions and procedures specific to a given diagnostic shall go in the subdirectory diag_scripts/*aux/* (see :numref:`tab_direc_struc`). - * Main namelist, diag_scripts, functions and procedures shall be documented within the respective file using the templates (see :numref:`header`, :numref:`std_nml` and :numref:`std_diag`). - * Each diag_script shall contain a call to the function *write_reference* (see also :numref:`ack_log`) in order to generate a respective acknowledgements log file (:numref:`ack_log`). - -The reintegration of the feature branch into the *DEVELOPMENT BRANCH* (see -:numref:`annex_b`) can only be done by the core development team (see :numref:`core_team`) who -shall be contacted as soon as the *FEATURE BRANCH* is ready for integration into -the *DEVELOPMENT BRANCH*. Before contacting the core development team the -following items should be checked: - - * The new *FEATURE BRANCH* runs with different configuration options. - * If the *lib/* routines have been modified, all the diagnostics using these routines have to be tested (see automated testing, :numref:`auto_test`). - * The new code complies with the coding rules and standards (see :numref:`doc_soft`) and follows the ESMValTool directory structure (see :numref:`tab_direc_struc`). - * All authors, contributors and data are properly acknowledged and referenced in the acknowledgements log file (see :numref:`ack_log`). - * If the new observational data are used, the scripts to “cmorize” these data shall also be made available and placed as *reformat_obs_* into the folder *reformat_scripts/obs/*. Once the *FEATURE BRANCH* has been integrated into the *DEVELOPMENT BRANCH* (see :numref:`annex_b`), it shall be deleted from the repository. - - -.. _std_nml: - -Standard template -================= - - -All (diagnostic) scripts and namelists in the ESMValTool are documented -following the standards defined by templates (see :numref:`header` for the namelist -template). The following describes the standard header for diagnostics -scripts. The parts marked as *[text]* are the ones to be modified by the author. - - * The modification history is in reverse chronological order (i.e., most recent on top) and the last entry always contains the “written” statement (optionally with a statement such as “based on” if derived from existing code). - * The author of each entry in the modification history is indicated with the author id as given in the author list in the master reference file (*doc/MASTER_authors-refs-acknow.txt*, e.g., A_surn_na = surname, name). - * All lines should be limited to a maximum of 79 characters (see :numref:`rules`). Exceptions can be made to improve the readability of the code. - - -.. code-block:: ncl - - ;;############################################################################# - ;; TITLE OF THE DIAGNOSTIC - ;; Author: [Name Surname (Affiliation, Country)] - ;; [PROJECT-NAME] - ;;############################################################################# - ;; Description - ;; [A short description of the diagnostic] - ;; [Additional description of the diagnostic] - ;; [Add more bullets if required] - ;; - ;; Required diag_script_info attributes (diagnostics specific) - ;; [att1]: [short description] - ;; [keep the indentation if more lines are needed] - ;; [att2]: [short description] - ;; - ;; Optional diag_script_info attributes (diagnostic specific) - ;; [att1]: [short description] - ;; [att2]: [short description] - ;; - ;; Required variable_info attributes (variable specific) - ;; [att1]: [short description] - ;; [att2]: [short description] - ;; - ;; Optional variable_info attributes (variable specific) - ;; [att1]: [short description] - ;; [att2]: [short description] - ;; - ;; Caveats - ;; [List possible caveats or limitations of this diagnostic] - ;; [Features to-be-implemented shall also be mentioned here] - ;; - ;; Modification history - ;; [YYYYMMDD-A_X4Y4: extended...] - ;; [YYYYMMDD-A_X3Y3: bug-fixed...] - ;; [YYYYMMDD-A_X2Y2: adapted to...] - ;; [YYYYMMDD-A-X1Y1: written.] - ;; - ;; ############################################################################# - - load ... - load ... - - begin - ... - ... - end - - -.. _lib: - -Library functions -================= - -The folder *diag_scripts/lib/* contains general purpose routines used by several diagnostic scripts, these library routines are grouped in subfolders by language, i.e., - -.. centered:: - *diag_scripts/lib/ncl* - -.. centered:: - *diag_scripts/lib/python* - -.. centered:: - *diag_scripts/lib/R* - -Library routines are grouped into individual files by topic, some examples for the NCL library routines are: - - * *diag_scripts/lib/ncl/latlon.ncl*: routines to compute grid cell areas, weighted area averages, etc... - - * *diag_scripts/lib/ncl/regridding.ncl*: routines interfacing the ESMF regridding functions in NCL - - * *diag_scripts/lib/ncl/statistics.ncl*: statistical routines not (yet) implemented in the standard distribution of NCL - - * *diag_scripts/lib/ncl/style.ncl*: centralized control of NCL plot styles, e.g., defines line colors/dashes/thickness for each model name in CMIP5, based on the style files in *diag_scripts/lib/ncl/styles/*. - -For further details on the library functions, see the documentation given in -the header of the functions themselves (see :numref:`std_nml` for a template). - - - -.. _plot_func: - -Plotting functions -================== - -The folder *plot_scripts/* contains general purpose routines used for plotting -by the diagnostic scripts. The plotting functions should facilitate the -separation of computing the diagnostic and displaying the result. To this end -they should handle both the case when called directly from the diagnostic -script (with data to visualize as an argument), and the case when the computed -diagnostic is passed along as a netCDF file. These plotting routines are -grouped in subfolders by language, - - * *plot_scripts/ncl* - - * *plot_scripts/python* - - * *plot_scripts/R* - -Each subfolder further groups the plotting routines into files by topic, e.g., -for the NCL library routines: - - * *plot_scripts/ncl/contour_maps.ncl*: interfaces NCL plotting routines for contour map plots, contour polar maps and adding markers to contour maps - - * *plot_scripts/nc/scatterplot.ncl*: interfaces NCL plotting routines for of scatter plots - -For further details on the plotting functions, see the inline documentation in the functions themselves. - - - -.. _new_vars: - -Adding new variables -==================== - - -Adding new variables requires changes to *reformat_scripts/recognized_vars.dat* -(:numref:`rec_vars`) and possibly also to *reformat_scripts/recognized_units.dat* -(:numref:`rec_units`). In addition, a new definition file -*variable_defs/.ncl* is needed (:numref:`var_def`; see :numref:`tab_var_def` for a list -of currently available variable definition scripts). If the variable is a -**non-derived** variable (explained in :numref:`var_def`) it also needs to be defined -in a file named *reformat_scripts/cmor/CMOR_.dat* (see :numref:`cmor`). - - -.. _rec_vars: - -reformat_scripts/recognized_vars.dat ------------------------------------- - -New variables have to be added to *reformat_scripts/recognized_vars.dat*. Two -lines are added per variable: - - * | std_name = varname - | standard CMOR variable name - - * | alt_name = alternative name 1, alternative name 2, ... - | comma separated list of alternative variable names - -**Example (surface pressure)** - - * std_name = ps - * alt_name = aps,PS,psurf - -The ESMValTool reformat scripts will look for variable “varname” in the input -files. If not found, the alternative variable names “alternative name 1”, -“alternative name 2”, etc. are tried before an error message is issued that -the variable could not be found. - - -.. _rec_units: - -reformat_scripts/recognized_units.dat -------------------------------------- - -The file *reformat_scripts/recognized_units.dat* contains a list of known -units. If needed, the unit of the newly added variable can be added. There are -two lines per unit: - - - * | std_name = unit - | standard CMOR unit - - * | alt_name = alternative unit - | comma separated list of possible alternative units and corresponding conversion factor, defined as units[cmor] = units[alternative] * factor - -**Example (dobson units)** - - * std_unit = DU - * alt_unit = g m-2, 4.6707e-5, kg m-2, mol m-2, 2.2414e-3 - - -.. _var_def: - -variable_defs/varname.ncl -------------------------- - -The file *variable_defs/.ncl* is a NCL script containing the -declaration of the variable “varname” including its specific attributes. In -case of derived variables, a function “calculate” calculating the derived -variable must be defined in the script *.ncl* (see :numref:`tab_var_def` for a list -of currently available variable definition scripts). - -| - -**Remarks** - - #. For derived variables, a statement specifying the (standard, non-derived) variables required to calculate the derived variable is needed. In the example given below, this statement in the beginning of the NCL script looks like - - .. centered:: - *; Requires: rsut:T2*s,rsutcs:T2*s* - - In this example, the two standard variables “rsut” and “rsutcs” are needed to calculate the shortwave cloud forcing. - - #. Variable attributes are specified as attributes of the variable “variable_info” (see examples below). In order to activate the variable attributes, “variable_info” must be set to “True”. Some examples for frequently used attributes are: - - * variable_info\@derived = False (True) - * variable_info\@long_name = “...” - * variable_info\@units = “...” - * variable_info\@standard_name = “...” - * variable_info\@short_name =” ...” - - -**Example (precipitation, standard variable)** - -.. code-block:: ncl - - ; Requires: none - variable_info = True - variable_info@derived = False - -**Example (shortwave cloud forcing, derived variable)** - -.. code-block:: ncl - - ; Requires: rsut:T2*s,rsutcs:T2*s - - [...] - - variable_info = True - variable_info@derived = True - variable_info@long_name = "CS Shortwave cloud radiation effect" - variable_info@units = "W m-2" - - undef("calculate") - function calculate( index [1] : integer, \ - variable [1] : string, \ - field_type [1] : string ) - ;; return_val [1] : logical - ;; Arguments: - ;; index - index to current infile defined in the - ;; 'interface_data/ncl.interface'-file - ;; variable - Current variable as string - ;; field_type - string with field type classification - ;; Return value: - ;; data_new logical - - local tmp, tmp1, tmp2, dum1, dum2, dum, i, verbosity - begin - data_new = True - tmp1 = read_data(index, "rsut", "T2Ms") - tmp2 = read_data(index, "rsutcs", "T2Ms") - dum1 = extract_data(index, tmp1, -1, 0, 0) - dum2 = extract_data(index, tmp2, -1, 0, 0) - - dum = dum1 - dum = dum2 - dum1 - dum@long_name = variable_info@long_name - dum@units = variable_info@units - add_data_var(index, data_new, dum, variable) - - return(data_new) - end - - - -.. _cmor: - -reformat_scripts/cmor/CMOR_variable.dat ---------------------------------------- - -Each standard variable (non-derived) also needs a configuration file indicating the expected units of the variable. The expected units are read from the file *reformat_scripts/cmor/CMOR_variable.dat* which follows the definitions in the official CMOR tables for CMIP5. If this file is missing for a specific variable, it can be downloaded from http://pcmdi.github.io/cmor-site/tables.html. If a CMOR table for the new variable is not available, the user can create a new one based on the existing tables (e.g., following the example in *reformat_scripts/cmor/CMOR_mmrbcfree.dat* based on *reformat_scripts/cmor/CMOR_mmrbc.dat*). - -**Example, reformat_scripts/cmor/CMOR_pr.dat** - -.. code-block:: - - SOURCE: CMIP5 - !============ - 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 - !---------------------------------- - - -.. _rules: - -Coding rules and standards -========================== - -The purpose of the code conventions used in ESMValTool is to ensure a high -degree of consistency in the code layout. Consistently structured code -increases readability and understanding of the code making it easier for -developers and users work with a given piece of the code base. It is important -to emphasize two points: - - * Checking the code consistency should be done by software as this allows the check to be done automatically. - * Code checkers are available at *util/ncl-checker/pep8.py* (NCL) and *util/pep8-checker/pep8.py* (Python). - -The code conventions are guidelines and should be treated as such. There are circumstances when it is advisable, for various reasons such as improved readability, to ignore some of the guidelines. - -**Code conventions used for Python** - -Python code should conform to the PEP-8 style guide [PEP8 2001]. Recommended -tools to check Python code is the official PEP8-checker that is provided with -the ESMValTool distribution (*util/pep8-checker/pep8.py*) and PyFlakes. - -To use it on a python file, cd into util/pep8-checker/, and run, - - | $ cd util/pep8-checker - | $ python pep8.py - -Python: Pyflakes - -Besides the PEP8-checker also the use of the 'pyflake'-tool is recommended (see the pyflakes homepage https://pypi.python.org/pypi/pyflakes for details). For a local install of pyflakes, try virtualenv, e.g., if the virtualenv already is installed, run - - | $ source sandbox-pybot/bin/activate - | $ pip install --upgrade pyflakes - | $ pyflakes - - -**Code conventions for NCL** - -NCL code in ESMValTool should follow the PEP-8 style guides. An NCL adapted version of the Python PEP-8 checker is available in the ESMValTool repository (*util/ncl-checker/pep8.py*). Please note that the NCL checker may report some false-positive (e.g., the reading symbol -> is not recognized as such). - -To use the NCL version of the PEP8-checker provided with the ESMValTool distribution, run - - | $ cd util/ncl-checker - | $ python pep8.py - -The NCL-version is adaption of the Pyhton checker and works satisfactorily as -long as one keeps in mind the false positives it finds due to language -differences between Python and NCL. These false positives may be addressed in -the future depending on priorities. - -**Code conventions for R** - -The code conventions for R should conform to the formatting produced by the R parser tree. This method is further described at "Tidying-R-code" (https://cran.r-project.org/doc/manuals/R-exts.html#Tidying-R-code). Note that this method can only be considered semi-automatic since it does preserve comments (they need to be repatched) and does not produce very nice line breaks. - - -.. _doc_soft: - -Documentation of software -========================= - - -In order to ensure that all code can be maintained, all diagnostic packages must be well documented. It is the responsibility of the software developers to embed their documentation into the code and to provide a summary of their diagnostics (see :numref:`source_doc`) on the ESMValTool development team wiki (see :numref:`wiki`). Documentation systems exist to organize embedded documentation into well structured, linked documents. - - * **R:** documentation should follow CRAN guidance. - * **Python:** the Sphinx package allows embedded documentation to be assembled into indexed web pages (see :numref:`source_doc`) - * **NCL and namelists:** a Sphinx extension has been developed to extract code documentation for NCL and namelists (see :numref:`source_doc`) - - -.. _ack_log: - -The acknowledgements log file -============================= - - -The acknowledgements log file automatically created by each diagnostic (see also :numref:`diag_avail`) is written by the function *write_references* (*interface_scripts/messaging.ncl*, see below), which uses the tags defined in the master reference/acknowledgements file (*doc/MASTER_authors-refs-acknow.txt*) as input. This master file lists all authors and contributors (tags starting with A\_), the diagnostic references (tags with D\_), references for observational data (tags E\_) and projects (tags P\_). - -**The function write_references** - -The function write_references (defined in *interface_scripts/messaging.ncl*) should be called at the end of each diagnostic script in order to write the acknowledgements log file. The function has the arguments “author(s)”, “contributors”, “diagnostics”, “observations”, “projects” which are arrays of strings. All strings (“tags”) used must be defined in the master reference file *doc/MASTER_authors-refs-acknow.txt*. The tags are then replaced by the function *write_references* with their definition when writing the acknowledgements log file. All tags in the master reference file are sorted by category of which there are four in total: - -.. code-block:: ncl - - A_xxx = authors, contributors (xxx = author name) - e.g., A_### - - D_xxx = diagnostics - e.g., D_righi15gmd = Righi et al., Geosci. Model Dev., 8, 733-768 doi:10.5194/gmd-8- - 733-2015, 2015. - - E_xxx = observational data - e.g., E_era40 = ERA40 - - P_xxx = project - e.g., P_embrace = EU FP7 project EMBRACE - - write_references(diag_script, \ - "A_###", \ - (/"D_righi15gmd", "D_gleckler08jgr"/), \ - (/"E_kalnay96bams", "E_erainterim", "E_airs", "E_ceresebaf", "E_srb"/), \ - (/"P_embrace", "P_esmval"/)) - - -.. _source_doc: - -Documentation of source code -============================ - -The Sphinx documentation generator (http://sphinx-doc.org) is used to organize -and format ESMValTool documentation, including text which has been extracted -from source code. Sphinx can help to create documentation in a variety of -formats, including HTML, LaTeX (and hence printable PDF), manual pages and -plain text. - -Sphinx may be obtained from http://sphinx-doc.org/install.html; an overview of -its workings is available at http://sphinx-doc.org/tutorial.html. In -ESMValTool, Sphinx has been used to set up the files in *doc/sphinx*. Running -*make * in that directory will cause the documentation to be built, and -its output placed in the *build/* subdirectory. Here, ** is the -format required for example, *html, latexpdf, man* or *text* for the four example -formats mentioned above. Running *make* by itself will generate a complete list -of output formats. - -Sphinx was originally developed for documenting Python code, and one of its -features is that it is able using the so-called autodoc extension to extract -documentation strings from Python source files and use them in the -documentation it generates. This feature apparently does not exist for NCL -source files (such as those which are used in ESMValTool), but it has been -mimicked (or more-or-less reverse-engineered) here via the Python script -*doc/sphinx/scripts/process_ncl_docs.py*, which walks through a subset of the -ESMValTool NCL scripts, extracts function names, argument lists and -descriptions (from the comments immediately following the function -definition), and assembles them in a subdirectory of *doc/sphinx/source*. These -output files are in the so-called reStructuredText format (see, e.g., -http://docutils.sourceforge.net/rst.html), which is the markup language used -by Sphinx; running make in *doc/sphinx* builds the ESMValTool documentation from -them, as noted above. - - -.. _auto_test: - -Automated testing -================= - -Any changes to a programming code have the risk of introducing unwanted side effects on some other parts of a code and introduce bugs. Routine and automated testing is therefore essential to maximize the code quality and ensure integrity of all diagnostics implemented within ESMValTool. - - - -Setup and general workflow --------------------------- - -Automated testing within the ESMValTool is implemented on two complementary -levels: - - * **unittests** are used to verify that small code units (e.g. functions/subroutines) provide the expected results - * **integration** testing is used to verify that a diagnostic integrates well into the ESMValTool framework and that a diagnostic provides expected results. This is verified by comparison of the results against a set of reference data generated during the implementation of the diagnostic. - - -**Installation of the test environment** - -All scripts required to run the test environment are provided together with -the ESMValTool code. Two external python packages are required which can be -installed using the python package manager (pip; -https://pypi.python.org/pypi/pip) as follows in a linux environment: - - | ``# install nosetests (https://nose.readthedocs.org/en/latest/)`` - | ``pip install nose`` - | ``# install easytest`` - | ``pip install easytest`` - - -**General functionality of testing framework** - -Each diagnostic is expected to produce a set of well-defined results. These are files in a variety of formats and types (e.g. graphics, data files, ASCII files ...). While testing results of a diagnostic, a special namelist file is executed by ESMValTool which runs a diagnostic on a limited set of test data only. A small test data set is chosen to minimize executing time for testing while ensuring on the other hand that the diagnostic produces the correct results. The following general tests are implemented at the moment for diagnostics with available test data: - - * **Check for file availability:** a check is performed that all required output data have been successfully generated by the diagnostic. A missing file is always an indicator for a failure of the program. - * **File checksum:** While the previous test only checks if a file is available, the checksum verifies if the content of a file is similar. Currently the MD5 checksum is used to verify that contents of a file are the same. The MD5 checksum is a good proxy for the similarity of two files and is used regularly to ensure integrity between files when transferring files between different computers. - * **Graphics check:** For graphic files an additional test is therefore implemented which verifies that two graphical outputs are identical. This is in particular useful to verify that outputs of a diagnostic remain the same after code changes. - - -**Testing the ESMValTool diagnostics** - -Unittests are implemented for each diagnostic independently. Details on -running unittests using **nose** is as simple as going to the ESMValTool root -directory and then execute the following shell command: - - | ``# run nosetests`` - | ``nosetests`` - -This will search recursively for test files and execute these tests. A -statistic on success and failures is provided at the end of execution. More -details on using nose can be found in the package’s documentation -(https://nose.readthedocs.org/en/latest/). - -To run integration tests for each diagnostic, a small script needs to be -written once. An example for a file named esmvaltooltest.py is provided in -:numref:`test_imp`. To run all tests for diagnostics implemented in this -file the following command needs to be executed: - - | ``# run integration tests`` - | ``python esmvaltooltest.py`` - -A summary of success and failures is provided as output. - - -.. _test_imp: - -Example test implementation for a diagnostic --------------------------------------------- - -In the following an example is given how to implement a test environment for a new diagnostic with just a few lines of code. -File: esmvaltooltest.py - -.. code-block:: python - - """ - sample script for ESMValTool testing - """ - - from esmvaltool import ESMValToolTest - - """ - Define a new class for testing a particular diagnostic - """ - - class PerfMetricCMIP5Test(ESMValToolTest): - def __init__(self): - # 1) define here the name of the test namelist - nml_name = 'namelist_perfmetrics_CMIP5_test.xml' - - # 2) specify here the full path of the namelist - # (relative to ESMValTool root) - nml = 'nml/test_suites/dlr/' + nml_name - - # 3) define here the location of the reference data directory - # note that it is expected that the directory has the same - # name as the namelist - refdir = esmval_dir + os.sep + os.path.splitext(nml_name)[0] + \ - '/output/plots/' - - # initialize the parent class - super(PerfMetricCMIP5Test,self).__init__(nml=nml, - refdirectory=refdir, esmval_dir=esmval_dir) - - # -------------------------------------------- - - # This is how you run a test - PT = PerfMetricCMIP5Test() # create instance of test class - PT.run_nml() # run the testing namelist - PT.run_tests(execute=False, graphics=None, - checksum_files='all',files='all') # perform tests diff --git a/docker/1.1.0/centos/7/Dockerfile b/docker/1.1.0/centos/7/Dockerfile deleted file mode 100644 index e66c7ced42..0000000000 --- a/docker/1.1.0/centos/7/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM centos:7 - -# install development tools -RUN yum clean all && yum makecache && yum update -y && \ - yum groupinstall -y "Development tools" - -# create directory for downloaded files -RUN mkdir /src -WORKDIR /src - -# isntall conda -RUN curl -L -O https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -RUN bash ./Miniconda2-latest-Linux-x86_64.sh -p /miniconda -b -ENV PATH=/miniconda/bin:${PATH} -RUN conda update -y conda -RUN conda update -y pip - -# install python packages specified in conda environment file -COPY environment.yml /src/environment.yml -RUN conda env update -f environment.yml - -# install esmvaltool -RUN curl -L -O https://github.com/ESMValGroup/ESMValTool/archive/v1.1.0.zip -RUN unzip v1.1.0.zip -WORKDIR /src/ESMValTool-1.1.0 -COPY config_private.xml /src/ESMValTool-1.1.0/config_private.xml - -ENTRYPOINT ["python", "main.py"] -CMD ["nml/namelist_test.xml"] diff --git a/docker/1.1.0/centos/7/config_private.xml b/docker/1.1.0/centos/7/config_private.xml deleted file mode 100644 index 80d34f038b..0000000000 --- a/docker/1.1.0/centos/7/config_private.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - /data/out/work/ - working directory - - - - /data/out/plots/ - directory for output plots - - - - /data/out/climo/ - directory for output files - - - - /data/out/regridding/ - directory for regridding files - - - - /data/in/modeldata/ - root directory of model data - - - - /data/in/obsdata/ - root directory of observational data - - - - /data/in/rawobsdata/ - root directory of raw observational data (for reformat_obs scripts) - - - - diff --git a/docker/1.1.0/centos/7/environment.yml b/docker/1.1.0/centos/7/environment.yml deleted file mode 100644 index 9dac03dbab..0000000000 --- a/docker/1.1.0/centos/7/environment.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: root -channels: -- khallock -- conda-forge -- defaults -- Clyde_Fare - -dependencies: -# esmvaltool -- cython -- basemap -- iris -- python-stratify -- esgf-pyclient -- scientificpython -- ncl -# iris -- matplotlib=1.5.* -- cartopy=0.15.* - -# ncl -- libnetcdf=4.4.1.1 -- hdf5=1.8.17 -- hdf4=4.2.12 -- xorg-libsm=1.2.2 -- icu=58.1 -- xorg-libxrender -- xorg-libxext -- pip: - - geoval diff --git a/docker/1.1.0/debian/8.5/Dockerfile b/docker/1.1.0/debian/8.5/Dockerfile deleted file mode 100644 index 185a4f2643..0000000000 --- a/docker/1.1.0/debian/8.5/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM continuumio/miniconda - -# install development tools -RUN apt-get update -y && apt-get install -y \ - build-essential \ - curl \ - unzip - -# create directory for downloaded files -RUN mkdir /src -WORKDIR /src - -# install python packages specified in conda environment file -COPY environment.yml /src/environment.yml -RUN conda env update -f environment.yml - -# install esmvaltool -RUN curl -L -O https://github.com/ESMValGroup/ESMValTool/archive/v1.1.0.zip -RUN unzip v1.1.0.zip -WORKDIR /src/ESMValTool-1.1.0 -COPY config_private.xml /src/ESMValTool-1.1.0/config_private.xml - -ENTRYPOINT ["python", "main.py"] -CMD ["nml/namelist_test.xml"] diff --git a/docker/1.1.0/debian/8.5/config_private.xml b/docker/1.1.0/debian/8.5/config_private.xml deleted file mode 100644 index 80d34f038b..0000000000 --- a/docker/1.1.0/debian/8.5/config_private.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - /data/out/work/ - working directory - - - - /data/out/plots/ - directory for output plots - - - - /data/out/climo/ - directory for output files - - - - /data/out/regridding/ - directory for regridding files - - - - /data/in/modeldata/ - root directory of model data - - - - /data/in/obsdata/ - root directory of observational data - - - - /data/in/rawobsdata/ - root directory of raw observational data (for reformat_obs scripts) - - - - diff --git a/docker/1.1.0/debian/8.5/environment.yml b/docker/1.1.0/debian/8.5/environment.yml deleted file mode 100644 index 9dac03dbab..0000000000 --- a/docker/1.1.0/debian/8.5/environment.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: root -channels: -- khallock -- conda-forge -- defaults -- Clyde_Fare - -dependencies: -# esmvaltool -- cython -- basemap -- iris -- python-stratify -- esgf-pyclient -- scientificpython -- ncl -# iris -- matplotlib=1.5.* -- cartopy=0.15.* - -# ncl -- libnetcdf=4.4.1.1 -- hdf5=1.8.17 -- hdf4=4.2.12 -- xorg-libsm=1.2.2 -- icu=58.1 -- xorg-libxrender -- xorg-libxext -- pip: - - geoval diff --git a/docker/1.1.0/ubuntu/xenial/Dockerfile b/docker/1.1.0/ubuntu/xenial/Dockerfile deleted file mode 100644 index fe233744ae..0000000000 --- a/docker/1.1.0/ubuntu/xenial/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM ubuntu:xenial - -# install development tools -RUN apt-get update -y && apt-get install -y \ - build-essential \ - curl \ - unzip - -# create directory for downloaded files -RUN mkdir /src -WORKDIR /src - -# isntall conda -RUN curl -L -O https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -RUN bash ./Miniconda2-latest-Linux-x86_64.sh -p /miniconda -b -ENV PATH=/miniconda/bin:${PATH} -RUN conda update -y conda -RUN conda update -y pip - -# install python packages specified in conda environment file -COPY environment.yml /src/environment.yml -RUN conda env update -f environment.yml - -# install esmvaltool -RUN curl -L -O https://github.com/ESMValGroup/ESMValTool/archive/v1.1.0.zip -RUN unzip v1.1.0.zip -WORKDIR /src/ESMValTool-1.1.0 -COPY config_private.xml /src/ESMValTool-1.1.0/config_private.xml - -ENTRYPOINT ["python", "main.py"] -CMD ["nml/namelist_test.xml"] diff --git a/docker/1.1.0/ubuntu/xenial/config_private.xml b/docker/1.1.0/ubuntu/xenial/config_private.xml deleted file mode 100644 index 80d34f038b..0000000000 --- a/docker/1.1.0/ubuntu/xenial/config_private.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - /data/out/work/ - working directory - - - - /data/out/plots/ - directory for output plots - - - - /data/out/climo/ - directory for output files - - - - /data/out/regridding/ - directory for regridding files - - - - /data/in/modeldata/ - root directory of model data - - - - /data/in/obsdata/ - root directory of observational data - - - - /data/in/rawobsdata/ - root directory of raw observational data (for reformat_obs scripts) - - - - diff --git a/docker/1.1.0/ubuntu/xenial/environment.yml b/docker/1.1.0/ubuntu/xenial/environment.yml deleted file mode 100644 index 9dac03dbab..0000000000 --- a/docker/1.1.0/ubuntu/xenial/environment.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: root -channels: -- khallock -- conda-forge -- defaults -- Clyde_Fare - -dependencies: -# esmvaltool -- cython -- basemap -- iris -- python-stratify -- esgf-pyclient -- scientificpython -- ncl -# iris -- matplotlib=1.5.* -- cartopy=0.15.* - -# ncl -- libnetcdf=4.4.1.1 -- hdf5=1.8.17 -- hdf4=4.2.12 -- xorg-libsm=1.2.2 -- icu=58.1 -- xorg-libxrender -- xorg-libxext -- pip: - - geoval diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000000..144134ac63 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,19 @@ +FROM continuumio/miniconda3 + +# update the conda packages +RUN conda update -y conda pip + +# install development tools +RUN apt-get update -y && apt-get install -y \ + build-essential \ + curl \ + unzip + +# install environment packages +RUN conda install -c conda-forge -c esmvalgroup -c birdhouse esmvaltool + +# run tests +RUN esmvaltool -h + +ENTRYPOINT ["esmvaltool"] +CMD ["-h"] diff --git a/docker/docker_guide.md b/docker/docker_guide.md index 43df83c6f3..33ae75051e 100644 --- a/docker/docker_guide.md +++ b/docker/docker_guide.md @@ -9,12 +9,7 @@ All available docker images are listed on Before running container you need to pull the image to your machine. ```sh -# pull Ubuntu based image with version 1.1.0 -docker pull esmvalgroup/esmvaltool:1.1.0-xenial -# pull CentOS based image with version 1.1.0 -docker pull esmvalgroup/esmvaltool:1.1.0-centos7 -# pull debian based image with version 1.1.0 -docker pull esmvalgroup/esmvaltool:1.1.0-debian-8.5 +docker pull esmvalgroup/esmvaltool:2.0 ``` ## Running ESMValTool in the container @@ -26,12 +21,9 @@ in advance. Below are few user scenerios. 1. Input and output directories are located in the same directory. ```sh -docker run -v :/data/ esmvalgroup/esmvaltool: nml/.xml +docker run -v :/data/ esmvalgroup/esmvaltool:2.0 nml/.xml ``` Replace: -* `` with `1.1.0-centos7`, `1.1.0-xenial` or `1.1.0-debian-8.5` - depending on which image -you want to use * `` with name of the namelist you want to execute * `` with a location on your local machine (docker host). It has to be absolute path. diff --git a/environment.yml b/environment.yml index 72125dc9f0..c9d7fde8bd 100644 --- a/environment.yml +++ b/environment.yml @@ -12,6 +12,7 @@ dependencies: - python-stratify # Multi language support: - ncl + - ncurses=6.1=hfc679d8_1 # TODO: add R, julia - pip: diff --git a/esmvaltool/_config.py b/esmvaltool/_config.py index 9a29c1da55..757abec7ec 100644 --- a/esmvaltool/_config.py +++ b/esmvaltool/_config.py @@ -3,13 +3,18 @@ import logging import logging.config import os +import time +import six import yaml +from .cmor.table import read_cmor_tables logger = logging.getLogger(__name__) +CFG = {} -def read_config_user_file(config_file, namelist_name): + +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) @@ -18,6 +23,7 @@ def read_config_user_file(config_file, namelist_name): defaults = { 'write_plots': True, 'write_netcdf': True, + 'compress_netcdf': False, 'exit_on_warning': False, 'max_data_filesize': 100, 'output_file_type': 'ps', @@ -26,6 +32,7 @@ def read_config_user_file(config_file, namelist_name): 'remove_preproc_dir': False, 'max_parallel_tasks': 1, 'run_diagnostic': True, + 'config_developer_file': None, 'drs': {}, } @@ -35,16 +42,16 @@ def read_config_user_file(config_file, namelist_name): "defaulting to %s", key, defaults[key]) cfg[key] = defaults[key] - # expand ~ to /home/username in directory names and normalize paths - cfg['output_dir'] = os.path.abspath(os.path.expanduser(cfg['output_dir'])) + cfg['output_dir'] = _normalize_path(cfg['output_dir']) + cfg['config_developer_file'] = _normalize_path( + cfg['config_developer_file']) for key in cfg['rootpath']: - cfg['rootpath'][key] = os.path.abspath( - os.path.expanduser(cfg['rootpath'][key])) + cfg['rootpath'][key] = _normalize_path(cfg['rootpath'][key]) - # insert a directory date_time_namelist_usertag in the output paths + # 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((namelist_name, now)) + new_subdir = '_'.join((recipe_name, now)) cfg['output_dir'] = os.path.join(cfg['output_dir'], new_subdir) # create subdirectories @@ -53,9 +60,35 @@ def read_config_user_file(config_file, namelist_name): cfg['plot_dir'] = os.path.join(cfg['output_dir'], 'plots') cfg['run_dir'] = os.path.join(cfg['output_dir'], 'run') + 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 _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: @@ -94,23 +127,21 @@ def configure_logging(cfg_file=None, output=None, console_log_level=None): handler['level'] = console_log_level.upper() logging.config.dictConfig(cfg) + logging.Formatter.converter = time.gmtime return log_files -CFG = read_config_developer_file() - - def get_project_config(project): """Get developer-configuration for project.""" logger.debug("Retrieving %s configuration", project) return CFG[project] -def cmip5_model2inst(model): - """Return the institute given the model name in CMIP5.""" - logger.debug("Retrieving institute for CMIP5 model %s", model) - return CFG['CMIP5']['institute'][model] +def cmip5_dataset2inst(dataset): + """Return the institute given the dataset name in CMIP5.""" + logger.debug("Retrieving institute for CMIP5 dataset %s", dataset) + return CFG['CMIP5']['institute'][dataset] def cmip5_mip2realm_freq(mip): diff --git a/esmvaltool/_data_finder.py b/esmvaltool/_data_finder.py index 74209648f5..563da8c2c3 100644 --- a/esmvaltool/_data_finder.py +++ b/esmvaltool/_data_finder.py @@ -1,5 +1,6 @@ """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) @@ -10,7 +11,8 @@ import six -from ._config import cmip5_mip2realm_freq, cmip5_model2inst, get_project_config +from ._config import (cmip5_dataset2inst, cmip5_mip2realm_freq, + get_project_config) logger = logging.getLogger(__name__) @@ -31,10 +33,42 @@ def find_files(dirname, filename): 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*.* + 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] - dates = name.split('_')[-1].split('-') + + 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 @@ -43,6 +77,7 @@ def get_start_end_year(filename): else: raise ValueError('Name {0} dates do not match a recognized ' 'pattern'.format(name)) + return start_year, end_year @@ -59,16 +94,20 @@ def select_files(filenames, start_year, end_year): return selection -def replace_tags(path, variable): +def replace_tags(path, variable, j=None, i=None): """Replace tags in the config-developer's file with actual values.""" path = path.strip('/') tlist = re.findall(r'\[([^]]*)\]', path) for tag in tlist: + original_tag = tag + tag, lower, upper = _get_caps_options(tag) if tag == 'var': replacewith = variable['short_name'] + elif tag == 'fx_var': + replacewith = variable['fx_files'][i] elif tag == 'field': replacewith = variable['field'] elif tag in ('institute', 'freq', 'realm'): @@ -76,7 +115,7 @@ def replace_tags(path, variable): replacewith = str(variable[tag]) else: if tag == 'institute': - replacewith = cmip5_model2inst(variable['model']) + replacewith = cmip5_dataset2inst(variable['dataset']) elif tag == 'freq': replacewith = cmip5_mip2realm_freq(variable['mip'])[1] elif tag == 'realm': @@ -85,21 +124,48 @@ def replace_tags(path, variable): continue elif tag == 'tier': replacewith = ''.join(('Tier', str(variable['tier']))) - elif tag == 'model': - replacewith = variable['model'] - else: # all other cases use the corresponding model dictionary key + elif tag == 'dataset': + replacewith = variable['dataset'] + else: # all other cases use the corresponding dataset dictionary key if tag in variable: replacewith = str(variable[tag]) else: raise KeyError( - "Model key {} must be specified for project {}, check " - "your namelist entry".format(tag, variable['project'])) - - path = path.replace('[' + tag + ']', replacewith) + "Dataset key {} must be specified for project {}, check " + "your recipe entry".format(tag, variable['project'])) + if not isinstance(replacewith, list): + path = path.replace('[' + original_tag + ']', + _apply_caps(replacewith, lower, upper)) + else: + path = [ + path.replace('[' + original_tag + ']', + _apply_caps(dkrz_place, lower, upper)) + for dkrz_place in replacewith + ][j] return path +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() + elif upper: + return original.upper() + return original + + def get_input_dirname_template(variable, rootpath, drs): """Return a template of the full path to input directory.""" project = variable['project'] @@ -121,38 +187,119 @@ def get_input_dirname_template(variable, rootpath, drs): if isinstance(input_dir, six.string_types): dir2 = replace_tags(input_dir, variable) elif _drs in input_dir: - dir2 = replace_tags(input_dir[_drs], variable) + try: + insts = cmip5_dataset2inst(variable['dataset']) + except KeyError as msg: + logger.debug('CMIP5 dataset2inst: %s', msg) + insts = 0 + dirs2 = [] + if isinstance(insts, list): + for j in range(len(insts)): + dir2 = replace_tags(input_dir[_drs], variable, j) + dirs2.append(dir2) + else: + dir2 = replace_tags(input_dir[_drs], variable) + dirs2.append(dir2) else: raise KeyError( 'drs {} for {} project not specified in config-developer file' .format(_drs, project)) - dirname_template = os.path.join(dir1, dir2) + dirname_template = [os.path.join(dir1, dir_2) for dir_2 in dirs2] return dirname_template +def get_input_fx_dirname_template(variable, rootpath, drs): + """Return a template of the full path to input directory.""" + project = variable['project'] + + cfg = get_project_config(project) + + dirs = [] + # Set the rootpath + if project in rootpath: + dir1 = rootpath[project] + elif 'default' in rootpath: + dir1 = rootpath['default'] + else: + raise KeyError( + 'default rootpath must be specified in config-user file') + + # Set the drs + _drs = drs.get(project, 'default') + input_dir = cfg['fx_dir'] + for fx_ind in range(len(variable['fx_files'])): + if isinstance(input_dir, six.string_types): + dir2 = replace_tags(input_dir, variable, i=fx_ind) + elif _drs in input_dir: + dir2 = replace_tags(input_dir[_drs], variable, i=fx_ind) + else: + raise KeyError( + 'drs {} for {} project not specified in config-developer file' + .format(_drs, project)) + + # Replace seaIce realm by ocean realm + path_elements = dir2.split(os.path.sep) + if "seaIce" in path_elements: + old_dir = dir2 + dir2 = dir2.replace("seaIce", "ocean") + logger.info("Replaced path to fx files %s by %s for seaIce" + "diagnostics", old_dir, dir2) + + dirname_template = os.path.join(dir1, dir2) + dirs.append(dirname_template) + + return dirs + + def get_input_filename(variable, rootpath, drs): """Simulate a path to input file. This function should match the function get_input_filelist below. """ - dirname_template = get_input_dirname_template(variable, rootpath, drs) - # Simulate a latest version if required - if '[latestversion]' in dirname_template: - part1, part2 = dirname_template.split('[latestversion]') - dirname = os.path.join(part1, 'latestversion', part2) - else: - dirname = dirname_template + dirname_templates = get_input_dirname_template(variable, rootpath, drs) + for dirname_template in dirname_templates: + # Simulate a latest version if required + if '[latestversion]' in dirname_template: + part1, part2 = dirname_template.split('[latestversion]') + dirname = os.path.join(part1, 'latestversion', part2) + else: + dirname = dirname_template + + # Set the filename + filename = _get_filename(variable, drs) + if filename.endswith('*'): + filename = filename.rstrip( + '*') + "{start_year}01-{end_year}12.nc".format(**variable) + + # Full path to files + return os.path.join(dirname, filename) + - # Set the filename - filename = _get_filename(variable, drs) - if filename.endswith('*'): - filename = filename.rstrip( - '*') + "{start_year}01-{end_year}12.nc".format(**variable) +def get_input_fx_filename(variable, rootpath, drs): + """Simulate a path to input file. + + This function should match the function get_input_filelist below. + """ + files = [] + dirname_templates = get_input_fx_dirname_template(variable, rootpath, drs) + for j, dirname_template in zip( + range(len(dirname_templates)), dirname_templates): + # Simulate a latest version if required + if '[latestversion]' in dirname_template: + part1, part2 = dirname_template.split('[latestversion]') + dirname = os.path.join(part1, 'latestversion', part2) + else: + dirname = dirname_template - # Full path to files - return os.path.join(dirname, filename) + # Set the filename + filename = _get_fx_filename(variable, drs, j) + + # Full path to files + files.append(os.path.join(dirname, filename)) + + return files def _get_filename(variable, drs): @@ -172,33 +319,105 @@ def _get_filename(variable, drs): return filename +def _get_fx_filename(variable, drs, j): + project = variable['project'] + cfg = get_project_config(project) + + input_file = cfg['fx_file'] + _drs = drs.get(project, 'default') + if not isinstance(input_file, six.string_types): + if _drs in input_file: + input_file = input_file[_drs] + else: + raise KeyError( + 'drs {} for {} project not specified for input_file ' + 'in config-developer file'.format(_drs, project)) + filename = replace_tags(input_file, variable, i=j) + return filename + + def get_input_filelist(variable, rootpath, drs): """Return the full path to input files.""" - dirname_template = get_input_dirname_template(variable, rootpath, drs) - - # Find latest version if required - if '[latestversion]' in dirname_template: - part1, part2 = dirname_template.split('[latestversion]') - part2 = part2.lstrip(os.sep) - list_versions = os.listdir(part1) - list_versions.sort(reverse=True) - for version in list_versions: - dirname = os.path.join(part1, version, part2) - if os.path.isdir(dirname): - break - else: - dirname = dirname_template + all_files = [] + dirname_templates = get_input_dirname_template(variable, rootpath, drs) + valid_dirs = [] + + for dirname_template in dirname_templates: + # Find latest version if required + if '[latestversion]' not in dirname_template: + valid_dirs.append(dirname_template) + else: + part1, part2 = dirname_template.split('[latestversion]') + part2 = part2.lstrip(os.sep) + if os.path.exists(part1): + list_versions = os.listdir(part1) + list_versions.sort(reverse=True) + for version in list_versions: + dirname = os.path.join(part1, version, part2) + if os.path.isdir(dirname): + valid_dirs.append(dirname) + break # Set the filename glob filename_glob = _get_filename(variable, drs) - # Find files - files = find_files(dirname, filename_glob) + for dir_name in valid_dirs: + # Find files + files = find_files(dir_name, filename_glob) - # Select files within the required time interval - files = select_files(files, variable['start_year'], variable['end_year']) + # Select files within the required time interval + files = select_files(files, variable['start_year'], + variable['end_year']) + all_files.extend(files) - return files + return all_files + + +def get_input_fx_filelist(variable, rootpath, drs): + """Return the full path to input files.""" + dirname_templates = get_input_fx_dirname_template(variable, rootpath, drs) + fx_files = {} + + for j, dirname_template in zip( + range(len(dirname_templates)), dirname_templates): + # Find latest version if required + if '[latestversion]' in dirname_template: + part1, part2 = dirname_template.split('[latestversion]') + part2 = part2.lstrip(os.sep) + # root part1 could not exist at all + if not os.path.exists(part1): + fx_files[variable['fx_files'][j]] = None + return fx_files + list_versions = os.listdir(part1) + list_versions.sort(reverse=True) + if 'latest' in list_versions: + list_versions.insert( + 0, list_versions.pop(list_versions.index('latest'))) + for version in list_versions: + if version == 'latest': + dirname = os.path.join(part1, version, part2) + if os.path.isdir(dirname): + break + else: + dirname = os.path.join(part1, version, part2) + if os.path.isdir(dirname): + break + else: + dirname = dirname_template + + # Set the filename glob + filename_glob = _get_fx_filename(variable, drs, j) + + # Find files + fx_file_list = find_files(dirname, filename_glob) + if fx_file_list: + # Grab the first file only; fx vars should have a single file + fx_files[variable['fx_files'][j]] = fx_file_list[0] + else: + # No files + fx_files[variable['fx_files'][j]] = None + + return fx_files def get_output_file(variable, preproc_dir): diff --git a/esmvaltool/_main.py b/esmvaltool/_main.py index 6a9eccaedf..df2ab672c9 100755 --- a/esmvaltool/_main.py +++ b/esmvaltool/_main.py @@ -4,6 +4,7 @@ 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) Niels Drost (NLESC, Netherlands - n.drost@esciencecenter.nl) Nikolay Koldunov (AWI, Germany - nikolay.koldunov@awi.de) @@ -38,7 +39,7 @@ from . import __version__ from ._config import configure_logging, read_config_user_file -from ._namelist import read_namelist_file +from ._recipe import read_recipe_file from ._task import resource_usage_logger # set up logging @@ -62,17 +63,13 @@ def get_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( - '-n', - '--namelist-file', - help='Path to the namelist file', - required=True) parser.add_argument( '-c', '--config-file', @@ -85,17 +82,23 @@ def get_args(): help='Download input data using synda. This requires a working ' 'synda installation.') parser.add_argument( - '--max-models', + '--max-datasets', type=int, - help='Try to limit the number of models used to MAX_MODELS.') + help='Try to limit the number of datasets used to MAX_DATASETS.') args = parser.parse_args() return args def main(args): """Define the `esmvaltool` program""" - namelist_file = os.path.abspath( - os.path.expandvars(os.path.expanduser(args.namelist_file))) + 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))) @@ -103,8 +106,8 @@ def main(args): if not os.path.exists(config_file): print("ERROR: config file {} does not exist".format(config_file)) - namelist_name = os.path.splitext(os.path.basename(namelist_file))[0] - cfg = read_config_user_file(config_file, namelist_name) + 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']): @@ -123,29 +126,29 @@ def main(args): logger.info("Writing program log files to:\n%s", "\n".join(log_files)) cfg['synda_download'] = args.synda_download - cfg['max_models'] = args.max_models + cfg['max_datasets'] = args.max_datasets resource_log = os.path.join(cfg['run_dir'], 'resource_usage.txt') with resource_usage_logger(pid=os.getpid(), filename=resource_log): - process_namelist(namelist_file=namelist_file, config_user=cfg) + process_recipe(recipe_file=recipe, config_user=cfg) return cfg -def process_namelist(namelist_file, config_user): - """Process namelist""" - if not os.path.isfile(namelist_file): - raise OSError(errno.ENOENT, "Specified namelist file does not exist", - namelist_file) +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" + timestamp_format = "%Y-%m-%d %H:%M:%S" logger.info( - "Starting the Earth System Model Evaluation Tool v%s at time: %s ...", + "Starting the Earth System Model Evaluation Tool v%s at time: %s UTC", __version__, timestamp1.strftime(timestamp_format)) logger.info(70 * "-") - logger.info("NAMELIST = %s", namelist_file) + 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"]) @@ -160,22 +163,31 @@ def process_namelist(namelist_file, config_user): "memory for keeping this number of tasks in memory. In that case, " "try reducing 'max_parallel_tasks' in your user configuration file.") - # copy namelist to run_dir for future reference - shutil.copy2(namelist_file, config_user['run_dir']) + 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 namelist - namelist = read_namelist_file(namelist_file, config_user) - logger.debug("Namelist summary:\n%s", namelist) + # parse recipe + recipe = read_recipe_file(recipe_file, config_user) + logger.debug("Recipe summary:\n%s", recipe) # run - namelist.run() + recipe.run() # End time timing timestamp2 = datetime.datetime.utcnow() logger.info( - "Ending the Earth System Model Evaluation Tool v%s at time: %s", + "Ending the Earth System Model Evaluation Tool v%s at time: %s UTC", __version__, timestamp2.strftime(timestamp_format)) - logger.info("Time for running namelist was: %s", timestamp2 - timestamp1) + logger.info("Time for running the recipe was: %s", timestamp2 - timestamp1) # Remind the user about reference/acknowledgement file out_refs = glob.glob( diff --git a/esmvaltool/_namelist.py b/esmvaltool/_recipe.py similarity index 63% rename from esmvaltool/_namelist.py rename to esmvaltool/_recipe.py index cacf9f6a6a..5ff380f330 100644 --- a/esmvaltool/_namelist.py +++ b/esmvaltool/_recipe.py @@ -1,23 +1,25 @@ -"""Namelist parser""" +"""Recipe parser""" import copy import fnmatch import inspect import logging import os import subprocess +from collections import OrderedDict import yamale import yaml from . import __version__, preprocessor from ._data_finder import (get_input_filelist, get_input_filename, - get_output_file, get_start_end_year, - get_statistic_output_file) + get_input_fx_filelist, get_output_file, + get_start_end_year, get_statistic_output_file) from ._task import DiagnosticTask, get_independent_tasks, run_tasks, which from .cmor.table import CMOR_TABLES +from .preprocessor import DEFAULT_ORDER, FINAL_STEPS, INITIAL_STEPS from .preprocessor._derive import get_required from .preprocessor._download import synda_search -from .preprocessor._io import MODEL_KEYS, concatenate_callback +from .preprocessor._io import DATASET_KEYS, concatenate_callback from .preprocessor._regrid import get_cmor_levels, get_reference_levels logger = logging.getLogger(__name__) @@ -25,87 +27,111 @@ TASKSEP = os.sep -class NamelistError(Exception): - """Namelist contains an error.""" +class RecipeError(Exception): + """Recipe contains an error.""" -def read_namelist_file(filename, config_user, initialize_tasks=True): - """Read a namelist from file.""" - raw_namelist = check_namelist(filename) - return Namelist( - raw_namelist, config_user, initialize_tasks, namelist_file=filename) +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 read_recipe_file(filename, config_user, initialize_tasks=True): + """Read a recipe from file.""" + raw_recipe = check_recipe(filename) + return Recipe( + raw_recipe, config_user, initialize_tasks, recipe_file=filename) def check_ncl_version(): """Check the NCL version""" ncl = which('ncl') if not ncl: - raise NamelistError("Namelist contains NCL scripts, but cannot find " - "an NCL installation.") + 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 NamelistError("Namelist contains NCL scripts, but your NCL " - "installation appears to be broken.") + 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 NamelistError("NCL version 6.4 or higher is required to run " - "a namelist containing NCL scripts.") + raise RecipeError("NCL version 6.4 or higher is required to run " + "a recipe containing NCL scripts.") -def check_namelist_with_schema(filename): - """Check if the namelist content matches schema.""" - schema_file = os.path.join( - os.path.dirname(__file__), 'namelist_schema.yml') - logger.debug("Checking namelist against schema %s", schema_file) - namelist = yamale.make_data(filename) +def check_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, namelist) + yamale.validate(schema, recipe) -def check_namelist(filename): - """Check a namelist file and return it in raw form.""" +def check_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 Namelist object. - check_namelist_with_schema(filename) + # computed entries have been filled in by creating a Recipe object. + check_recipe_with_schema(filename) with open(filename, 'r') as file: - raw_namelist = yaml.safe_load(file) + contents = file.read() + raw_recipe = yaml.safe_load(contents) + raw_recipe['preprocessors'] = ordered_safe_load(contents).get( + 'preprocessors', {}) - # TODO: add more checks? - check_preprocessors(raw_namelist['preprocessors']) - check_diagnostics(raw_namelist['diagnostics']) - return raw_namelist + check_preprocessors(raw_recipe['preprocessors']) + check_diagnostics(raw_recipe['diagnostics']) + return raw_recipe def check_preprocessors(preprocessors): - """Check preprocessors in namelist""" - preprocessor_functions = set(preprocessor.DEFAULT_ORDER) - for name, settings in preprocessors.items(): - invalid_functions = set(settings) - preprocessor_functions + """Check preprocessors in recipe""" + valid_functions = set(preprocessor.DEFAULT_ORDER) + for name, profile in preprocessors.items(): + invalid_functions = set(profile) - {'custom_order'} - valid_functions if invalid_functions: - raise NamelistError( - "Unknown function(s) {} in preprocessor {}, choose from: {}" - .format(invalid_functions, name, ', '.join( - preprocessor.DEFAULT_ORDER))) + raise RecipeError( + "Unknown function(s) {} in preprocessor {}, choose from: " + "{}".format(', '.join(invalid_functions), name, + ', '.join(preprocessor.DEFAULT_ORDER))) def check_diagnostics(diagnostics): - """Check diagnostics in namelist""" + """Check diagnostics in recipe""" for name, diagnostic in diagnostics.items(): if 'scripts' not in diagnostic: - raise NamelistError("Missing scripts section in diagnostic {}" - .format(name)) - if diagnostic['scripts'] is None: - continue - for script_name, script in diagnostic['scripts'].items(): + 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 NamelistError( + raise RecipeError( "No script defined for script {} in diagnostic {}".format( script_name, name)) @@ -117,51 +143,55 @@ def check_preprocessor_settings(settings): # TODO: Use the new Python 3 inspect API for step in settings: if step not in preprocessor.DEFAULT_ORDER: - raise NamelistError( + raise RecipeError( "Unknown preprocessor function '{}', choose from: {}".format( step, ', '.join(preprocessor.DEFAULT_ORDER))) + function = getattr(preprocessor, step) argspec = inspect.getargspec(function) args = argspec.args[1:] # Check for invalid arguments invalid_args = set(settings[step]) - set(args) if invalid_args: - raise NamelistError( + raise RecipeError( "Invalid argument(s): {} encountered for preprocessor " - "function {}".format(', '.join(invalid_args), step)) + "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 NamelistError( + raise RecipeError( "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) + logger.error( + "Wrong preprocessor function arguments in " + "function '%s'", step) raise -def check_duplicate_models(models): - """Check for duplicate models.""" - checked_models_ = [] - for model in models: - if model in checked_models_: - raise NamelistError( - "Duplicate model {} in models section".format(model)) - checked_models_.append(model) +def check_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 check_variable(variable, required_keys): - """Check variables as derived from namelist""" + """Check variables as derived from recipe""" required = set(required_keys) missing = required - set(variable) if missing: - raise NamelistError( + raise RecipeError( "Missing keys {} from variable {} in diagnostic {}".format( missing, variable.get('short_name'), variable.get('diagnostic'))) @@ -170,8 +200,8 @@ def check_variable(variable, required_keys): def check_data_availability(input_files, variable): """Check if the required input data is available""" if not input_files: - raise NamelistError("No input files found for variable {}" - .format(variable)) + raise RecipeError("No input files found for variable {}" + .format(variable)) required_years = set( range(variable['start_year'], variable['end_year'] + 1)) @@ -182,28 +212,31 @@ def check_data_availability(input_files, variable): missing_years = required_years - available_years if missing_years: - raise NamelistError( + raise RecipeError( "No input data available for years {} in files {}".format( ", ".join(str(year) for year in missing_years), input_files)) -def _get_value(key, models): - """Get a value for key by looking at the other models.""" - values = {model[key] for model in models if key in model} - - if len(values) == 1: - return values.pop() +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 NamelistError("Ambigous values {} for property {}".format( + raise RecipeError("Ambigous values {} for property {}".format( values, key)) + value = None + if len(values) == 1: + value = values.pop() -def _update_from_others(variable, keys, models): - """Get values for keys by copying from the other models.""" + 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, models) + value = _get_value(key, datasets) if value is not None: variable[key] = value @@ -223,7 +256,7 @@ def _update_cmor_table(table, mip, short_name): var_info = cmor_table.get_variable(mip, short_name) if var_info is None: - raise NamelistError( + raise RecipeError( "Unable to load CMOR table '{}' for variable '{}' with mip '{}'" .format(table, short_name, mip)) @@ -245,20 +278,24 @@ def _add_cmor_info(variable, override=False): variable['mip'], variable['short_name']) for key in cmor_keys: - if key not in variable or override and hasattr(table_entry, key): - value = getattr(table_entry, key) + 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_model(variable, special_name): - """Convert special names to model names.""" - if special_name in ('reference_model', 'alternative_model'): +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 NamelistError( + raise RecipeError( "Preprocessor {} uses {}, but {} is not defined for " "variable {} of diagnostic {}".format( variable['preprocessor'], special_name, special_name, @@ -269,16 +306,16 @@ def _special_name_to_model(variable, special_name): def _update_target_levels(variable, variables, settings, config_user): - """Replace the target levels model name with a filename if needed.""" + """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_model(variable, levels) + levels = _special_name_to_dataset(variable, levels) - # If levels is a model name, replace it by a dict with a 'model' entry - if any(levels == v['model'] for v in variables): - settings['extract_levels']['levels'] = {'model': 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): @@ -287,35 +324,36 @@ def _update_target_levels(variable, variables, settings, config_user): if 'cmor_table' in levels and 'coordinate' in levels: settings['extract_levels']['levels'] = get_cmor_levels( levels['cmor_table'], levels['coordinate']) - elif 'model' in levels: - if variable['model'] == levels['model']: + elif 'dataset' in levels: + if variable['dataset'] == levels['dataset']: del settings['extract_levels'] else: - filename = _model_to_file(levels['model'], variables, config_user) + filename = \ + _dataset_to_file(levels['dataset'], variables, config_user) coordinate = levels.get('coordinate', 'air_pressure') settings['extract_levels']['levels'] = get_reference_levels( filename, coordinate) def _update_target_grid(variable, variables, settings, config_user): - """Replace the target grid model name with a filename if needed.""" + """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_model(variable, grid) + grid = _special_name_to_dataset(variable, grid) - if variable['model'] == grid: + if variable['dataset'] == grid: del settings['regrid'] - elif any(grid == v['model'] for v in variables): - settings['regrid']['target_grid'] = _model_to_file( + elif any(grid == v['dataset'] for v in variables): + settings['regrid']['target_grid'] = _dataset_to_file( grid, variables, config_user) -def _model_to_file(model, variables, config_user): - """Find the first file belonging to model.""" +def _dataset_to_file(dataset, variables, config_user): + """Find the first file belonging to dataset.""" for variable in variables: - if variable['model'] == model: + if variable['dataset'] == dataset: files = get_input_filelist( variable=variable, rootpath=config_user['rootpath'], @@ -331,37 +369,38 @@ def _model_to_file(model, variables, config_user): check_data_availability(files, variable) return files[0] - raise NamelistError( - "Unable to find matching file for model {}".format(model)) + raise RecipeError( + "Unable to find matching file for dataset {}".format(dataset)) -def _limit_models(variables, profile, max_models=None): - """Try to limit the number of models to max_models.""" - if not max_models: +def _limit_datasets(variables, profile, max_datasets=None): + """Try to limit the number of datasets to max_datasets.""" + if not max_datasets: return variables - logger.info("Limiting the number of models to %s", max_models) + logger.info("Limiting the number of datasets to %s", max_datasets) - required_models = ( + required_datasets = ( profile.get('extract_levels', {}).get('levels'), profile.get('regrid', {}).get('target_grid'), - variables[0].get('reference_model'), - variables[0].get('alternative_model'), + variables[0].get('reference_dataset'), + variables[0].get('alternative_dataset'), ) limited = [] for variable in variables: - if variable['model'] in required_models: + if variable['dataset'] in required_datasets: limited.append(variable) for variable in variables[::-1]: - if len(limited) >= max_models: + if len(limited) >= max_datasets: break if variable not in limited: limited.append(variable) - logger.info("Only considering %s", ', '.join(v['model'] for v in limited)) + logger.info("Only considering %s", + ', '.join(v['dataset'] for v in limited)) return limited @@ -395,7 +434,7 @@ def _get_default_settings(variable, config_user, derive=False): # Configure fixes fix = { 'project': variable['project'], - 'model': variable['model'], + 'dataset': variable['dataset'], 'short_name': variable['short_name'], } # File fixes @@ -446,13 +485,38 @@ def _get_default_settings(variable, config_user, derive=False): } # Configure saving cubes to file - settings['save_cubes'] = {} + settings['save'] = {'compress': config_user['compress_netcdf']} return settings +def _update_fx_settings(settings, variable, config_user): + """Find and set the FX mask settings""" + if 'mask_landsea' in settings.keys(): + # Configure ingestion of land/sea masks + logger.debug('Getting fx mask settings now...') + + # settings[mask_landsea][fx_file] is a list to store ALL + # available masks + settings['mask_landsea']['fx_files'] = [] + + # fx_files already in variable + variable = dict(variable) + variable['fx_files'] = ['sftlf', 'sftof'] + fx_files_dict = get_input_fx_filelist( + variable=variable, + 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']) + + def _get_input_files(variable, config_user): - """Get the input files for a single model""" + """Get the input files for a single dataset""" # Find input files locally. input_files = get_input_filelist( variable=variable, @@ -464,8 +528,8 @@ def _get_input_files(variable, config_user): if config_user['synda_download'] and not input_files: input_files = synda_search(variable) - logger.info("Using input files for variable %s of model %s:\n%s", - variable['short_name'], variable['model'], + logger.info("Using input files for variable %s of dataset %s:\n%s", + variable['short_name'], variable['dataset'], '\n'.join(input_files)) check_data_availability(input_files, variable) @@ -488,7 +552,7 @@ def _apply_preprocessor_settings(settings, profile_settings): def _update_multi_model_statistics(variables, settings, preproc_dir): - """Configure multi model statistics.""" + """Configure multi dataset statistics.""" if settings.get('multi_model_statistics', False): if settings['multi_model_statistics'] is True: settings['multi_model_statistics'] = {} @@ -502,22 +566,22 @@ def _update_multi_model_statistics(variables, settings, preproc_dir): stat_settings['filenames'][statistic] = get_statistic_output_file( variable, statistic, preproc_dir) - # Define models to exclude - exclude_models = set(stat_settings.get('exclude', {})) - for key in 'reference_model', 'alternative_model': - if key in exclude_models and key in variable: - exclude_models.remove(key) - exclude_models.add(variable[key]) + # Define datasets to exclude + exclude_datasets = set(stat_settings.get('exclude', {})) + for key in 'reference_dataset', 'alternative_dataset': + if key in exclude_datasets and key in variable: + exclude_datasets.remove(key) + exclude_datasets.add(variable[key]) exclude_files = { v['filename'] - for v in variables if v['model'] in exclude_models + for v in variables if v['dataset'] in exclude_datasets } - logger.debug('Multimodel excludes files %s', exclude_files) + logger.debug('Multidataset excludes files %s', exclude_files) stat_settings['exclude'] = {'_filename': exclude_files} def _get_preprocessor_settings(variables, profile, config_user): - """Get preprocessor settings for a set of models.""" + """Get preprocessor settings for a set of datasets.""" all_settings = {} profile = copy.deepcopy(profile) _update_multi_model_statistics(variables, profile, @@ -527,13 +591,16 @@ def _get_preprocessor_settings(variables, profile, config_user): derive = 'derive' in profile settings = _get_default_settings(variable, config_user, derive=derive) _apply_preprocessor_settings(settings, profile) - # if the target grid is a model name, replace it with a file name + # if the target grid is a dataset name, replace it with a file name # TODO: call _update_target_grid only once per variable? _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, @@ -547,7 +614,7 @@ def _get_preprocessor_settings(variables, profile, config_user): def _check_multi_model_settings(all_settings): - """Check that multi model settings are identical for all models.""" + """Check that multi dataset settings are identical for all datasets.""" multi_model_steps = (step for step in preprocessor.MULTI_MODEL_FUNCTIONS if any(step in settings for settings in all_settings.values())) @@ -557,18 +624,39 @@ def _check_multi_model_settings(all_settings): if result is None: result = settings[step] elif result != settings[step]: - raise NamelistError( - "Unable to combine differing multi-model settings " + raise RecipeError( + "Unable to combine differing multi-dataset settings " "{} and {} for output file {}".format( result, settings[step], filename)) +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_derive_profile(profile): + """Split the derive preprocessor profile""" + order = _extract_preprocessor_order(profile) + before, after = preprocessor.split_settings(profile, 'derive', order) + after['derive'] = {} + if order != DEFAULT_ORDER: + before['custom_order'] = True + after['custom_order'] = True + return before, after + + def _get_single_preprocessor_task(variables, profile, config_user, ancestors=None): - """Create preprocessor tasks for a set of models.""" + """Create preprocessor tasks for a set of datasets.""" # Configure preprocessor + order = _extract_preprocessor_order(profile) all_settings = _get_preprocessor_settings( variables=variables, profile=profile, config_user=config_user) @@ -587,6 +675,7 @@ def _get_single_preprocessor_task(variables, output_dir=output_dir, ancestors=ancestors, input_files=input_files, + order=order, debug=config_user['save_intermediary_cubes']) return task @@ -596,27 +685,25 @@ def _get_preprocessor_task(variables, profiles, config_user, write_ncl_interface=False): - """Create preprocessor task(s) for a set of models.""" + """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 NamelistError( + raise RecipeError( "Unknown preprocessor {} in variable {} of diagnostic {}".format( preproc_name, variable['short_name'], variable['diagnostic'])) profile = copy.deepcopy(profiles[variable['preprocessor']]) logger.info("Creating preprocessor '%s' task for variable '%s'", variable['preprocessor'], variable['short_name']) - variables = _limit_models(variables, profile, - config_user.get('max_models')) + variables = _limit_datasets(variables, profile, + config_user.get('max_datasets')) # Create preprocessor task(s) derive_tasks = [] if variable.get('derive'): # Create tasks to prepare the input data for the derive step - derive_profile, profile = preprocessor.split_settings( - profile, 'derive') - profile['derive'] = {} + derive_profile, profile = _split_derive_profile(profile) derive_input = {} for variable in variables: @@ -665,21 +752,23 @@ def _get_preprocessor_task(variables, return task -class Namelist(object): - """Namelist object""" +class Recipe(object): + """Recipe object""" def __init__(self, - raw_namelist, + raw_recipe, config_user, initialize_tasks=True, - namelist_file=None): - """Parse a namelist file into an object.""" + recipe_file=None): + """Parse a recipe file into an object.""" self._cfg = config_user - self._namelist_file = os.path.basename(namelist_file) - self._preprocessors = raw_namelist['preprocessors'] - self._support_ncl = self._need_ncl(raw_namelist['diagnostics']) + self._recipe_file = os.path.basename(recipe_file) + self._preprocessors = raw_recipe.get('preprocessors', {}) + if 'default' not in self._preprocessors: + self._preprocessors['default'] = {} + self._support_ncl = self._need_ncl(raw_recipe['diagnostics']) self.diagnostics = self._initialize_diagnostics( - raw_namelist['diagnostics'], raw_namelist.get('models', [])) + raw_recipe['diagnostics'], raw_recipe.get('datasets', [])) self.tasks = self.initialize_tasks() if initialize_tasks else None @staticmethod @@ -696,9 +785,9 @@ def _need_ncl(raw_diagnostics): return True return False - def _initialize_diagnostics(self, raw_diagnostics, raw_models): - """Define diagnostics in namelist""" - logger.debug("Retrieving diagnostics from namelist") + def _initialize_diagnostics(self, raw_diagnostics, raw_datasets): + """Define diagnostics in recipe""" + logger.debug("Retrieving diagnostics from recipe") diagnostics = {} @@ -709,57 +798,68 @@ def _initialize_diagnostics(self, raw_diagnostics, raw_models): self._initialize_preprocessor_output( name, raw_diagnostic.get('variables', {}), - raw_models + raw_diagnostic.get('additional_models', [])) + raw_datasets + + raw_diagnostic.get('additional_datasets', [])) + variable_names = tuple(raw_diagnostic.get('variables', {})) diagnostic['scripts'] = self._initialize_scripts( - name, raw_diagnostic.get('scripts')) + name, raw_diagnostic.get('scripts'), variable_names) diagnostics[name] = diagnostic return diagnostics @staticmethod - def _initialize_models(raw_models): - """Define models used by variable""" - models = copy.deepcopy(raw_models) + def _initialize_datasets(raw_datasets): + """Define datasets used by variable""" + datasets = copy.deepcopy(raw_datasets) - for model in models: - for key in model: - MODEL_KEYS.add(key) + for dataset in datasets: + for key in dataset: + DATASET_KEYS.add(key) - check_duplicate_models(models) - return models + check_duplicate_datasets(datasets) + return datasets - def _initialize_variables(self, raw_variable, raw_models): - """Define variables for all models.""" - # TODO: rename `variables` to `attributes` and store in dict - # using filenames as keys? + def _initialize_variables(self, raw_variable, raw_datasets): + """Define variables for all datasets.""" variables = [] - models = self._initialize_models( - raw_models + raw_variable.pop('additional_models', [])) + datasets = self._initialize_datasets( + raw_datasets + raw_variable.pop('additional_datasets', [])) - for model in models: - variable = copy.deepcopy(raw_variable) - variable.update(model) + for dataset in datasets: + variable = dict(raw_variable) + variable.update(dataset) if ('cmor_table' not in variable and variable.get('project') in CMOR_TABLES): variable['cmor_table'] = variable['project'] variables.append(variable) required_keys = { - 'short_name', 'field', 'model', 'project', 'start_year', + 'short_name', 'field', 'dataset', 'project', 'start_year', 'end_year', 'preprocessor', 'diagnostic' } for variable in variables: - _update_from_others(variable, ['cmor_table', 'mip'], models) + _update_from_others(variable, ['cmor_table', 'mip'], datasets) check_variable(variable, required_keys) variable['filename'] = get_output_file(variable, self._cfg['preproc_dir']) + 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_models): + raw_datasets): """Define variables in diagnostic""" logger.debug("Populating list of variables for diagnostic %s", diagnostic_name) @@ -770,13 +870,15 @@ def _initialize_preprocessor_output(self, diagnostic_name, raw_variables, if 'short_name' not in raw_variable: raw_variable['short_name'] = variable_name raw_variable['diagnostic'] = diagnostic_name - raw_variable['preprocessor'] = str(raw_variable['preprocessor']) + raw_variable['preprocessor'] = str( + raw_variable.get('preprocessor', 'default')) preprocessor_output[variable_name] = \ - self._initialize_variables(raw_variable, raw_models) + self._initialize_variables(raw_variable, raw_datasets) return preprocessor_output - def _initialize_scripts(self, diagnostic_name, raw_scripts): + def _initialize_scripts(self, diagnostic_name, raw_scripts, + variable_names): """Define script in diagnostic""" if not raw_scripts: return {} @@ -788,12 +890,12 @@ def _initialize_scripts(self, diagnostic_name, raw_scripts): for script_name, raw_settings in raw_scripts.items(): raw_script = raw_settings.pop('script') ancestors = [] - for id_glob in raw_settings.pop('ancestors', []): + for id_glob in raw_settings.pop('ancestors', variable_names): if TASKSEP not in id_glob: id_glob = diagnostic_name + TASKSEP + id_glob ancestors.append(id_glob) - settings = copy.deepcopy(raw_settings) - settings['namelist'] = self._namelist_file + settings = dict(copy.deepcopy(raw_settings)) + settings['recipe'] = self._recipe_file settings['version'] = __version__ settings['script'] = script_name # Add output dirs to settings @@ -816,86 +918,71 @@ def _initialize_scripts(self, diagnostic_name, raw_scripts): return scripts - def _resolve_diagnostic_ancestors(self, diagnostic_tasks, later): + def _resolve_diagnostic_ancestors(self, tasks): """Resolve diagnostic ancestors""" 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 diagnostic_tasks[task_id].ancestors is later: + 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(diagnostic_tasks, - id_glob) + ancestor_ids = fnmatch.filter(tasks, id_glob) if not ancestor_ids: - raise NamelistError( + raise RecipeError( "Could not find any ancestors matching {}" .format(id_glob)) logger.debug("Pattern %s matches %s", id_glob, ancestor_ids) - ancestors.extend(diagnostic_tasks[ancestor_id] - for ancestor_id in ancestor_ids) - diagnostic_tasks[task_id].ancestors = ancestors + ancestors.extend(tasks[a] for a in ancestor_ids) + tasks[task_id].ancestors = ancestors def initialize_tasks(self): - """Define tasks in namelist""" - logger.info("Creating tasks from namelist") - tasks = [] + """Define tasks in recipe""" + logger.info("Creating tasks from recipe") + tasks = {} - diagnostic_tasks = {} - later = object() for diagnostic_name, diagnostic in self.diagnostics.items(): logger.info("Creating tasks for diagnostic %s", diagnostic_name) # Create preprocessor tasks - preproc_tasks = [] for variable_name in diagnostic['preprocessor_output']: - logger.info("Creating preprocessor tasks for variable %s", - variable_name) + task_id = diagnostic_name + TASKSEP + variable_name + logger.info("Creating preprocessor task %s", task_id) task = _get_preprocessor_task( variables=diagnostic['preprocessor_output'][variable_name], profiles=self._preprocessors, config_user=self._cfg, write_ncl_interface=self._support_ncl) - preproc_tasks.append(task) - tasks.extend(preproc_tasks) + tasks[task_id] = task + + if not self._cfg['run_diagnostic']: + continue # Create diagnostic tasks for script_name, script_cfg in diagnostic['scripts'].items(): task_id = diagnostic_name + TASKSEP + script_name logger.info("Creating diagnostic task %s", task_id) - # Ancestors will be resolved after creating all tasks, - # unless there aren't any, in which case we set them to the - # preprocessor tasks. - ancestors = later if script_cfg['ancestors'] else preproc_tasks task = DiagnosticTask( script=script_cfg['script'], output_dir=script_cfg['output_dir'], - settings=script_cfg['settings'], - ancestors=ancestors, - ) - diagnostic_tasks[task_id] = task + settings=script_cfg['settings']) + tasks[task_id] = task - # Resolve diagnostic ancestors marked as 'later' - self._resolve_diagnostic_ancestors(diagnostic_tasks, later) + # Resolve diagnostic ancestors + self._resolve_diagnostic_ancestors(tasks) # TODO: check that no loops are created (will throw RecursionError) - # Only add diagnostic tasks if enabled - if self._cfg['run_diagnostic']: - tasks.extend(diagnostic_tasks.values()) - # Return smallest possible set of tasks - tasks = get_independent_tasks(tasks) - - return tasks + return get_independent_tasks(tasks.values()) 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 namelist.""" + """Run all tasks in the recipe.""" run_tasks( self.tasks, max_parallel_tasks=self._cfg['max_parallel_tasks']) diff --git a/esmvaltool/_task.py b/esmvaltool/_task.py index a2059ee603..05947401c5 100644 --- a/esmvaltool/_task.py +++ b/esmvaltool/_task.py @@ -1,6 +1,7 @@ """ESMValtool task definition""" import contextlib import datetime +import errno import logging import os import pprint @@ -14,7 +15,7 @@ logger = logging.getLogger(__name__) -MODEL_KEYS = { +DATASET_KEYS = { 'mip', } @@ -338,6 +339,40 @@ def _control_ncl_execution(self, process, lines): "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, cwd): + """Start the diagnostic script.""" + logger.info("Running command %s", cmd) + logger.debug("in environment\n%s", pprint.pformat(env)) + 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 = '' if cwd is None else '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, + 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 @@ -360,39 +395,22 @@ def _run(self, input_files): cmd = list(self.cmd) cwd = None - env = self.settings.pop('env', None) - if env: - env = {str(k): str(v) for k, v in env.items()} + env = None settings_file = self.write_settings() + if not self.script.lower().endswith('.py'): + env = dict(os.environ) + env['diag_scripts'] = os.path.join( + os.path.dirname(__file__), 'diag_scripts') + if is_ncl_script: cwd = os.path.dirname(__file__) - env = dict(os.environ) env['settings'] = settings_file else: cmd.append(settings_file) - logger.info("Running command %s", cmd) - logger.debug("in environment\n%s", pprint.pformat(env)) - 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 = '' if cwd is None else '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) - - process = subprocess.Popen( - cmd, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - cwd=cwd, - env=env) + process = self._start_diagnostic_script(cmd, env, cwd) returncode = None last_line = [''] @@ -422,7 +440,7 @@ def _run(self, input_files): raise DiagnosticError( "Diagnostic script {} failed with return code {}. See the log " - "in {}.".format(self.script, returncode, self.log)) + "in {}".format(self.script, returncode, self.log)) def __str__(self): """Get human readable description.""" diff --git a/esmvaltool/_version.py b/esmvaltool/_version.py index d17fa96b91..0c0137f85a 100644 --- a/esmvaltool/_version.py +++ b/esmvaltool/_version.py @@ -1,2 +1,2 @@ """ESMValTool version""" -__version__ = '2.0a0' +__version__ = '2.0a1' diff --git a/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py index be70091ced..ecf981dc97 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py +++ b/esmvaltool/cmor/_fixes/CMIP5/BNU_ESM.py @@ -40,7 +40,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 12.0 / 44.0 + metadata = cube.metadata + cube *= 12.0 / 44.0 + cube.metadata = metadata + return cube class ch4(Fix): @@ -79,7 +82,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 29.0 / 16.0 * 1.e9 + metadata = cube.metadata + cube *= 29.0 / 16.0 * 1.e9 + cube.metadata = metadata + return cube class co2(Fix): @@ -118,7 +124,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 29.0 / 44.0 * 1.e6 + metadata = cube.metadata + cube *= 29.0 / 44.0 * 1.e6 + cube.metadata = metadata + return cube class spco2(Fix): @@ -139,7 +148,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1.e6 + metadata = cube.metadata + cube *= 1.e6 + cube.metadata = metadata + return cube # No clear way to apply this fix now that we are working with cubes, not files diff --git a/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py b/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py index 9f63278a9a..ae681624df 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py +++ b/esmvaltool/cmor/_fixes/CMIP5/CCSM4.py @@ -1,5 +1,6 @@ """Fixes for CCSM4 model""" import numpy as np + from ..fix import Fix @@ -30,4 +31,28 @@ def fix_metadata(self, cube): class rlutcs(rlut): """Fixes for rlut""" + pass + + +class so(Fix): + """Fixes for so""" + + def fix_metadata(self, cube): + """ + Fix data + + Fixes discrepancy between declared units and real units + + Parameters + ---------- + cube: iris.cube.Cube + + Returns + ------- + iris.cube.Cube + + """ + cube.units = '1e3' + + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py b/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py index 358ebf814b..18458df963 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py +++ b/esmvaltool/cmor/_fixes/CMIP5/CESM1_BGC.py @@ -1,10 +1,10 @@ """Fixes for CESM1-BGC model""" import shutil + import six from cf_units import Unit from netCDF4 import Dataset - from ..fix import Fix @@ -46,10 +46,12 @@ def fix_file(self, filepath, output_dir): fill_value = variable._FillValue if var_name == 'nbp': fill_value = 1e+33 - new_var = new_dataset.createVariable(var_name, variable.datatype, - variable.dimensions, - zlib=True, - fill_value=fill_value) + new_var = new_dataset.createVariable( + var_name, + variable.datatype, + variable.dimensions, + zlib=True, + fill_value=fill_value) attr = {k: variable.getncattr(k) for k in variable.ncattrs()} del attr['_FillValue'] attr['missing_value'] = 1e+33 @@ -78,7 +80,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 28.966 / 44.0 + metadata = cube.metadata + cube *= 28.966 / 44.0 + cube.metadata = metadata + return cube class allvars(Fix): diff --git a/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py b/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py index ec32f3aeda..dfc7a7abad 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py +++ b/esmvaltool/cmor/_fixes/CMIP5/CNRM_CM5.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1e6 + metadata = cube.metadata + cube *= 1e6 + cube.metadata = metadata + return cube class msftmyzba(msftmyz): diff --git a/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py b/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py index 923ac9623d..a5ae077763 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py +++ b/esmvaltool/cmor/_fixes/CMIP5/CanESM2.py @@ -21,4 +21,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 12.0 / 44.0 + 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 index 62ccc31edb..2129576da2 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/EC_EARTH.py +++ b/esmvaltool/cmor/_fixes/CMIP5/EC_EARTH.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + metadata = cube.metadata + cube *= 100 + cube.metadata = metadata + return cube class sftlf(Fix): @@ -41,4 +44,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + 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 new file mode 100644 index 0000000000..98e4f981ad --- /dev/null +++ b/esmvaltool/cmor/_fixes/CMIP5/FGOALS_g2.py @@ -0,0 +1,27 @@ +"""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, cube): + """ + Fix metadata + + Fixes time units + + Parameters + ---------- + cube: iris.cube.Cube + + Returns + ------- + iris.cube.Cube + + """ + time = cube.coord('time') + time.units = Unit(time.units.name, time.units.calendar) + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py index ecd7e44930..3f3cf0a488 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py +++ b/esmvaltool/cmor/_fixes/CMIP5/FIO_ESM.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 29. / 44. * 1.e6 + metadata = cube.metadata + cube *= 29. / 44. * 1.e6 + cube.metadata = metadata + return cube class ch4(Fix): @@ -41,4 +44,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 29. / 16. * 1.e9 + 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 index e949d6c088..2c1b5a1dd6 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM2p1.py +++ b/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM2p1.py @@ -20,4 +20,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + 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 index 6cd55ab15e..88c6676710 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM3.py +++ b/esmvaltool/cmor/_fixes/CMIP5/GFDL_CM3.py @@ -20,4 +20,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + 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 index e06a3664ad..202b1b4ce2 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2G.py +++ b/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2G.py @@ -20,4 +20,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1e6 + metadata = cube.metadata + cube *= 1e6 + cube.metadata = metadata + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py b/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py index 2ac68c0875..ecc558f7d4 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py +++ b/esmvaltool/cmor/_fixes/CMIP5/GFDL_ESM2M.py @@ -48,7 +48,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + metadata = cube.metadata + cube *= 100 + cube.metadata = metadata + return cube class co2(Fix): @@ -69,4 +72,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1e6 + 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 new file mode 100644 index 0000000000..7665ea28e0 --- /dev/null +++ b/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_CC.py @@ -0,0 +1,27 @@ +"""Fixes for HadGEM2_CC""" +import numpy as np + +from ..fix import Fix + + +class allvars(Fix): + """Fixes common to all vars""" + + def fix_metadata(self, cube): + """ + Fixes latitude + + Parameters + ---------- + cube: iris.cube.Cube + + Returns + ------- + iris.cube.Cube + + """ + lat = cube.coord('latitude') + lat.points = np.clip(lat.points, -90., 90.) + lat.bounds = np.clip(lat.bounds, -90., 90.) + + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py b/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py new file mode 100644 index 0000000000..a6352bc7f2 --- /dev/null +++ b/esmvaltool/cmor/_fixes/CMIP5/HadGEM2_ES.py @@ -0,0 +1,27 @@ +"""Fixes for HadGEM2_ES""" +import numpy as np + +from ..fix import Fix + + +class allvars(Fix): + """Fixes common to all vars""" + + def fix_metadata(self, cube): + """ + Fixes latitude + + Parameters + ---------- + cube: iris.cube.Cube + + Returns + ------- + iris.cube.Cube + + """ + lat = cube.coord('latitude') + lat.points = np.clip(lat.points, -90., 90.) + lat.bounds = np.clip(lat.bounds, -90., 90.) + + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py index d481ae51aa..0f46f4b46a 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py +++ b/esmvaltool/cmor/_fixes/CMIP5/MIROC5.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + metadata = cube.metadata + cube *= 100 + cube.metadata = metadata + return cube class snw(Fix): @@ -41,7 +44,10 @@ def fix_metadata(self, cube): iris.cube.Cube """ - return cube * 100 + metadata = cube.metadata + cube *= 100 + cube.metadata = metadata + return cube class snc(snw): diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py index c8a5cbd418..c458c97d4f 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py +++ b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py @@ -24,7 +24,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1000 + metadata = cube.metadata + cube *= 1000 + cube.metadata = metadata + return cube class co2(Fix): @@ -121,3 +124,27 @@ def fix_metadata(self, cube): pass return cube + + +class tos(allvars): + def fix_metadata(self, cube): + """ + Fix metadata + + Fixes errors in time units. + + Parameters + ---------- + cube: iris.cube.Cube + + Returns + ------- + iris.cube.Cube + + """ + time = cube.coord('time') + calendar = time.units.calendar + if time.units.origin == 'days since 1850-1-1': + time.units = cf_units.Unit( + 'days since 1850-1-1 00:00:00', calendar=calendar) + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py index d68421eeeb..18b9b59f77 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py +++ b/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM_CHEM.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1000 + metadata = cube.metadata + cube *= 1000 + cube.metadata = metadata + return cube # if (name .eq. "tro3") then diff --git a/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py b/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py index d634868622..d0e7323330 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py +++ b/esmvaltool/cmor/_fixes/CMIP5/MPI_ESM_LR.py @@ -20,4 +20,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 100 + metadata = cube.metadata + cube *= 100 + cube.metadata = metadata + return cube diff --git a/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py b/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py index 919b686575..77c2a3977e 100644 --- a/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py +++ b/esmvaltool/cmor/_fixes/CMIP5/inmcm4.py @@ -20,7 +20,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * -1 + metadata = cube.metadata + cube *= -1 + cube.metadata = metadata + return cube class lai(Fix): @@ -41,4 +44,7 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube / 100.0 + metadata = cube.metadata + cube *= 0.01 + cube.metadata = metadata + return cube diff --git a/esmvaltool/cmor/_fixes/OBS/ESACCI_GHG.py b/esmvaltool/cmor/_fixes/OBS/ESACCI_GHG.py index 9c24aa1d20..4111abc32a 100644 --- a/esmvaltool/cmor/_fixes/OBS/ESACCI_GHG.py +++ b/esmvaltool/cmor/_fixes/OBS/ESACCI_GHG.py @@ -42,7 +42,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1.0e6 + metadata = cube.metadata + cube *= 1.0e6 + cube.metadata = metadata + return cube class xco2Stddev(xco2Stderr): @@ -89,7 +92,10 @@ def fix_data(self, cube): iris.cube.Cube """ - return cube * 1.0e9 + metadata = cube.metadata + cube *= 1.0e9 + cube.metadata = metadata + return cube class xch4Stddev(xch4Stderr): diff --git a/esmvaltool/cmor/_fixes/fix.py b/esmvaltool/cmor/_fixes/fix.py index 764f929f52..c498200e62 100644 --- a/esmvaltool/cmor/_fixes/fix.py +++ b/esmvaltool/cmor/_fixes/fix.py @@ -1,11 +1,11 @@ -"""Contains the base class for model fixes""" +"""Contains the base class for dataset fixes""" import importlib import os class Fix(object): """ - Base class for model fixes. + Base class for dataset fixes. """ def fix_file(self, filepath, output_dir): @@ -80,25 +80,25 @@ def __ne__(self, other): return not (self == other) @staticmethod - def get_fixes(project, model, variable): + 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 MODEL, and get + 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 model, i.e. bad name for the time + 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, model and variable names will have '-' replaced by '_' before - checking because it is not possible to use the character '-' in python - names. + 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 - model: str + dataset: str variable: str Returns @@ -107,14 +107,13 @@ def get_fixes(project, model, variable): Fixes to apply for the given data """ project = project.replace('-', '_') - model = model.replace('-', '_') + dataset = dataset.replace('-', '_') variable = variable.replace('-', '_') fixes = [] try: fixes_module = importlib.import_module( - 'esmvaltool.cmor._fixes.{0}.{1}'.format( - project, model)) + 'esmvaltool.cmor._fixes.{0}.{1}'.format(project, dataset)) for fix_name in ('allvars', variable): try: fixes.append(getattr(fixes_module, fix_name)()) diff --git a/esmvaltool/cmor/check.py b/esmvaltool/cmor/check.py index fb766cd722..42f96d93db 100644 --- a/esmvaltool/cmor/check.py +++ b/esmvaltool/cmor/check.py @@ -1,4 +1,4 @@ -"""CMOR checker for Iris cubes""" +"""Module for checking iris cubes against their CMOR definitions""" import logging import cf_units @@ -89,19 +89,19 @@ def check_metadata(self, logger=None): ------ CMORCheckException: If errors are found. If fail_on_error attribute is set to True, - raises as soon as an error if defected. If set to False, it perform + 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_rank() 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() @@ -115,7 +115,7 @@ def report_errors(self): Raises ------ CMORCheckError: - If there are errors reported. + If any errors were reported before calling this method. """ if self.has_errors(): @@ -154,16 +154,17 @@ def check_data(self, logger=None): ------ CMORCheckException: If errors are found. If fail_on_error attribute is set to True, - raises as soon as an error if defected. If set to False, it perform - all checks and the raises. + 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: - if str(self._cube.units) != self._cmor_var.units: - self._cube.convert_units(self._cmor_var.units) + units = self._get_efective_units() + if str(self._cube.units) != units: + self._cube.convert_units(units) self._check_data_range() self._check_coords_data() @@ -189,8 +190,14 @@ def _check_var_metadata(self): self._cmor_var.standard_name, self._cube.standard_name) # Check units + if self._cube.attributes.get('invalid_units', '').lower() == 'psu': + self._cube.units = '1.0' + del self._cube.attributes['invalid_units'] + if self._cmor_var.units: - if not self._cube.units.is_convertible(self._cmor_var.units): + units = self._get_efective_units() + + if not self._cube.units.is_convertible(units): self.report_error('Variable {0} units () can not be ' 'converted to {2}', self._cube.var_name, self._cmor_var.units, self._cube.units) @@ -214,6 +221,13 @@ def _check_var_metadata(self): attr, attr_value, self._cube.attributes[attr]) + def _get_efective_units(self): + if self._cmor_var.units.lower() == 'psu': + units = '1.0' + else: + units = self._cmor_var.units + return units + def _check_data_range(self): # Check data is not less than valid_min if self._cmor_var.valid_min: @@ -231,16 +245,26 @@ def _check_data_range(self): def _check_rank(self): # Count rank, excluding scalar dimensions rank = 0 + dimensions = [] for coordinate in self._cmor_var.coordinates.values(): - if coordinate.generic_level or not coordinate.value: + 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): - for (axis, coordinate) in self._cmor_var.coordinates.items(): + for (_, coordinate) in self._cmor_var.coordinates.items(): if coordinate.generic_level: continue else: @@ -263,8 +287,7 @@ def _check_coords(self): # Get coordinate var_name as it exists! try: - coord = self._cube.coord( - var_name=var_name, dim_coords=True) + coord = self._cube.coord(var_name=var_name, dim_coords=True) except iris.exceptions.CoordinateNotFoundError: continue @@ -279,13 +302,12 @@ def _check_coords_data(self): # Get coordinate var_name as it exists! try: - coord = self._cube.coord( - var_name=var_name, dim_coords=True) + 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) + self._check_coord_monotonicity_and_direction( + coordinate, coord, var_name) def _check_coord(self, cmor, coord, var_name): if coord.var_name == 'time': @@ -522,8 +544,9 @@ def _get_cmor_checker(table, automatic_fixes=False): """Get a CMOR checker/fixer.""" if table not in CMOR_TABLES: - raise NotImplementedError("No CMOR checker implemented for table {}" - .format(table)) + 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) @@ -539,21 +562,69 @@ def _checker(cube): def cmor_check_metadata(cube, cmor_table, mip, short_name): - """Check if metadata conforms to CMOR.""" + """ + 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 + + """ checker = _get_cmor_checker(cmor_table, mip, short_name) checker(cube).check_metadata() return cube def cmor_check_data(cube, cmor_table, mip, short_name): - """Check if data conforms to CMOR.""" + """ + 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 + + """ checker = _get_cmor_checker(cmor_table, mip, short_name) checker(cube).check_data() return cube def cmor_check(cube, cmor_table, mip, short_name): - """Check if cube conforms to CMOR.""" + """ + 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 + + """ cmor_check_metadata(cube, cmor_table, mip, short_name) cmor_check_data(cube, cmor_table, mip, short_name) return cube diff --git a/esmvaltool/cmor/fix.py b/esmvaltool/cmor/fix.py index 464b60b6d0..30e5ec9473 100644 --- a/esmvaltool/cmor/fix.py +++ b/esmvaltool/cmor/fix.py @@ -1,20 +1,87 @@ -"""CMOR fixer for Iris cubes.""" +""" +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 ._fixes.fix import Fix from .check import _get_cmor_checker -def fix_file(filename, short_name, project, model, output_dir): - """Fix errors that prevent loading or can not be fixed in the cube.""" +def fix_file(filename, 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 + ---------- + filename: 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, model=model, variable=short_name): + project=project, dataset=dataset, variable=short_name): filename = fix.fix_file(filename, output_dir) return filename -def fix_metadata(cube, short_name, project, model, cmor_table=None, mip=None): - """Apply fixes to the metadata of the cube.""" +def fix_metadata(cube, short_name, project, dataset, cmor_table=None, + mip=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 + ---------- + 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 + + Returns + ------- + iris.cube.Cube: + Fixed and checked cube + + Raises + ------ + CMORCheckError: + If the checker detects errors in the metadata that it can not fix. + + """ for fix in Fix.get_fixes( - project=project, model=model, variable=short_name): + project=project, dataset=dataset, variable=short_name): cube = fix.fix_metadata(cube) if cmor_table and mip: checker = _get_cmor_checker( @@ -27,10 +94,46 @@ def fix_metadata(cube, short_name, project, model, cmor_table=None, mip=None): return cube -def fix_data(cube, short_name, project, model, cmor_table=None, mip=None): - """Apply fixes to the data of the cube.""" +def fix_data(cube, short_name, project, dataset, cmor_table=None, mip=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 + + 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, model=model, variable=short_name): + project=project, dataset=dataset, variable=short_name): cube = fix.fix_data(cube) if cmor_table and mip: checker = _get_cmor_checker( diff --git a/esmvaltool/cmor/table.py b/esmvaltool/cmor/table.py index 4535e38c92..f53ee418e7 100644 --- a/esmvaltool/cmor/table.py +++ b/esmvaltool/cmor/table.py @@ -10,16 +10,22 @@ import logging import os -from .._config import CFG - logger = logging.getLogger(__name__) +CMOR_TABLES = {} +"""dict of str, obj: CMOR info objects""" + -def _read_cmor_tables(): - tables = {} +def read_cmor_tables(cfg_developer): + """Read cmor tables required in the configuration - for table in CFG.keys(): - project = CFG[table] + Parameters + ---------- + cfg_developer : dict of str + Parsed config-developer file + """ + for table in cfg_developer.keys(): + project = cfg_developer[table] table_path = project.get('cmor_tables', '') table_path = os.path.expandvars(os.path.expanduser(table_path)) @@ -27,10 +33,9 @@ def _read_cmor_tables(): cmor_type = project.get('cmor_type', 'CMIP5') if cmor_type == 'CMIP5': - tables[table] = CMIP5Info(table_path) + CMOR_TABLES[table] = CMIP5Info(table_path) elif cmor_type == 'CMIP6': - tables[table] = CMIP6Info(table_path) - return tables + CMOR_TABLES[table] = CMIP6Info(table_path) class CMIP6Info(object): @@ -221,19 +226,26 @@ def __init__(self, table_type, short_name): super(VariableInfo, self).__init__() self.table_type = table_type 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 = {} - - self.derived = False - self.required_vars = [] + """Coordinates""" self._json_data = None @@ -278,16 +290,31 @@ def __init__(self, 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): """ @@ -353,7 +380,6 @@ def _get_cmor_path(cmor_tables_path): return cmor_tables_path def _load_table(self, table_file, table_name='', frequency=''): - with open(table_file) as self._current_table: self._read_line() while True: @@ -383,7 +409,17 @@ def _load_table(self, table_file, table_name='', frequency=''): return def add_custom_table_file(self, table_file, table_name): - """Add a file with custom definitions to table.""" + """ + Add a file with custom definitions to table. + + Parameters + ---------- + table_file: basestring + Path to the file containing the custom table + table_name: basestring + Name of the the custom table to add + + """ random_variable_key = next(iter(self.tables[table_name])) random_variable = self.tables[table_name][random_variable_key] frequency = random_variable.frequency @@ -454,6 +490,3 @@ def get_variable(self, table, short_name): return self.tables[table][short_name] except KeyError: return None - - -CMOR_TABLES = _read_cmor_tables() diff --git a/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat new file mode 100644 index 0000000000..9e84eb79dd --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_clhmtisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: clhmtisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_High_Level_Medium_Thickness_Cloud_Area_Fraction +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 new file mode 100644 index 0000000000..567bd123a9 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_clhtkisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: clhtkisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_high_level_thick_cloud_area_fraction +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_cllmtisccp.dat b/esmvaltool/cmor/tables/custom/CMOR_cllmtisccp.dat new file mode 100644 index 0000000000..6ebf9a9d94 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_cllmtisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: cllmtisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_Low_Level_Medium_Thickness_Cloud_Area_Fraction +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 new file mode 100644 index 0000000000..0bb5ed7ec6 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_clltkisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: clltkisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_low_level_thick_cloud_area_fraction +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 new file mode 100644 index 0000000000..3533ea5698 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_clmmtisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: clmmtisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_Middle_Level_Medium_Thickness_Cloud_Area_Fraction +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 new file mode 100644 index 0000000000..fe136404e5 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_clmtkisccp.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: clmtkisccp +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: ISCCP_Middle_Level_Thick_Cloud_Area_Fraction +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_rlns.dat b/esmvaltool/cmor/tables/custom/CMOR_rlns.dat new file mode 100644 index 0000000000..2b27a03fbe --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_rlns.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: rlns +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: surface_net_downward_longwave_radiation +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_rsns.dat b/esmvaltool/cmor/tables/custom/CMOR_rsns.dat new file mode 100644 index 0000000000..357bcf0d47 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_rsns.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: rsns +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: surface_net_downward_shortwave_radiation +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 new file mode 100644 index 0000000000..2f935e6ce8 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_rsnt.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: rsnt +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: toa_net_downward_shortwave_radiation +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_rtnt.dat b/esmvaltool/cmor/tables/custom/CMOR_rtnt.dat new file mode 100644 index 0000000000..59a6474013 --- /dev/null +++ b/esmvaltool/cmor/tables/custom/CMOR_rtnt.dat @@ -0,0 +1,22 @@ +SOURCE: CMIP5 +!============ +variable_entry: rtnt +!============ +modeling_realm: atmos +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: toa_net_downward_total_radiation +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/config-developer.yml b/esmvaltool/config-developer.yml index 11390298c4..26fade00c7 100644 --- a/esmvaltool/config-developer.yml +++ b/esmvaltool/config-developer.yml @@ -16,93 +16,90 @@ # # Only the default drs is mandatory, the others are optional ############################################################################### -PRIMAVERA: - input_dir: '[expid]/cmorfiles/CMIP/[institute]/[model]/[exp]/[ensemble]/[mip]/[var]/[grid]/[version]' - input_file: '[var]_[mip]_[model]_[exp]_[ensemble]_[grid]_*.nc' - output_file: '[project]_[model]_[mip]_[exp]_[ensemble]_[field]_[var]_[start_year]-[end_year]' - cmor_type: 'CMIP6' - cmor_tables: '~/PycharmProjects/earthdiagnostics/earthdiagnostics/cmor_tables/primavera' - CMIP6: - input_dir: 'CMIP/[institute]/[model]/[exp]/[ensemble]/[mip]/[var]/[grid]/[version]' - input_file: '[var]_[mip]_[model]_[exp]_[ensemble]_[grid]_*.nc' - output_file: '[project]_[model]_[mip]_[exp]_[ensemble]_[field]_[var]_[start_year]-[end_year]' + input_dir: 'CMIP/[institute]/[dataset]/[exp]/[ensemble]/[mip]/[var]/[grid]/[version]' + input_file: '[var]_[mip]_[dataset]_[exp]_[ensemble]_[grid]_*.nc' + output_file: '[project]_[dataset]_[mip]_[exp]_[ensemble]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP6' CMIP5: input_dir: default: '/' - BADC: '[institute]/[model]/[exp]/[freq]/[realm]/[mip]/[ensemble]/latest/[var]' - DKRZ: '[institute]/[model]/[exp]/[freq]/[realm]/[mip]/[ensemble]/[latestversion]/[var]' - ETHZ: '[exp]/[mip]/[var]/[model]/[ensemble]/' - SMHI: '[model]/[ensemble]/[exp]/[freq]' - BSC: '[project]/[exp]/[model]' - input_file: '[var]_[mip]_[model]_[exp]_[ensemble]_*' - output_file: '[project]_[model]_[mip]_[exp]_[ensemble]_[field]_[var]_[start_year]-[end_year]' + BADC: '[institute]/[dataset]/[exp]/[freq]/[realm]/[mip]/[ensemble]/latest/[var]' + DKRZ: '[institute]/[dataset]/[exp]/[freq]/[realm]/[mip]/[ensemble]/[latestversion]/[var]' + ETHZ: '[exp]/[mip]/[var]/[dataset]/[ensemble]/' + SMHI: '[dataset]/[ensemble]/[exp]/[freq]' + BSC: '[project]/[exp]/[dataset.lower]' + input_file: '[var]_[mip]_[dataset]_[exp]_[ensemble]_*' + fx_dir: + default: '/' + BADC: '[institute]/[dataset]/[exp]/fx/[realm]/fx/r0i0p0/[latestversion]/[fx_var]' + DKRZ: '[institute]/[dataset]/[exp]/fx/[realm]/fx/r0i0p0/[latestversion]/[fx_var]' + ETHZ: '[exp]/fx/[fx_var]/[dataset]/r0i0p0' + fx_file: '[fx_var]_fx_[dataset]_[exp]_r0i0p0.nc' + output_file: '[project]_[dataset]_[mip]_[exp]_[ensemble]_[field]_[var]_[start_year]-[end_year]' institute: - 'HadGEM2-CC': 'MOHC' - 'HadGEM2-A': 'MOHC' - 'HadCM3': 'MOHC' - 'HadGEM2-ES': 'MOHC' - 'FIO-ESM': 'FIO' - 'fio-esm': 'FIO' - 'CCSM4': 'NCAR' - 'GEOS-5': 'NASA-GMAO' - 'inmcm4': 'INM' - 'CanESM2': 'CCCma' - 'CanCM4': 'CCCma' + 'ACCESS1-0': 'CSIRO-BOM' + 'ACCESS1-3': 'CSIRO-BOM' + 'bcc-csm1-1': 'BCC' + 'bcc-csm1-1-m': 'BCC' + 'BNU-ESM': 'BNU' 'CanAM4': 'CCCma' - 'GISS-E2-R': 'NASA-GISS' - 'GISS-E2-R-CC': 'NASA-GISS' - 'GISS-E2-H-CC': 'NASA-GISS' - 'GISS-E2-H': 'NASA-GISS' - 'CNRM-CM5': 'CNRM-CERFACS' - 'CNRM-CM5-2': 'CNRM-CERFACS' - 'NICAM-09': 'NICAM' - 'IPSL-CM5A-LR': 'IPSL' - 'IPSL-CM5A-MR': 'IPSL' - 'IPSL-CM5B-LR': 'IPSL' - 'CSIRO-Mk3-6-0': 'CSIRO-QCCCE' - 'CESM1-CAM5': 'NSF-DOE-NCAR' - 'CESM1-CAM5-1-FV2': 'NSF-DOE-NCAR' + 'CanCM4': 'CCCma' + 'CanESM2': 'CCCma' + 'CCSM4': 'NCAR' 'CESM1-BGC': 'NSF-DOE-NCAR' - 'CESM1-WACCM': 'NSF-DOE-NCAR' + 'CESM1-CAM5': 'NSF-DOE-NCAR' + 'CESM1-CAM5-1-FV2': 'NSF-DOE-NCA' 'CESM1-FASTCHEM': 'NSF-DOE-NCAR' - 'NorESM1-M': 'NCC' - 'NorESM1-ME': 'NCC' - 'CFSv2-2011': 'NOAA-NCEP' - 'ACCESS1-3': 'CSIRO-BOM' - 'ACCESS1-0': 'CSIRO-BOM' - 'CMCC-CM': 'CMCC' + '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-s2': 'LASG-IAP' 'FGOALS-gl': 'LASG-IAP' - 'GFDL-HIRAM-C180': 'NOAA-GFDL' - 'GFDL-ESM2G': 'NOAA-GFDL' + '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' - 'EC-EARTH': 'ICHEC' - 'BNU-ESM': 'BNU' - 'CFSv2-2011': 'COLA-CFS' + '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' - 'MIROC4h': 'MIROC' - 'MIROC5': 'MIROC' + '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' - 'bcc-csm1-1': 'BCC' - 'bcc-csm1-1-m': 'BCC' - 'HadGEM2-ES': 'INPE' + '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' - 'MRI-AGCM3-2S': 'MRI' + 'NICAM-09': 'NICAM' + 'NorESM1-M': 'NCC' + 'NorESM1-ME': 'NCC' realm_frequency: 'Amon': ['atmos', 'mon'] 'Omon': ['ocean', 'mon'] @@ -118,45 +115,49 @@ CMIP5: OBS: input_dir: - default: '[tier]/[model]' - BSC: '[type]/[institute]/[model]/[freq_folder]/[var][freq_base]' + default: '[tier]/[dataset]' + BSC: '[type]/[institute.lower]/[dataset.lower]/[freq_folder]/[var][freq_base]' input_file: - default: '[project]_[model]_[type]_[version]_[field]_[var]_*' + default: '[project]_[dataset]_[type]_[version]_[field]_[var]_*' BSC: '[var]_*.nc' - output_file: '[project]_[model]_[type]_[version]_[field]_[var]_[start_year]-[end_year]' + fx_dir: + default: '[tier]/[dataset]' + fx_file: + default: '[project]_[dataset]_[type]_fx_[fx_var].nc' + output_file: '[project]_[dataset]_[type]_[version]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' obs4mips: input_dir: - default: '[tier]/[model]' - input_file: '[var]_[model]_[level]_[version]_*' - output_file: '[project]_[model]_[level]_[version]_[field]_[var]_[start_year]-[end_year]' + default: '[tier]/[dataset]' + input_file: '[var]_[dataset]_[level]_[version]_*' + output_file: '[project]_[dataset]_[level]_[version]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' ana4mips: input_dir: - default: '[tier]/[model]' - input_file: '[var]_[mip]_[type]_[model]_*' - output_file: '[project]_[mip]_[type]_[model]_[field]_[var]_[start_year]-[end_year]' + default: '[tier]/[dataset]' + input_file: '[var]_[mip]_[type]_[dataset]_*' + output_file: '[project]_[mip]_[type]_[dataset]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' CCMVal1: input_dir: - default: '[exp]/[model]' + default: '[exp]/[dataset]' input_file: '[project]_[exp]_[name]_[ensemble]_[field]_[var]' output_file: '[project]_[exp]_[name]_[ensemble]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' CCMVal2: input_dir: - default: '[exp]/[model]' + default: '[exp]/[dataset]' input_file: '[project]_[exp]_[name]_[ensemble]_[field]_[var]' output_file: '[project]_[exp]_[name]_[ensemble]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' EMAC: input_dir: - default: '[model]' + default: '[dataset]' input_file: '' - output_file: '[model]_[ensemble]_[field]_[var]_[start_year]-[end_year]' + output_file: '[dataset]_[ensemble]_[field]_[var]_[start_year]-[end_year]' cmor_type: 'CMIP5' diff --git a/esmvaltool/config-logging.yml b/esmvaltool/config-logging.yml index 93ed41fe7c..b78b308ed8 100644 --- a/esmvaltool/config-logging.yml +++ b/esmvaltool/config-logging.yml @@ -5,11 +5,11 @@ version: 1 disable_existing_loggers: false formatters: console: - format: '%(asctime)s [%(process)d] %(levelname)-7s %(message)s' + format: '%(asctime)s UTC [%(process)d] %(levelname)-7s %(message)s' brief: format: '%(levelname)-7s [%(process)d] %(message)s' debug: - format: '%(asctime)s [%(process)d] %(levelname)-7s %(name)s:%(lineno)s %(message)s' + format: '%(asctime)s UTC [%(process)d] %(levelname)-7s %(name)s:%(lineno)s %(message)s' handlers: console: class: logging.StreamHandler diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml new file mode 100644 index 0000000000..bbbcf5faa1 --- /dev/null +++ b/esmvaltool/config-references.yml @@ -0,0 +1,573 @@ +# Full list of authors and references for the currently implemented +# diagnostics. +# +# Add new entries alphabetically (for authors) or at the end of the +# respective lists. Do not change the current entries! +# + +authors: +### Core Team (PI and core developers) + eyri_ve: + name: Eyring, Veronika + institute: DLR, Germany + email: veronika.eyring 'at' dlr.de + ande_bo: + name: Andela, Bouwe + institute: NLESC, Netherlands + email: b.andela 'at' esciencecenter.nl + broe_bj: + name: Broetz, Bjoern + institute: DLR, Germany + email: bjoern.broetz 'at' dlr.de + dros_ni: + name: Drost, Niels + institute: NLESC, Netherlands + email: n.drost 'at' esciencecenter.nl + kold_ni: + name: Koldunov, Nikolay + institute: AWI, Germany + email: nikolay.koldunov 'at' awi.de + laue_ax: + name: Lauer, Axel + institute: DLR, Germany + email: axel.lauer 'at' dlr.de + muel_bn: + name: Mueller, Benjamin + institute: LMU, Germany + email: b.mueller 'at' iggf.geo.uni-muenchen.de + pred_va: + name: Predoi, Valeriu + institute: URead, UK + email: valeriu.predoi 'at' ncas.ac.uk + righ_ma: + name: Righi, Mattia + institute: DLR, Germany + email: mattia.righi 'at' dlr.de + vega_ja: + name: Vegas-Regidor, Javier + institute: BSC, Spain + email: javier.vegas 'at' bsc.es +### Development team + anav_al: + name: Anav, Alessandro + institute: Univ. of Exeter, UK + email: a.anav 'at' exeter.ac.uk + andr_ol: + name: Andrews, Oliver + institute: Tyndall Centre, UK + email: oliverdandrews 'at' googlemail.com + bock_ls: + name: Bock, Lisa + institute: DLR, Germany + email: lisa.bock 'at' dlr.de + chen_ja: + name: Chen, Jack + institute: NCAR, USA + email: cchen 'at' ucar.edu + cion_ir: + name: Cionni, Irene + institute: ENEA, Italy + email: irene.cionni 'at' enea.it + davi_ed: + name: Davin, Edouard Leopold + institute: ETH, CH + email: edouard.davin 'at' env.ethz.ch + ehbr_ca: + name: Ehbrecht, Carsten + institute: DKRZ, Germany + email: ehbrecht 'at' dkrz.de + fran_fr: + name: Frank, Franziska + institute: DLR, Germany + email: franziska.frank 'at' dlr.de + gain_al: + name: Gainusa-Bogdan, Alina + institute: France + gall_be: + name: Gallego-Elvira, Belen + institute: NERC, UK + email: belgal 'at' nerc.ac.uk + gett_an: + name: Gettelman, Andrew + institute: NCAR, USA + email: andrew 'at' ucar.edu + gott_kl: + name: Gottschaldt, Klaus-Dirk + institute: DLR, Germany + email: klaus-dirk.gottschaldt 'at' dlr.de + hage_st: + name: Hagemann, Stefan + institute: MPI-M, Germany + email: stefan.hagemann 'at' mpimet.mpg.de + hann_ul: + name: Hansson, Ulf + institute: SMHI, Sweden + hemp_ni: + name: Hempelmann, Nils + institute: IPSL, France + email: nils.hempelmann 'at' ipsl.jussieu.fr + hutj_ro: + name: Hutjes, Ronald + institute: Univ. of Wageningen, NL + email: ronald.hutjes 'at' wur.nl + juck_ma: + name: Juckes, Martin + institute: BADC, UK + email: martin.juckes 'at' stfc.ac.uk + kady_ni: + name: Kadygrov, Nikolay + institute: IPSL, France + email: nikolay.kadygrov 'at' ipsl.jussieu.fr + kind_st: + name: Kindermann, Stephan + institute: DKRZ, Germany + email: kindermann 'at' dkrz.de + kras_jo: + name: Krasting, John + institute: NOAA, USA + email: john.krasting 'at' noaa.gov + kune_dm: + name: Kunert, Dominik + institute: DLR, Germany + email: dominik.kunert 'at' dlr.de + levi_ri: + name: Levine, Richard + institute: MetOffice, UK + email: richard.levine 'at' metoffice.gov.uk + litt_bi: + name: Little, Bill + institute: MetOffice, UK + email: bill.little 'at' metoffice.gov.uk + maek_ja: + name: Makela, Jarmo + malo_er: + name: Maloney, Eric + institute: Colorado State University + email: emaloney 'at' atmos.colostate.edu + maso_er: + name: Mason, Erik + institute: NOAA, USA + email: erik.mason 'at' noaa.gov + mass_fr: + name: Massonnet, Francois + institute: Spain + mart_gi: + name: Martin, Gill + institute: MetOffice, UK + email: gill.martin 'at' metoffice.gov.uk + mell_fe: + name: Mello, Felipe + institute: INPE, Brazil + mohi_da: + name: Dalvi, Mohit + institute: MetOffice, UK + email: mohit.dalvi 'at' metoffice.gov.uk + niku_gr: + name: Nikulin, Grigory + institute: SMHI, Sweden + email: grigory.nikulin 'at' smhi.se + nobr_pa: + name: Nobre, Paulo + institute: INPE, Brazil + oliv_ar: + name: Oliveira, Arildo + institute: INPE, Brazil + phil_ad: + name: Phillips, Adam + institute: NCAR, USA + email: asphilli 'at' ucar.edu + pugh_th: + name: Pugh, Thomas + institute: KIT, Germany + email: thomas.pugh 'at' kit.edu + read_si: + name: Read, Simon + institute: Univ. of Reading, UK + email: s.read 'at' reading.ac.uk + ring_ma: + name: Ringer, Mark + institute: MetOffice, UK + email: mark.ringer 'at' metoffice.gov.uk + rio_ca: + name: Rio, Catherine + institute: IPSL, France + email: catherine.rio 'at' lmd.jussieu.fr + roeh_ro: + name: Roehrig, Romain + institute: MeteoFr, France + email: romain.roehrig 'at' meteo.fr + schl_ma: + name: Schlund, Manuel + institute: DLR, Germany + email: manuel.schlund 'at' dlr.de + senf_da: + name: Senftleben, Daniel + institute: DLR, Germany + email: daniel.senftleben 'at' dlr.de + somm_ph: + name: Sommer, Philipp + institute: Univ. of Hamburg, Germany + email: 'at' + ster_an: + name: Sterl, Andreas + institute: KNMI, Netherlands + email: sterl 'at' knmi.nl + teic_ca: + name: Teichmann, Claas + institute: CSC2, Germany + email: claas.teichmann 'at' hzg.de + tsus_yo: + name: Tsushima, Yoko + institute: MetOffice, UK + email: yoko.tsushima 'al' metoffice.gov.uk + vanu_be: + name: van Ulft, Bert + institute: KNMI, Netherlands + email: bert.van.ulft 'at' knmi.nl + vini_ca: + name: Vinicius, Capistrano + institute: INPE, Brazil + walt_je: + name: Walton, Jeremy + institute: MetOffice, UK + email: jeremy.walton 'at' metoffice.gov.uk + wang_sh: + name: Wang, Shiyu + institute: SMHI, Sweden + email: shiyu.wang 'at' smhi.se + wenz_sa: + name: Wenzel, Sabrina + institute: DLR, Germany + email: sabrina.wenzel 'at' dlr.de + will_ke: + name: Williams, Keith + institute: MetOffice, UK + email: keith.williams 'at' metoffice.gov.uk +### Viewers (not active developers) + bala_ve: + name: Balaji, Venkatramani + institute: GFDL, USA + email: balaji 'at' princeton.edu + bunz_fe: + name: Bunzel, Felix + institute: MPI-M, Germany + email: felix.bunzel 'at' mpimet.mpg.de + char_an: + name: Charlton-Perez, Andrew + institute: Univ. of Reading, UK + email: a.j.charlton-perez 'at' reading.ac.uk + denn_jo: + name: Dennis, John + institute: NCAR, USA + email: dennis 'at' ucar.edu + graf_po: + name: Graf, Phoebe + institute: DLR, Germany + email: phoebe.graf 'at' dlr.de + hegg_mi: + name: Hegglin, Michaela + institute: Univ. of Reading, UK + email: m.i.hegglin 'at' reading.ac.uk + hend_jo: + name: Hendricks, Johannes + institute: DLR, Germany + email: johannes.hendricks 'at' dlr.de + john_ja: + name: John, Jasmin + institute: NOAA, USA + email: jasmin.john 'at' noaa.gov + jone_co: + name: Jones, Colin + institute: MetOffice, UK + email: colin.jones 'at' metoffice.gov.uk + kais_ch: + name: Kaiser, Christopher + institute: DLR, Germany + email: christopher.kaiser 'at' dlr.de + karp_al: + name: Karpechko, Alexey, + institute: FMI, Finland + email: Alexey.Karpechko 'at' fmi.fi + lawr_br: + name: Lawrence, Bryan + institute: STFC, UK + email: Bryan.Lawrence 'at' stfc.ac.uk + mick_sh: + name: Mickelson, Sheri + institute: NCAR, USA + email: mickelso 'at' ucar.edu + ocon_fi: + name: OConnor, Fiona + institute: MetOffice, UK + email: fiona.oconnor 'at' metoffice.gov.uk + radh_ap: + name: Radhakrishnan, Aparna + institute: GFDL, USA + email: aparna.radhakrishnan 'at' noaa.gov + sell_al: + name: Sellar, Alistair + institute: MetOffice, UK + email: alistair.sellar 'at' metoffice.gov.uk + wyse_kl: + name: Wyser, Klaus + institute: SMHI, Sweden + email: klaus.wyser 'at' smhi.se +### Former developers + brae_me: + name: Braeu, Melanie + institute: DLR, Germany + email: braeu.melanie 'at' physik.uni-muenchen.de + dusc_ch: + name: Duscha, Christiane + institute: DLR, Germany + email: christiane.duscha 'at' dlr.de + enri_cl: + name: Enright, Clare + institute: UEA, UK + email: c.enright 'at' uea.ac.uk + halu_al: + name: Haluszczynski, Alexander + institute: DLR, Germany + email: alexander.haluszczynski 'at' dlr.de + herm_mi: + name: Herman, Michael + institute: New Mexico Tech, USA + email: mherman 'at' nmt.edu + hueb_mi: + name: Huebner, Michael + institute: DLR, Germany + email: michael.huebner 'at' dlr.de + john_ma: + name: Johnston, Marston + institute: SMHI, Sweden + email: shejo284 'at' gmail.com + klin_ca: + name: Klinger, Carolin + institute: DLR, Germany + email: carolin.klinger 'at' physik.uni-muenchen.de + kola_mi: + name: Kolax, Michael + neal_ri: + name: Neale, Richard + institute: NCAR, US + email: rneale 'at' ucar.edu + orlo_bo: + name: Orlowsky, Boris + institute: ETH, Switzerland + email: boris.orlowsky 'at' env.ethz.ch + pasc_st: + name: Pascoe, Stephen + institute: STFC, UK + email: stephen.pascoe 'at' stfc.ac.uk + stev_ma: + name: Stevens, Mark + institute: NCAR, US + email: stevens 'at' ucar.edu +### Former viewers (not active viewers) + butc_ne: + name: Butchart, Neal + institute: MetOffice, UK + email: neal.butchart 'at' metoffice.gov.uk + hass_da: + name: Hassell, David + institute: Univ. of Reading, UK + email: d.c.hassell 'at' reading.ac.uk + ivan_de: + name: Ivanova, Detelina + institute: NERSC, Norway + email: detelina.ivanova 'at' nersc.no + mois_au: + name: Moise, Aurel + institute: BOM, Australia + email: a.moise 'at' bom.gov.au + pend_di: + name: Pendlebury, Diane + institute: Univ. of Toronto, Canada + email: diane 'at' atmosp.physics.utoronto.ca + step_da: + name: Stepanova, Daria + institute: FMI, Finland + email: daria.stepanova 'at' fmi.fi + tilm_si: + name: Tilmes, Simone + institute: NCAR, US + email: tilmes 'at' ucar.edu + + +references: + acknow_author: "Please acknowledge the author(s)." + contact_authors:: "Please contact the author(s) to discuss acknowledgment or co-authorship." + acknow_project: "Please acknowledge the project(s)." + anav13jclim: "Anav et al., J. Clim., 26, 6801-6843, doi:10.1175/JCLI-D-12-00417.1, 2013." + antonov10usgov: "Antonov, J. I. et al., World Ocean Atlas 2009, Volume 2: Salinity. S. Levitus, Ed. NOAA Atlas NESDIS 69, U.S. Government Printing Office, Washington, D.C., 184 pp., 2010." + aquila11gmd: "Aquila et al., Geosci. Model Dev. 4, 325-355, doi:10.5194/gmd-4-325-2011, 2011." + bakker14essd: "Bakker, D. C. E. et al., Earth Syst. Sci. Data, 6, 69-90, doi:10.5194/essd-6-69-2014, 2014." + bianchi12gbc: "Bianchi, D. et al., Global Biogeochem. Cy., 26, GB2009, doi:10.1029/2011GB004209, 2012." + cionni11acp: "Cionni et al., Atmos. Chem. Phys., 11, 11267-11292, doi:10.5194/acp-11-11267-2011, 2011." + clivar09jclim: "CLIVAR Madden-Julian Oscillation Working Group, J. Climate, 22, 3006–3030, doi:10.1175/2008JCLI2731.1, 2009." + dong08grl: "Dong, S. et al., J. Geophys. Res., 113, C06013, doi:10.1029/2006JC004051, 2008." + duemenil00mpimr: "Duemenil Gates et al., Observed historical discharge data from major rivers for climate model validation. Max Planck Institute for Meteorology Report 307, Hamburg, Germany, 2000." + emmons00jgr: "Emmons et al., J. Geophys. Res., 105, D16, 20497-20538, 2000." + eyring06jgr: "Eyring et al., J. Geophys. Res., 111, D22308, doi:10.1029/2006JD007327, 2006." + eyring13jgr: "Eyring et al., J. Geophys. Res., 118, 5029-5060, doi:10.1002/jgrd.50316, 2013." + flato13ipcc: "Flato, G. et al., Evaluation of climate models, in: Climate Change 2013: the Physical Science Basis, 2013." + gen14jclim: "Gen, L. et al., J. Climate, 27, 1765-1780, doi:10.1175/JCLI-D-13-00337.1, 2014." + gleckler08jgr: "Gleckler et al., J. Geophys. Res., 113, D06104, doi:10.1029/2007JD008972, 2008." + goswami99qjrms: "Goswami, B., V. Krishnamurthy, and H. Annamalai, Q. J. R. Meteorol. Soc., 125, 611–633, doi:10.1002/qj.49712555412, 1999." + hagemann13jadvmodelearthsyst: "Hagemann et al., J. Adv. Model. Earth Syst., 5, doi:10.1029/2012MS000173, 2013." + jones15james: "Jones et al., J. Adv. Model. Earth Syst., 7, 1554-1575, doi:10.1002/2014MS000416, 2015." + kerry06jclim: "Kerry H. et al, J. Climate, 19, 3681-3703, doi:10.1175/JCLI3814.1, 2006." + kim09jclim: "Kim, D. et al., J. Climate, 22, 6413-6436, doi:10.1175/2009JCLI3063.1, 2009." + kim12grl: "Kim and Yu, Geophys. Res. Lett., 39, L11704, doi:10.1029/2012GL052006, 2012." + key04gbc: "Key, R. M. et al., Global Biogeochem. Cy., 18, GB4031, doi:10.109/2004GB002247, 2004." + lauer05acp: "Lauer et al., Atmos. Chem. Phys., 5, 3251-3276, doi:10.5194/acp-5-3251-2005, 2005." + lauer13jclim: "Lauer and Hamilton, J. Climate, 26, 3823-3845, doi:10.1175/JCLI-D-12-00451.1, 2013." + lauer17rse: "Lauer et al., Remote Sens. Environ., in press, 2017." + li14jclim: "Li and Xie, J. Climate, 27, 1765-1780, doi:https://doi.org/10.1175/JCLI-D-13-00337.1, 2014." + 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." + mueller14grl: "Mueller, B. and Seneviratne, S. I. Geophys. Res. Lett., 41, 128-134, doi:10.1002/2013GL058055, 2014." + mueller13hess: "Mueller, B. et al., Hydrol. Earth Syst. Sci., 17, 3707-3720, doi:10.5194/hess-17-3707-2013, 2013." + phillips14eos: "Phillips, A. S. et al., EOS T. Am. Geophys. Un., 95, 453-455, 2014." + righi13acp: "Righi et al., Atmos. Chem. Phys., 13, 9939-9970, doi:10.5194/acp-13-9939-2013, 2013." + righi15gmd: "Righi et al., Geosci. Model Dev., 8, 733-768 doi:10.5194/gmd-8-733-2015, 2015." + roedenbeck13os: "Roedenbeck, C. et al., Ocean Sci., 9, 193-216, doi:10.5194/os-9-193-2013, 2013." + roehrig13jclim: "Roehrig, R. et al., J. Climate, 26, 6471-6505, doi:10.1175/JCLI-D-12-00505.1, 2013." + sperber12asl: "Sperber and Kim, Atmos. Sci. Lett., 13, 3, 187-193, doi:10.1002/asl.378, 2012." + stroeve07grl: "Stroeve, J. et al., Geophys. Res. Lett., 34, L09501, doi:10.1029/2007GL029703, 2007." + taylor12: "Taylor et al., Nature, 489, 423-426, doi:10.1038/nature11377, 2012." + takahashi14marchem: "Takahashi et al., Mar. Chem., 164, 95-125, doi:10.1016/j.marchem.2014.06.004, 2014." + wang99bams: "Wang, B. and Z. Fan, Bull. Amer. Meteor. Soc., 80, 629-638, doi:10.1175/1520-0477(1999)080<0629:COSASM>2.0.CO;2, 1999." + wang11climdyn: "Wang, B. et al., Clim. Dyn., 39, 1123-1135, doi:10.1007/s00382-011-1266-z, 2011." + webster92qjrms: "Webster, P. J. and Yang, S., Q.J.R. Meteorol. Soc., 118: 877-926. doi:10.1002/qj.49711850705, 1992." + weedon14wrr: "Weedon, G. P. et al., Water Resour. Res., 50, 7505-7514, doi:10.1002/2014WR015638, 2014." + wenzel14jgr: "Wenzel et al., J. Geophys. Res. Biogeosci., 119(5), doi:2013JG002591, 2014." + williams09climdyn: "Williams and Webb, Clim. Dynam., 33, 141-157, doi:10.1007/s00382-008-0443-1, 2009." + +observation references: + access2: "ACCESS2 - Roiger et al., accepted" + aeronet: "AERONET - See http://aeronet.gsfc.nasa.gov/new_web/data_usage.html" + airs: "AIRS" + auramls: "Aura MLS" + cirrus: "CIRRUS - Baumgardner et al., Environ. Res. Lett., 3, 025010, 2008." + castnet: "CASTNET - See http://epa.gov/castnet/javaweb/index.html" + ceresebaf: "CERES-EBAF" + concert: "CONCERT - Dahlkoetter et al., Atmos. Chem. Phys., 14, 6111-6137, 2014." + cr-ave: "CR-AVE - Schwarz et al., J. Geophys. Res., 113, D03203, 2008." + dc3: "DC3 - B. Weinzierl (DLR)" + duemenil00mpi: "GRDC station observations - Duemenil et al., Max Planck Institute for Meteorology Report 307, Hamburg, Germany, 2000." + eanet: "EANET - See http://www.eanet.cc/" + emep: "EMEP - See http://www.emep.int/" + emmons00jgr: "Emmons et al., J. Geophys. Res., 105, D16, 20497-20538, 2000." + era40: "ERA40" + erainterim: "ERA-Interim" + esacci-aerosol: "ESACCI-AEROSOL - Popp, T. et al. (2015): ESA Aerosol Climate Change Initiative (ESA Aerosol_cci) data: AOD v4.21 via Centre for Environmental Data Analysis, May 2016" + esacci-landcover: "ESACCI-LANDCOVER - Defourny et al. (2015): ESA Land Cover Climate Change Initiative (ESA LC_cci) data: ESACCI-LC-L4-LCCS-Map-300m-P5Y-[2000,2005,2010]-v1.6.1 via Centre for Environmental Data Analysis" + esacci-sm: "ESACCI-SOILMOISTURE - Liu, et al. (2011), Hydrology and Earth System Sciences, 15, 425-436; Liu, et al. (2012), Remote Sensing of Environment, 123, 280-297; Wagner, et al. (2012), Remote Sensing and Spatial Information Sciences, Volume I-7" + esacci-sst: "ESACCI-SST - Merchant, et al. (2014): ESA Sea Surface Temperature Climate Change Initiative (ESA SST CCI): Analysis long term product version 1.0, NERC Earth Observation Data Centre, 24th February 2014, doi:10.5285/878bef44-d32a-40cd-a02d-49b6286f0ea4." + haloe: "HALOE" + hippo: "HIPPO - Schwarz et al., Geophys. Res. Lett., 40, 5542-5547, 2013." + improve: "IMPROVE - See http://vista.cira.colostate.edu/improve/data/improve/improve_data.htm" + inca: "INCA - Minikin et al., Geophys. Res. Lett., 30, 1503, 2003." + isccp_d1: "ISCCP D1 - Rossow and Schiffer, Bull. Amer. Meteor. Soc., 80, 2261-2287, 1999." + king03tgrs: "MODIS-CFMIP - King, M. D., et al., IEEE Trans. Geosci. Remote Sens., 41, 442-458, 2003." + ncep: "NCEP - Kalnay et al., Bull. Amer. Meteor. Soc., 77, 437-470, 1996." + misr: "MISR" + modis: "MODIS" + niwa: "NIWA" + odell08jcli: "UWisc - O'Dell et al., J. Climate, 21, 1721-1739, 2008." + lace1: "LACE - Petzold et al., J. Geophys. Res., 107, D21, 8128, 2002." + lace2: "LACE - Schroeder et al., J. Geophys. Res., 107, D21, 8126, 2002." + oct-ave: "Oct-AVE - Schwarz et al., J. Geophys. Res., 111, D16207, 2006." + pincus08jcli: "MODIS-CFMIP - Pincus et al., J. Climate, 25, 4699-4720, 2012." + saltrace1: "SALTRACE - B. Weinzierl (DLR)" + saltrace2: "SALTRACE - K. Fomba (TROPOS)" + samum1: "SAMUM - Weinzierl et al., Tellus B, 2009." + samum2: "SAMUM - K. Kandler (TU Darmstadt)" + srb: "SRB" + tc4: "TC4 - Spackman et al., Geophys. Res. Lett., 38, L09803, 2011." + ucnpacific: "UCN-Pacific - Clarke and Kapustin, J. Atmos. Sci. 59, 363, 2002." + ukmo: "UKMO" + weedon14waterresourres: "WFDEI - Weedon et al., Water Resour. Res. 50, 2014." + +projects: + climval: BMBF MiKlip Project ClimVal + cmip6dicad: BMBF CMIP6 Project Germany + cmug: ESA CMUG + crescendo: EU H2020 project CRESCENDO + dlrveu: DLR project VEU + dlrveu2: DLR project VEU2 + embrace: EU FP7 project EMBRACE + esmval: DLR project ESMVal + qa4ecv: QA4ECV + +realms: + aerosol: aerosol + atmos: atmosphere + atmosChem: atmospheric chemistry + land: land + landIce: land ice + ocean: ocean + ocnBgchem: ocean biogeochemistry + seaIce: sea ice + +themes: + aerosols: aerosols + atmDyn: atmospheric dynamics + bgchem: biogeochemistry + bgphys: biogeophysics + carbon: carbon cycle + chem: chemistry + clouds: clouds + EC: emergent constraint + ghg: greenhouse gases + monsoon: monsoons + phys: physics + seaIce: sea ice + varmodes: modes of variability + +domains: + et: extra tropics + global: global + midlat: mid-latittudes + nh: northern hemisphere + polar: polar + reg: regional + sh: southern hemisphere + trop: tropics + +plot_types: + errorbar: error bar plot + bar: bar chart + diurn: diurnal cycle + geo: geographical distribution + portrait: portrait diagram + polar: polar-stereographic plot + scatter: scatter plot + seas: seasonal cycle + size: size-distribution + vert: vertical profile + taylor: taylor diagram + times: time series + zonal: zonal mean + pro: profile #(any other kind of line chart) + other: other plot types + +statistics: + anomaly: anomaly + corr: correlation + diff: difference + eof: empirical orthogonal function (EOF) + mean: mean + spectrum: spectrum + stddev: standard deviation + var: variability + rmsd: rmsd + range: range of values + trend: temporal trend + clim: climatology + perc: percentiles + median: median + detrend: detrend + other: other statistics diff --git a/esmvaltool/config-user.yml b/esmvaltool/config-user.yml index 8c49911d46..182b184fd1 100644 --- a/esmvaltool/config-user.yml +++ b/esmvaltool/config-user.yml @@ -17,6 +17,8 @@ exit_on_warning: false output_file_type: pdf # Destination directory output_dir: ./esmvaltool_output +# 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 @@ -25,6 +27,9 @@ remove_preproc_dir: true # 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 rootpath: # Rootpath to CMIP5 data diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_radiation_rms.py b/esmvaltool/diag_scripts/autoassess/autoassess_radiation_rms.py new file mode 100644 index 0000000000..a3ba6aab7b --- /dev/null +++ b/esmvaltool/diag_scripts/autoassess/autoassess_radiation_rms.py @@ -0,0 +1,184 @@ +""" +Port to Version 2 with implementation of v2-specific changes + +Uses: ESMValTool v2, Python3.x +Valeriu Predoi, UREAD, July 2018 + +Porting replicates the functionality to minimum errors. + +Original Description from Version 1 Diagnostic: +;;########################################################################### +;; AutoAssess_radiation_rms.py +;; Author: Yoko Tsushima (Met Office, UK) +;; CMUG project +;;########################################################################### +;; Description +;; This script is the RMS error metric script of +;; AutoAssess radiation +;; +;; +;; Modification history +;; 20180712- autoassess_radiation_rms: porting to v2 +;; 20170323-_AutoAssess_radiation_rms: Test finished. +;; 20160819-_test_AutoAssess_radiation_rms: written based on calc_rms code. +;; +;; ########################################################################### +""" + +import os +import logging +import iris +import autoassess_source.rms as rms +import autoassess_source.valmod_radiation as vm +from esmvaltool.diag_scripts.shared import (group_metadata, run_diagnostic, + select_metadata) + +logger = logging.getLogger(os.path.basename(__file__)) + + +def apply_supermeans(ctrl, exper, obs_list): + """Apply supermeans on data components""" + ctrl_file = ctrl['filename'] + exper_file = exper['filename'] + logger.info("Loading %s", ctrl_file) + logger.info("Loading %s", exper_file) + ctrl_cube = iris.load_cube(ctrl_file) + exper_cube = iris.load_cube(exper_file) + ctrl_cube = ctrl_cube.collapsed('time', iris.analysis.MEAN) + logger.debug("Time-averaged control %s", ctrl_cube) + exper_cube = exper_cube.collapsed('time', iris.analysis.MEAN) + logger.debug("Time-averaged experiment %s", exper_cube) + if obs_list: + obs_cube_list = [] + for obs in obs_list: + obs_file = obs['filename'] + logger.info("Loading %s", obs_file) + obs_cube = iris.load_cube(obs_file) + obs_cube = obs_cube.collapsed('time', iris.analysis.MEAN) + logger.debug("Time-averaged obs %s", obs_cube) + obs_cube_list.append(obs_cube) + else: + obs_cube_list = None + + return ctrl_cube, exper_cube, obs_cube_list + + +def apply_rms(data_1, data_2, cfg, component_dict, var_name): + """Compute RMS for any data1-2 combination""" + data_names = [model['dataset'] for model in component_dict.values()] + plot_title = var_name + ': ' + data_names[0] + ' vs ' + data_names[1] + rms_list = rms.start(data_names[0], data_names[1]) + analysis_type = cfg['analysis_type'] + landsea_mask_file = os.path.join( + os.path.dirname(__file__), 'autoassess_source', cfg['landsea_mask']) + landsea_mask_cube = iris.load_cube(landsea_mask_file) + data1_vs_data2 = vm.perform_equation(data_1, data_2, analysis_type) + + # call to rms.calc_all() to compute rms; rms.end() to write results + rms.calc_all(rms_list, data1_vs_data2, landsea_mask_cube, plot_title) + rms.end(rms_list, cfg['work_dir']) + + +def do_preamble(cfg): + """Execute some preamble functionality""" + # prepare output dirs + if not os.path.exists(cfg['plot_dir']): + os.makedirs(cfg['plot_dir']) + if not os.path.exists(cfg['work_dir']): + os.makedirs(cfg['work_dir']) + + # get data + input_data = cfg['input_data'].values() + grouped_input_data = group_metadata( + input_data, 'short_name', sort='dataset') + + return input_data, grouped_input_data + + +def get_all_datasets(short_name, input_data, cfg): + """Get control, exper and obs datasets""" + dataset_selection = select_metadata( + input_data, short_name=short_name, project='CMIP5') + + # get the obs datasets + if 'observational_datasets' in cfg.keys(): + obs_selection = [ + select_metadata(input_data, short_name=short_name, + dataset=obs_dataset)[0] + for obs_dataset in cfg['observational_datasets'] + ] + else: + obs_selection = [] + + # determine CONTROL and EXPERIMENT datasets + for model in dataset_selection: + if model['dataset'] == cfg['control_model']: + logger.info("Control dataset %s", model['dataset']) + control = model + elif model['dataset'] == cfg['exper_model']: + logger.info("Experiment dataset %s", model['dataset']) + experiment = model + + if obs_selection: + logger.info("Observations dataset(s) %s", + [obs['dataset'] for obs in obs_selection]) + + return control, experiment, obs_selection + + +def main(cfg): + """Execute the radiation rms diag""" + logger.setLevel(cfg['log_level'].upper()) + input_data, grouped_input_data = do_preamble(cfg) + + # select variables and their corresponding + # obs files + for short_name in grouped_input_data: + logger.info("Processing variable %s", short_name) + + # control, experiment and obs's + ctrl, exper, obslist = get_all_datasets(short_name, input_data, cfg) + + # apply the supermeans + ctrl_sm, exper_sm, obs_sm_list = apply_supermeans(ctrl, exper, obslist) + + # assemble a dict that contains various params depending + # on the data combinations for RMS computations + # control-experiment + data_component_dict = {'ct-ex': {'ctrl': ctrl, 'exper': exper}} + logger.info("Computing CONTROL-EXPERIMENT RMS...") + apply_rms(ctrl_sm, exper_sm, cfg, data_component_dict['ct-ex'], + short_name) + if obs_sm_list: + for obs, obsfile in zip(obs_sm_list, obslist): + data_component_dict = { + 'ct-obs': { + 'ctrl': ctrl, + 'obs': obsfile + }, + 'ex-obs': { + 'exper': exper, + 'obs': obsfile + } + } + + # ctrl-obs + logger.info("Computing CONTROL-OBS RMS...") + apply_rms(ctrl_sm, obs, cfg, data_component_dict['ct-obs'], + short_name) + # exper-obs + logger.info("Computing EXPERIMENT-OBS RMS...") + apply_rms(exper_sm, obs, cfg, data_component_dict['ex-obs'], + short_name) + else: + # only ctrl-exper + data_component_dict = {'ct-ex': {'ctrl': ctrl, 'exper': exper}} + logger.info("Computing CONTROL-EXPERIMENT RMS...") + apply_rms(ctrl_sm, exper_sm, cfg, data_component_dict['ct-ex'], + short_name) + + +if __name__ == '__main__': + + with run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_source/__init__.py b/esmvaltool/diag_scripts/autoassess/autoassess_source/__init__.py new file mode 100644 index 0000000000..40d033a799 --- /dev/null +++ b/esmvaltool/diag_scripts/autoassess/autoassess_source/__init__.py @@ -0,0 +1 @@ +"""Initialize for autoassess_source""" diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_source/area_utils.py b/esmvaltool/diag_scripts/autoassess/autoassess_source/area_utils.py index 38a724f154..25e4d7bfa5 100644 --- a/esmvaltool/diag_scripts/autoassess/autoassess_source/area_utils.py +++ b/esmvaltool/diag_scripts/autoassess/autoassess_source/area_utils.py @@ -8,7 +8,7 @@ import iris import iris.analysis.cartography as iac -import iris_updates as newiris +from . import iris_updates as newiris def area_average(cube, diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_source/landsea.nc b/esmvaltool/diag_scripts/autoassess/autoassess_source/landsea.nc new file mode 100644 index 0000000000..e24af69903 Binary files /dev/null and b/esmvaltool/diag_scripts/autoassess/autoassess_source/landsea.nc differ diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_source/rms.py b/esmvaltool/diag_scripts/autoassess/autoassess_source/rms.py new file mode 100644 index 0000000000..df09867ae8 --- /dev/null +++ b/esmvaltool/diag_scripts/autoassess/autoassess_source/rms.py @@ -0,0 +1,314 @@ +""" +Port for ESMValTool v2 from v1 + +Uses: ESMValTool v2, Python 3.x +Valeriu Predoi, UREAD, July 2018 + +Functionality: computes root mean squares for a bunch of geographical +regions; + +Original docstring: +This file contains an rms class which contains all the information needed +to make a rms table of a particular region. +""" + +import os +import math +import logging +import numpy.ma as ma +import iris +from .valmod_radiation import area_avg + +logger = logging.getLogger(os.path.basename(__file__)) + + +class RMSLISTCLASS(list): + """ + Construct the regions class + + This is the class for a list of RMSCLASS (i.e. for lots of regions) + """ + + def __init__(self, *args): + """Init""" + if not args: + super(RMSLISTCLASS, self).__init__() + else: + super(RMSLISTCLASS, self).__init__(args[0]) + + def __repr__(self): + """Repr""" + rms_out = "[" + for rms_item in self: + rms_out += "rms.RMSCLASS for " + rms_item.region + ", \n" + rms_out = rms_out[0:-3] + rms_out += "]" + + return rms_out + + def __call__(self, region=False): + """Call""" + rms_found = False + region_list = [] + for rms_item in self: + region_list.append(rms_item.region) + if region: + if rms_item.region == region: + rms_returned = rms_item + rms_found = True + if not region: + logger.warning( + "Please supply a region using the region='xxx' input. " + + "Available regions are:") + elif not rms_found: + logger.warning("ERROR: Requested region not found.") + if not rms_found: + logger.error(region_list) + raise Exception + return rms_returned + + +# This is the class for one set of rms values (i.e. for one region) +class RMSCLASS: + """Class per region""" + + def __init__(self, region, exper='experiment', control='control'): + """ + Create instances of this class but also start making + + html files that will contain all the rms data. (old) + + region = the region name + exper = experiment jobid + control = control jobid + """ + # Store the region name, experiment and control + self.region = region + self.exper = exper + self.control = control + + # This could be a dictionary in the future; not now tho + + # Store the region boundaries + if region == 'north': + self.region_bounds = [-180, 30, 180, 90] + if region == 'south': + self.region_bounds = [-180, -90, 180, -30] + if region == 'tropical_land': + self.region_bounds = [-180, -30, 180, 30] + if region == 'tropical_ocean': + self.region_bounds = [-180, -30, 180, 30] + if region == 'east_asia': + self.region_bounds = [100, 20, 145, 50] + if region == 'natl_europe': + self.region_bounds = [-45, 25, 60, 75] + if region == 'australia_land': + self.region_bounds = [100, -45, 155, -10] + + # Store the end of the mask key + if region == 'tropical_land': + self.mask_end = 'land_gt_50pc' + if region == 'tropical_ocean': + self.mask_end = 'ocean_gt_50pc' + if region == 'australia_land': + self.mask_end = 'land_gt_50pc' + if region == 'sahara_n_africa': + self.mask_end = 'SaharaNC' + if region == 'tropical_n_africa': + self.mask_end = 'TNAfrica' + if region == 'east_africa': + self.mask_end = 'EAfrica' + if region == 'central_africa': + self.mask_end = 'CAfrica' + if region == 'southern_africa': + self.mask_end = 'SAfrica' + if region == 'africa_land': + self.mask_end = 'Africa' + + # Make a blank dictionary to store the values + self.data_dict = {} + + # Allow iterations over this + def __iter__(self): + """Iter""" + return self + + # This defines how this class is shown on the screen if you print it + def __repr__(self): + """Repr""" + rms_out = "rms.RMSCLASS for {0}".format(self.region) + return rms_out + + def calc(self, toplot_cube, mask_cube): + """Calculate the rms value of a cube for this region. + + toplot_cube = (cube) cube that is to be plotted + mask_cube = (cube) the mask to be applied (land/sea) + """ + # Make a copy of the input cube + working_cube = toplot_cube.copy() + + # What type of plot is this + plot_type = 'lat_lon' + if not toplot_cube.coords(axis='x'): + plot_type = 'zonal_mean' + else: + if len(toplot_cube.coords(axis='x')[0].points) == 1: + plot_type = 'zonal_mean' + if not toplot_cube.coords(axis='y'): + plot_type = 'meridional_mean' + else: + if len(toplot_cube.coords(axis='y')[0].points) == 1: + plot_type = 'meridional_mean' + + # Apply the mask but only for lat_lon plots + if hasattr(self, 'mask_end'): + if plot_type == 'lat_lon': + # Apply the mask + working_cube.data = \ + ma.masked_array(working_cube.data, + mask=(mask_cube.data > 0.5)) + + else: + # If there is a mask but we are using zonal + # mean or meridional mean, return missing + return 1e+20 + + # Extract a region + if hasattr(self, 'region_bounds'): + + # Extract just the latitudes you want + lonc = iris.Constraint() + latc = iris.Constraint() + if plot_type == 'lat_lon' or plot_type == 'meridional_mean': + lonc = iris.Constraint( + longitude=lambda lon: + self.region_bounds[0] <= lon <= self.region_bounds[2] + ) + if plot_type == 'lat_lon' or plot_type == 'zonal_mean': + latc = iris.Constraint( + latitude=lambda lat: + self.region_bounds[1] <= lat <= self.region_bounds[3] + ) + working_cube = working_cube.extract(lonc & latc) + + # Check to see if we have any data left. + # If not then apply a missing data number. + amount_of_data = len(working_cube.data) + if hasattr(working_cube.data, 'compressed'): + amount_of_data = len(working_cube.data.compressed()) + if amount_of_data == 0: + rms_float = 1e+20 + else: + logger.info('Calculating RMS for %s', self.region) + + # Square the values + squared_cube = working_cube**2 + + # Mean the values + area_average = area_avg( + squared_cube, coord1='latitude', coord2='longitude') + + # Square root the answer + rms_float = math.sqrt(area_average.data) + + return rms_float + + def calc_wrapper(self, toplot_cube, mask_cube, page_title): + """ + Get the RMS value and adds it to its own data array. + + toplot_cube = (cube) cube that is to be plotted + mask_cube = (cube) mask land/sea + page_title = (str) the page title for this plot + """ + rms_float = self.calc(toplot_cube, mask_cube) + self.data_dict[page_title] = [] + if rms_float: + self.data_dict[page_title].append(rms_float) + return rms_float + + def tofile(self, csv_dir): + """Output all the RMS statistics to csv files""" + csv_file = 'summary_' + self.region + '_RMS_' + self.exper + '.csv' + csv_path = os.path.join(csv_dir, csv_file) + with open(csv_path, 'a') as out_file: + for page_title, rms_list in self.data_dict.items(): + out_file.write('{0}: '.format(page_title)) + for rms_val in rms_list: + out_file.write('{0}'.format(str(rms_val))) + out_file.write('\n') + + +def start(exper='experiment', control='control'): + """ + Make some instances of the rms class + + exper = experiment jobid (optional) + control = control jobid (optional) + """ + # Loop over all regions. Regions are: + # 0 = globe + # 1 = north of 30N + # 2 = south of 30S + # 3 = tropical land + # 4 = tropical ocean + # 5 = east asia + # 6 = north atlantic and europe + # 7 = australian land + # 8 = sahara and north african coast + # 9 = tropical northern africa + # 10 = east africa + # 11 = central africa + # 12 = southern africa + # 13 = african land + + # Make a list of the regions + region_list = [ + 'global', 'north', 'south', 'tropical_land', 'tropical_ocean', + 'east_asia', 'natl_europe', 'australia_land', 'sahara_n_africa', + 'tropical_n_africa', 'east_africa', 'central_africa', + 'southern_africa', 'africa_land' + ] + + # Make a blank list that will hold the rms classes + rms_list = RMSLISTCLASS() + + # Make the rms classes. This will also start making the summary web pages. + for region in region_list: + rms_list.append(RMSCLASS(region, exper=exper, control=control)) + + return rms_list + + +def calc_all(rms_list, toplot_cube, mask_cube, page_title): + """ + Loop through all the regions + + Calculate rms values and store them in the class. + rms_list = list of rms classes that stores all the information to do + with the rms regions and the resulting answers. + toplot_cube = (cube) cube that is to be plotted + page_title = (str) the page title for this plot + """ + # Run through the loop, calculating rms values for each region + rms_float_list = [] + n_rms = len(rms_list) + for i in range(n_rms): + rms_float = rms_list[i].calc_wrapper(toplot_cube, mask_cube, + page_title) + rms_float_list.append(rms_float) + + # Return the global rms value + return rms_float_list[0] + + +def end(rms_list, csv_dir): + """ + Finish using the rms class + + rms_list = list of rms classes that stores all the information to do with + the rms regions and the resulting answers. + """ + for rms_instance in rms_list: + rms_instance.tofile(csv_dir) diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_source/valmod_radiation.py b/esmvaltool/diag_scripts/autoassess/autoassess_source/valmod_radiation.py new file mode 100644 index 0000000000..b635a873e6 --- /dev/null +++ b/esmvaltool/diag_scripts/autoassess/autoassess_source/valmod_radiation.py @@ -0,0 +1,81 @@ +#! /usr/local/sci/bin/python +""" +Port for ESMValTool v2 from v1 + +Uses: ESMValTool v2, Python 3.x +Valeriu Predoi, UREAD, July 2018 + +The script is well different than the v1 vresion but executes the +same set of functionalities; script name kept the same as in v1 +for historical purposes. +""" + +import iris +import iris.analysis.cartography + + +def get_cube_ready(cube): + """Remve unwanted coords and check bounds""" + to_remove_list = [ + 'forecast_reference_time', 'forecast_period', 'source', 'season', + 'time' + ] + for coord in cube.coords(): + if coord.name() in to_remove_list: + cube.remove_coord(coord) + if not cube.coord(axis='x').has_bounds(): + cube.coord(axis='x').guess_bounds() + if not cube.coord(axis='y').has_bounds(): + cube.coord(axis='y').guess_bounds() + + return cube + + +def area_avg(cube, coord1=None, coord2=None): + """ + Get area average + + Perform an area average of a cube using weights to account for + changes in latitude. + """ + for coord in (coord1, coord2): + if not cube.coord(coord).has_bounds(): + cube.coord(coord).guess_bounds() + grid_areas = iris.analysis.cartography.area_weights(cube) + result = cube.collapsed( + [coord1, coord2], iris.analysis.MEAN, weights=grid_areas) + + return result + + +def perform_equation(dataset_1, dataset_2, analysis_type): + """ + Perform a simple cube operation + + analysis_type = type of analysis (zonal_mean, vertical_mean,...) + This can be easily adapted for more than one type of operation + by passing an argument e.g. 'sum_of_squares' etc. + """ + # Make sure all the fields have correct units + dataset_1_ready = get_cube_ready(dataset_1) + dataset_2_ready = get_cube_ready(dataset_2) + + if analysis_type == 'zonal_mean': + dataset_1_mean = dataset_1_ready.collapsed('longitude', + iris.analysis.MEAN) + dataset_2_mean = dataset_2_ready.collapsed('longitude', + iris.analysis.MEAN) + + elif analysis_type == 'vertical_mean': + dataset_1_mean = dataset_1_ready.collapsed('pressure', + iris.analysis.MEAN) + dataset_2_mean = dataset_2_ready.collapsed('pressure', + iris.analysis.MEAN) + elif analysis_type == 'lat_lon': + dataset_1_mean = dataset_1_ready + dataset_2_mean = dataset_2_ready + + # Perform simple difference + toplot_cube = dataset_1_mean - dataset_2_mean + + return toplot_cube diff --git a/esmvaltool/diag_scripts/autoassess/autoassess_stratosphere.py b/esmvaltool/diag_scripts/autoassess/autoassess_stratosphere.py index eea74f2861..8c47cedf87 100644 --- a/esmvaltool/diag_scripts/autoassess/autoassess_stratosphere.py +++ b/esmvaltool/diag_scripts/autoassess/autoassess_stratosphere.py @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) -# Diagnostic that takes two models (control_model and exp_model +# Diagnostic that takes two datasets (control_model and exp_model # and observational data (ERA-Interim and MERRA) diff --git a/esmvaltool/diag_scripts/autoassess/plot_autoassess_stratosphere.py b/esmvaltool/diag_scripts/autoassess/plot_autoassess_stratosphere.py index 76202bf6e9..9cafc82c6f 100644 --- a/esmvaltool/diag_scripts/autoassess/plot_autoassess_stratosphere.py +++ b/esmvaltool/diag_scripts/autoassess/plot_autoassess_stratosphere.py @@ -9,7 +9,7 @@ logger = logging.getLogger(__name__) -# Diagnostic that takes two models (control_model and exp_model +# Diagnostic that takes two datasets (control_model and exp_model # and observational data (ERA-Interim and MERRA) diff --git a/esmvaltool/diag_scripts/climate_metrics/ecs.py b/esmvaltool/diag_scripts/climate_metrics/ecs.py new file mode 100644 index 0000000000..a214bd56e0 --- /dev/null +++ b/esmvaltool/diag_scripts/climate_metrics/ecs.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +"""Calculate ECS following Andrews et al. (2012). + +############################################################################### +climate_metrics/ecs.py +Author: Manuel Schlund (DLR, Germany) +CRESCENDO project +############################################################################### + +Description +----------- + Calculate the equilibrium climate sensitivity (ECS) using the regression + method proposed by Andrews et al. (2012). + +Configuration options +--------------------- + plot_regression : Switch to plot the linear regression. + output_name : Name of the output files. + +############################################################################### + +""" + + +import logging +import os +from collections import OrderedDict +from datetime import datetime + +import iris +import numpy as np +from scipy import stats + +import esmvaltool.diag_scripts.shared as e +import esmvaltool.diag_scripts.shared.names as n + +logger = logging.getLogger(os.path.basename(__file__)) + + +def plot_ecs_regression(cfg, dataset_name, data, variables, regression_stats): + """Plot linear regression used to calculate ECS.""" + if not (cfg[n.WRITE_PLOTS] and cfg.get('plot_ecs_regression')): + return + ecs = -regression_stats.intercept / (2 * regression_stats.slope) + filepath = os.path.join(cfg[n.PLOT_DIR], + dataset_name + '.' + cfg[n.OUTPUT_FILE_TYPE]) + + # Regression line + x_reg = np.linspace(-1.0, 8.0, 2) + y_reg = regression_stats.slope * x_reg + regression_stats.intercept + + # Plot data + text = 'r = {:.2f}, '.format(regression_stats.rvalue) + \ + r'$\alpha$ = {:.2f}, '.format(-regression_stats.slope) + \ + 'F = {:.2f}, '.format(regression_stats.intercept) + \ + 'ECS = {:.2f}'.format(ecs) + e.plot.scatterplot( + [data[0], x_reg], + [data[1], y_reg], + filepath, + plot_kwargs=[{'linestyle': 'none', + 'markeredgecolor': 'b', + 'markerfacecolor': 'none', + 'marker': 's'}, + {'color': 'k', + 'linestyle': '-'}], + save_kwargs={ + 'bbox_inches': 'tight', + 'orientation': 'landscape'}, + axes_functions={ + 'set_title': dataset_name, + 'set_xlabel': 'tas / ' + variables.units('tas'), + 'set_ylabel': 'rtmt / ' + variables.units('rtmt'), + 'set_xlim': [0.0, 7.0], + 'set_ylim': [-2.0, 10.0], + 'text': {'args': [0.05, 0.9, text], + 'kwargs': {'transform': 'transAxes'}}}) + + # Write netcdf file for every plot + if not cfg[n.WRITE_NETCDF]: + return + tas_coord = iris.coords.AuxCoord(data[0], **variables.iris_dict('tas')) + attr = {'model': dataset_name, + 'regression_r_value': regression_stats.rvalue, + 'regression_slope': regression_stats.slope, + 'regression_interception': regression_stats.intercept, + 'climate_sensitivity': -regression_stats.slope, + 'ECS': ecs, + 'created_by': 'ESMValTool version {}'.format(cfg[n.VERSION]) + + ', diagnostic {}'.format(cfg[n.SCRIPT]), + 'creation_date': datetime.utcnow().isoformat(' ') + 'UTC'} + cube = iris.cube.Cube(data[1], + attributes=attr, + aux_coords_and_dims=[(tas_coord, 0)], + **variables.iris_dict('rtmt')) + filepath = os.path.join(cfg[n.WORK_DIR], + 'ecs_regression_' + dataset_name + '.nc') + iris.save(cube, filepath) + logger.info("Writing %s", filepath) + return + + +############################################################################### +# Setup diagnostic +############################################################################### + +# Variables +ECS = e.Variable('ecs', + 'equilibrium_climate_sensitivity', + 'Change in global mean surface temperature at equilibrium ' + 'caused by a doubling of the atmospheric CO2 concentration', + 'K') + +# Experiments +PICONTROL = 'piControl' +ABRUPT4XCO2 = 'abrupt4xCO2' + + +def main(cfg): + """Run the diagnostic. + + Parameters + ---------- + cfg : dict + Configuration dictionary of the recipe. + + """ + ########################################################################### + # Read recipe data + ########################################################################### + + # Dataset data containers + data = e.Datasets(cfg) + logging.debug("Found datasets in recipe:\n%s", data) + + # Variables + var = e.Variables(cfg) + logging.debug("Found variables in recipe:\n%s", var) + var.add_vars(ecs=ECS) + + # Check for tas and rtmt + if not var.vars_available('tas', 'rtmt'): + raise ValueError("This diagnostic needs 'tas' and 'rtmt' variables") + + ########################################################################### + # Read data + ########################################################################### + + # Create iris cube for each dataset and save annual means + for dataset_path in data: + cube = iris.load(dataset_path, var.standard_names())[0] + cube = cube.aggregated_by(n.YEAR, iris.analysis.MEAN) + data.set_data(cube.data, dataset_path) + + ########################################################################### + # Process data + ########################################################################### + data_ecs = OrderedDict() + + for dataset_path in \ + data.get_path_list(short_name='tas', exp=PICONTROL): + + # Substract piControl experiment from abrupt4xCO2 experiment + dataset = data.get_info(n.DATASET, dataset_path) + data_rtmt_pic = data.get_data(short_name='rtmt', exp=PICONTROL, + dataset=dataset) + data_tas = data.get_data(short_name='tas', exp=ABRUPT4XCO2, + dataset=dataset) - data.get_data(dataset_path) + data_rtmt = data.get_data(short_name='rtmt', exp=ABRUPT4XCO2, + dataset=dataset) - data_rtmt_pic + + # Perform linear regression + reg = stats.linregress(data_tas, data_rtmt) + + # Plot ECS regression if desired + plot_ecs_regression(cfg, dataset, [data_tas, data_rtmt], var, reg) + + # Save data + data_ecs[dataset] = -reg.intercept / (2 * reg.slope) + + ########################################################################### + # Write data + ########################################################################### + if cfg[n.WRITE_NETCDF]: + dataset_coord = iris.coords.AuxCoord(list(data_ecs), + long_name='datasets') + attr = {'created_by': 'ESMValTool version {}'.format(cfg[n.VERSION]) + + ', diagnostic {}'.format(cfg[n.SCRIPT]), + 'creation_date': datetime.utcnow().isoformat(' ') + 'UTC'} + cube = iris.cube.Cube(list(data_ecs.values()), + long_name=var.long_name('ecs'), + var_name='ecs', + units=var.units('ecs'), + aux_coords_and_dims=[(dataset_coord, 0)], + attributes=attr) + + # Save file + filepath = os.path.join(cfg[n.WORK_DIR], + cfg.get('output_name', 'ecs') + '.nc') + iris.save(cube, filepath) + logger.info("Writing %s", filepath) + + +if __name__ == '__main__': + with e.run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/examples/diagnostic.py b/esmvaltool/diag_scripts/examples/diagnostic.py index 06e489d539..a6247d475c 100644 --- a/esmvaltool/diag_scripts/examples/diagnostic.py +++ b/esmvaltool/diag_scripts/examples/diagnostic.py @@ -1,43 +1,65 @@ """Python example diagnostic.""" import logging import os +from pprint import pformat import iris -from esmvaltool.diag_scripts.shared import run_diagnostic +from esmvaltool.diag_scripts.shared import (group_metadata, run_diagnostic, + select_metadata, sorted_metadata) from esmvaltool.diag_scripts.shared.plot import quickplot logger = logging.getLogger(os.path.basename(__file__)) def main(cfg): - """Compute the time average for each input model.""" - for filename, attributes in cfg['input_data'].items(): - logger.info("Processing variable %s from model %s", - attributes['standard_name'], attributes['model']) - - logger.debug("Loading %s", filename) - cube = iris.load_cube(filename) - - logger.debug("Running example computation") - cube = cube.collapsed('time', iris.analysis.MEAN) - - name = os.path.splitext(os.path.basename(filename))[0] + '_mean' - if cfg['write_netcdf']: - path = os.path.join( - cfg['work_dir'], - name + '.nc', - ) - logger.debug("Saving analysis results to %s", path) - iris.save(cube, target=path) - - if cfg['write_plots'] and cfg.get('quickplot'): - path = os.path.join( - cfg['plot_dir'], - name + '.' + cfg['output_file_type'], - ) - logger.debug("Plotting analysis results to %s", path) - quickplot(cube, filename=path, **cfg['quickplot']) + """Compute the time average for each input dataset.""" + # Get a description of the preprocessed data that we will use as input. + input_data = cfg['input_data'].values() + + # Demonstrate use of metadata access convenience functions. + selection = select_metadata(input_data, short_name='pr', project='CMIP5') + logger.info("Example of how to select only CMIP5 precipitation data:\n%s", + pformat(selection)) + + selection = sorted_metadata(selection, sort='dataset') + logger.info("Example of how to sort this selection by dataset:\n%s", + pformat(selection)) + + grouped_input_data = group_metadata( + input_data, 'standard_name', sort='dataset') + logger.info("Example of how to group and sort input data by standard_name:" + "\n%s", pformat(grouped_input_data)) + + # Example of how to loop over variables/datasets in alphabetical order + for standard_name in grouped_input_data: + logger.info("Processing variable %s", standard_name) + for attributes in grouped_input_data[standard_name]: + logger.info("Processing dataset %s", attributes['dataset']) + + filename = attributes['filename'] + logger.debug("Loading %s", filename) + cube = iris.load_cube(filename) + + logger.debug("Running example computation") + cube = cube.collapsed('time', iris.analysis.MEAN) + + name = os.path.splitext(os.path.basename(filename))[0] + '_mean' + if cfg['write_netcdf']: + path = os.path.join( + cfg['work_dir'], + name + '.nc', + ) + logger.debug("Saving analysis results to %s", path) + iris.save(cube, target=path) + + if cfg['write_plots'] and cfg.get('quickplot'): + path = os.path.join( + cfg['plot_dir'], + name + '.' + cfg['output_file_type'], + ) + logger.debug("Plotting analysis results to %s", path) + quickplot(cube, filename=path, **cfg['quickplot']) if __name__ == '__main__': diff --git a/esmvaltool/diag_scripts/examples/diagnostic_object_oriented.py b/esmvaltool/diag_scripts/examples/diagnostic_object_oriented.py new file mode 100644 index 0000000000..8903e932c8 --- /dev/null +++ b/esmvaltool/diag_scripts/examples/diagnostic_object_oriented.py @@ -0,0 +1,47 @@ +"""Python example diagnostic using general object-based functions.""" +import logging +import os + +import iris + +import esmvaltool.diag_scripts.shared as e +import esmvaltool.diag_scripts.shared.names as n + +logger = logging.getLogger(os.path.basename(__file__)) + + +def main(cfg): + """Compute the time average for each input dataset.""" + datasets = e.Datasets(cfg) + variables = e.Variables(cfg) + logger.debug("Found datasets: %s", datasets) + logger.debug("Found variables: %s", variables) + + for path in datasets: + logger.info("Processing variable %s from dataset %s", + datasets.get_info(n.STANDARD_NAME, path), + datasets.get_info(n.DATASET, path)) + + logger.debug("Loading %s", path) + cube = iris.load_cube(path) + + logger.debug("Running example computation") + cube = cube.collapsed(n.TIME, iris.analysis.MEAN) + + name = os.path.splitext(os.path.basename(path))[0] + '_mean' + if cfg[n.WRITE_NETCDF]: + filepath = os.path.join(cfg[n.WORK_DIR], name + '.nc') + logger.debug("Saving analysis results to %s", filepath) + iris.save(cube, target=filepath) + + if cfg[n.WRITE_PLOTS] and cfg.get('quickplot'): + filepath = os.path.join(cfg[n.PLOT_DIR], + name + '.' + cfg[n.OUTPUT_FILE_TYPE]) + logger.debug("Plotting analysis results to %s", filepath) + e.plot.quickplot(cube, filename=filepath, **cfg['quickplot']) + + +if __name__ == '__main__': + + with e.run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/examples/diagnostic_pr.ncl b/esmvaltool/diag_scripts/examples/diagnostic_pr.ncl index c50781007f..8fddaf98b4 100644 --- a/esmvaltool/diag_scripts/examples/diagnostic_pr.ncl +++ b/esmvaltool/diag_scripts/examples/diagnostic_pr.ncl @@ -6,7 +6,7 @@ ; ############################################################################# ; ; Description -; This script is a driver for averaging the input from the first model +; This script is a driver for averaging the input from the first dataset ; over time and creating a global contour plot. ; Output to NetCDF files is optional (controlled via diag_script_info) ; Time averaging and plotting is done in separate routines. @@ -53,7 +53,7 @@ load "./diag_scripts/shared/plot/contour_maps.ncl" begin - ; Fetch general parameters, set in namelist_MyDiag.yml, passed via + ; Fetch general parameters, set in recipe_example_ncl.yml, passed via ; environment variables by python code enter_msg(diag_script, "") @@ -63,9 +63,9 @@ begin log_info(diag_script + " (var: " + variables(0) + ")") log_info("++++++++++++++++++++++++++++++++++++++++++") - ; 'models', 'variables' and 'field_types' are fetched from the + ; 'datasets', 'variables' and 'field_types' are fetched from the ; above 'ncl.interface' file - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -83,8 +83,8 @@ end begin ; Get data and average time - imod = 0 ; get data from first model - log_debug("processing " + model_info@model(imod)) + imod = 0 ; get data from first dataset + log_debug("processing " + dataset_info@dataset(imod)) ; See ./interface_scripts/data_handling.ncl A0 = read_data(imod, var0, field_type0) diff --git a/esmvaltool/diag_scripts/examples/diagnostic_ta.ncl b/esmvaltool/diag_scripts/examples/diagnostic_ta.ncl index 29d232afb9..b48c6f9fd7 100644 --- a/esmvaltool/diag_scripts/examples/diagnostic_ta.ncl +++ b/esmvaltool/diag_scripts/examples/diagnostic_ta.ncl @@ -6,7 +6,7 @@ ; ############################################################################# ; ; Description -; This script is a driver for averaging the input from the first model +; This script is a driver for averaging the input from the first dataset ; over time and creating a global contour plot. ; Output to NetCDF files is optional (controlled via diag_script_info) ; Time averaging and plotting is done in separate routines. @@ -54,7 +54,7 @@ load "./diag_scripts/shared/plot/contour_maps.ncl" begin - ; Fetch general parameters, set in namelist_MyDiag.yml, passed via + ; Fetch general parameters, set in recipe_example_ncl.yml, passed via ; environment variables by python code enter_msg(diag_script, "") @@ -64,9 +64,9 @@ begin log_info(diag_script + " (var: " + variables(0) + ")") log_info("++++++++++++++++++++++++++++++++++++++++++") - ; 'models', 'variables' and 'field_types' are fetched from the + ; 'datasets', 'variables' and 'field_types' are fetched from the ; above 'ncl.interface' file - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -84,12 +84,15 @@ end begin ; Get data and average time - imod = 0 ; get data from first model - log_debug("processing " + model_info@model(imod)) + imod = 0 ; get data from first dataset + log_debug("processing " + dataset_info@dataset(imod)) ; See ./interface_scripts/data_handling.ncl A0 = read_data(imod, var0, field_type0) + ; Get fx variable (land/sea mask, not used, just an example) + AM = read_fx_data(imod, "sftlf") + ; Check dimensions dims = getvardims(A0) if (dimsizes(dims) .lt. 2) then diff --git a/esmvaltool/diag_scripts/ipcc_ar5/ch09_fig09_42a.py b/esmvaltool/diag_scripts/ipcc_ar5/ch09_fig09_42a.py new file mode 100644 index 0000000000..3240dddec2 --- /dev/null +++ b/esmvaltool/diag_scripts/ipcc_ar5/ch09_fig09_42a.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +"""Plot figure 9.42a of IPCC AR5 chapter 9. + +############################################################################### +ipcc_ar5/ch09_fig09-42a.py +Author: Manuel Schlund (DLR, Germany) +CRESCENDO project +############################################################################### + +Description +----------- + Calculate and plot the equilibrium climate sensitivity (ECS) vs. the global + mean surface temperature (GMSAT) for several CMIP5 models (see IPCC AR5 WG1 + ch. 9, fig. 9.42a). + +Configuration options +--------------------- + ecs_filename : Name of the netcdf in which the ECS data is saved. + output_name : Name of the output files. + save : Keyword arguments for the fig.saveplot() function. + axes_functions : Plot appearance functions. + +############################################################################### + +""" + + +import logging +import os +from datetime import datetime + +import cf_units +import iris + +import esmvaltool.diag_scripts.shared as e +import esmvaltool.diag_scripts.shared.names as n + +logger = logging.getLogger(os.path.basename(__file__)) + + +def plot_data(cfg, datasets): + """Plot data.""" + if not cfg[n.WRITE_PLOTS]: + return + filepath = os.path.join(cfg[n.PLOT_DIR], + cfg.get('output_name', 'fig09-42a') + '.' + + cfg[n.OUTPUT_FILE_TYPE]) + x_data = [] + y_data = [] + dataset_names = [] + plot_kwargs = [] + names = datasets.get_info_list(n.DATASET, short_name='ecs') + ecs_data = datasets.get_data_list(short_name='ecs') + + # Historical + x_data.extend(ecs_data) + y_data.extend(datasets.get_data_list(short_name='tas', exp=HISTORICAL)) + dataset_names.extend(names) + for name in names: + plot_kwargs.append({'label': name, 'linestyle': 'none', + 'markersize': 10}) + + # piControl + x_data.extend(ecs_data) + y_data.extend(datasets.get_data_list(short_name='tas', exp=PICONTROL)) + dataset_names.extend(names) + for name in names: + plot_kwargs.append({'label': '_' + name, 'linestyle': 'none', + 'markersize': 6}) + + # Plot data + e.plot.multi_dataset_scatterplot( + x_data, + y_data, + dataset_names, + filepath, + plot_kwargs=plot_kwargs, + save_kwargs=cfg.get('save', {}), + axes_functions=cfg.get('axes_functions', {})) + return + + +def write_data(cfg, datasets, variables): + """Write netcdf file.""" + if cfg[n.WRITE_PLOTS]: + data_ecs = datasets.get_data_list(short_name='ecs') + data_tas_hist = datasets.get_data_list(short_name='tas', + exp=HISTORICAL) + data_tas_picontrol = datasets.get_data_list(short_name='tas', + exp=PICONTROL) + models = datasets.get_info_list(n.DATASET, short_name='ecs') + dataset_coord = iris.coords.AuxCoord(models, long_name='models') + tas_hist_coord = iris.coords.AuxCoord( + data_tas_hist, + attributes={'experiment': HISTORICAL}, + **variables.iris_dict('tas')) + tas_picontrol_coord = iris.coords.AuxCoord( + data_tas_picontrol, + attributes={'experiment': PICONTROL}, + **variables.iris_dict('tas')) + attr = {'created_by': 'ESMValTool version {}'.format(cfg[n.VERSION]) + + ', diagnostic {}'.format(cfg[n.SCRIPT]), + 'creation_date': datetime.utcnow().isoformat(' ') + 'UTC'} + cube = iris.cube.Cube(data_ecs, long_name=variables.long_name('ecs'), + var_name='ecs', units=variables.units('ecs'), + aux_coords_and_dims=[(dataset_coord, 0), + (tas_hist_coord, 0), + (tas_picontrol_coord, 0)], + attributes=attr) + + # Save file + filepath = os.path.join(cfg[n.WORK_DIR], + cfg.get('output_name', 'fig09_42a') + '.nc') + iris.save(cube, filepath) + logger.info("Writing %s", filepath) + + +############################################################################### +# Setup diagnostic +############################################################################### + +# Experiments +PICONTROL = 'piControl' +HISTORICAL = 'historical' +ABRUPT4XCO2 = 'abrupt4xCO2' +DIFF = 'difference of abrupt4xCO2 and piControl' + +# Default settings +DEFAULT_TAS_UNITS = 'celsius' + + +def main(cfg): + """Run the diagnostic. + + Parameters + ---------- + cfg : dict + Configuration dictionary of the recipe. + + """ + ########################################################################### + # Read recipe data + ########################################################################### + + # Dataset data containers + data = e.Datasets(cfg) + logging.debug("Found datasets in recipe:\n%s", data) + + # Variables + var = e.Variables(cfg) + var.modify_var('tas', units=cfg.get('tas_units', DEFAULT_TAS_UNITS)) + logging.debug("Found variables in recipe:\n%s", var) + + # Get ECS data (ignore metadata.yml files) + input_dirs = [d for d in cfg[n.INPUT_FILES] + if not d.endswith(n.METADATA_YAML_FILE)] + if len(input_dirs) != 1: + logging.error("Input files directory from ancestors should contain " + "exactly one directory (ECS directory)") + ecs_filepath = os.path.join(input_dirs[0], + cfg.get('ecs_filename', 'ecs') + '.nc') + + ########################################################################### + # Read data + ########################################################################### + + # Create iris cube for each dataset + for dataset_path in data: + cube = iris.load(dataset_path, var.standard_names())[0] + + # Convert units if desired + cube.convert_units(cfg.get('tas_units', DEFAULT_TAS_UNITS)) + + # Total temporal means + cube = cube.collapsed([n.TIME], iris.analysis.MEAN) + data.set_data(cube.data, dataset_path) + + # Create iris cube for ECS data + cube = iris.load_cube(ecs_filepath) + var.add_vars(ecs={n.SHORT_NAME: cube.var_name, + n.LONG_NAME: cube.long_name, + n.UNITS: cube.units.format(cf_units.UT_DEFINITION)}) + for (idx, model) in enumerate(cube.coord('datasets').points): + data.add_dataset('ecs_' + model, + data=cube.data[idx], + dataset=model, + short_name='ecs') + + ########################################################################### + # Plot data + ########################################################################### + + plot_data(cfg, data) + + ########################################################################### + # Write nc file + ########################################################################### + + write_data(cfg, data, var) + + +if __name__ == '__main__': + with e.run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_maps.py b/esmvaltool/diag_scripts/ocean/diagnostic_maps.py new file mode 100644 index 0000000000..9fffc1e231 --- /dev/null +++ b/esmvaltool/diag_scripts/ocean/diagnostic_maps.py @@ -0,0 +1,134 @@ +""" +Diagnostic Maps: + +Diagnostic to produce png images of a map with coastlines from a cube. +These plost show latitude vs longitude and the cube value is used as the colour +scale. + +Note that this diagnostic assumes that the preprocessors do the bulk of the +hard work, and that the cube received by this diagnostic (via the settings.yml +and metadata.yml files) has no time component, a small number of depth layers, +and a latitude and longitude coordinates. + +An approproate preprocessor for a 3D+time field would be: +preprocessors: + prep_map: + extract_levels: + levels: [100., ] + scheme: linear_extrap + time_average: + +This tool is part of the ocean diagnostic tools package in the ESMValTool. + +Author: Lee de Mora (PML) + ledm@pml.ac.uk +""" +import logging +import os +import sys + +import iris +import iris.quickplot as qplt +import matplotlib.pyplot as plt + +import diagnostic_tools as diagtools +from esmvaltool.diag_scripts.shared import run_diagnostic + +# This part sends debug statements to stdout +logger = logging.getLogger(os.path.basename(__file__)) +logging.getLogger().addHandler(logging.StreamHandler(sys.stdout)) + + +def make_map_plots( + cfg, + metadata, + filename, +): + """ + Make a simple map plot for an individual model. + + The cfg is the opened global config, + metadata is the metadata dictionairy + filename is the preprocessing model file. + """ + # Load cube and set up units + cube = iris.load_cube(filename) + cube = diagtools.bgc_units(cube, metadata['short_name']) + + # Is this data is a multi-model dataset? + multi_model = metadata['dataset'].find('MultiModel') > -1 + + # Make a dict of cubes for each layer. + cubes = diagtools.make_cube_layer_dict(cube) + + # Making plots for each layer + for layer_index, (layer, cube_layer) in enumerate(cubes.items()): + layer = str(layer) + + qplt.contourf(cube_layer, 25) + + try: + plt.gca().coastlines() + except AttributeError: + logger.warning('Not able to add coastlines') + + # Add title to plot + title = ' '.join([metadata['dataset'], metadata['long_name']]) + if layer: + title = ' '.join( + [title, '(', layer, + str(cube_layer.coords('depth')[0].units), ')']) + plt.title(title) + + # Determine png filename: + if multi_model: + path = diagtools.folder( + cfg['plot_dir']) + os.path.basename(filename).replace( + '.nc', '_map_' + str(layer_index) + '.png') + else: + path = diagtools.get_image_path( + cfg, + metadata, + suffix='map_' + str(layer_index) + '.png', + ) + + # Saving files: + if cfg['write_plots']: + + logger.info('Saving plots to %s', path) + plt.savefig(path) + + plt.close() + + +def main(cfg): + """ + Load the config file, and send it to the plot maker. + + The cfg is the opened global config. + """ + for index, metadata_filename in enumerate(cfg['input_files']): + logger.info( + 'metadata filename:\t%s', + metadata_filename, + ) + + metadatas = diagtools.get_input_files(cfg, index=index) + for filename in sorted(metadatas.keys()): + + logger.info('-----------------') + logger.info( + 'model filenames:\t%s', + filename, + ) + + ###### + # Time series of individual model + make_map_plots(cfg, metadatas[filename], filename) + + logger.info('Success') + + +if __name__ == '__main__': + with run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py b/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py new file mode 100644 index 0000000000..b7d0a4c5fc --- /dev/null +++ b/esmvaltool/diag_scripts/ocean/diagnostic_profiles.py @@ -0,0 +1,169 @@ +""" +Diagnostic: + +Diagnostic to produce png images of the profile over time from a cube. +These plost show cube value (ie temperature) on the x-axis, and depth/height +on the y axis. The colour scale is the annual mean of the cube data. + +Note that this diagnostic assumes that the preprocessors do the bulk of the +hard work, and that the cube received by this diagnostic (via the settings.yml +and metadata.yml files) has a time component, and depth component, but no +latitude or longitude coordinates. + +An approproate preprocessor for a 3D+time field would be: +preprocessors: + prep_profile: + extract_volume: + long1: 0. + long2: 20. + lat1: -30. + lat2: 30. + z_min: 0. + z_max: 3000. + average_region: + coord1: longitude + coord2: latitude + +This tool is part of the ocean diagnostic tools package in the ESMValTool. + +Author: Lee de Mora (PML) + ledm@pml.ac.uk +""" +import logging +import os +import sys + +import iris +import iris.quickplot as qplt +import matplotlib.pyplot as plt + +import diagnostic_tools as diagtools +from esmvaltool.diag_scripts.shared import run_diagnostic + +# This part sends debug statements to stdout +logger = logging.getLogger(os.path.basename(__file__)) +logging.getLogger().addHandler(logging.StreamHandler(sys.stdout)) + + +def determine_profiles_str(cube): + """ + Determine a string from the cube, to describe the profile. + + Used in image titles, descriptions and filenames. + """ + options = ['latitude', 'longitude'] + for option in options: + coord = cube.coord(option) + if len(coord.points) > 1: + continue + value = coord.points.mean() + if option == 'latitude': + return str(value) + ' N' + if option == 'longitude': + if value > 180.: + return str(value - 360.) + ' W' + return str(value) + ' E' + return '' + + +def make_profiles_plots( + cfg, + metadata, + filename, +): + """ + Make a simple profile plot for an individual model. + + The cfg is the opened global config, + metadata is the metadata dictionairy + filename is the preprocessing model file. + """ + # Load cube and set up units + cube = iris.load_cube(filename) + cube = diagtools.bgc_units(cube, metadata['short_name']) + + # Make annual means from: + cube = cube.aggregated_by('year', iris.analysis.MEAN) + + # Is this data is a multi-model dataset? + multi_model = metadata['dataset'].find('MultiModel') > -1 + + # + times = cube.coord('time') + times_float = diagtools.timecoord_to_float(times) + time_0 = times_float[0] + + cmap = plt.cm.get_cmap('jet') + + plot_details = {} + for time_index, time in enumerate(times_float): + + color = cmap((time - time_0) / (times_float[-1] - time_0)) + + qplt.plot(cube[time_index, :], cube[time_index, :].coord('depth'), + c=color) + + plot_details[time_index] = {'c': color, 'ls': '-', 'lw': 1, + 'label': str(int(time))} + + # Add title to plot + title = ' '.join([ + metadata['dataset'], + metadata['long_name'], + ]) + plt.title(title) + + # Add Legend outside right. + diagtools.add_legend_outside_right(plot_details, plt.gca()) + + # Determine png filename: + if multi_model: + path = diagtools.folder( + cfg['plot_dir']) + os.path.basename(filename).replace( + '.nc', '_profile.png') + else: + path = diagtools.get_image_path( + cfg, + metadata, + suffix='profile.png', + ) + + # Saving files: + if cfg['write_plots']: + logger.info('Saving plots to %s', path) + plt.savefig(path) + + plt.close() + + +def main(cfg): + """ + Load the config file, and send it to the plot maker. + + The cfg is the opened global config. + """ + for index, metadata_filename in enumerate(cfg['input_files']): + logger.info( + 'metadata filename:\t%s', + metadata_filename + ) + + metadatas = diagtools.get_input_files(cfg, index=index) + for filename in sorted(metadatas.keys()): + + logger.info('-----------------') + logger.info( + 'model filenames:\t%s', + filename, + ) + + ###### + # Time series of individual model + make_profiles_plots(cfg, metadatas[filename], filename) + + logger.info('Success') + + +if __name__ == '__main__': + with run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py b/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py new file mode 100644 index 0000000000..67e38557f1 --- /dev/null +++ b/esmvaltool/diag_scripts/ocean/diagnostic_timeseries.py @@ -0,0 +1,277 @@ +""" +Diagnostic profile: + +Diagnostic to produce png images of the time development of a metric from +cubes. These plost show time on the x-axis and cube value (ie temperature) on +the y-axis. + +Two types of plots are produced: individual model timeseries plots and +multi model time series plots. The inidivual plots show the results from a +single cube, even if this is a mutli-model mean made by the _multimodel.py +preproccessor. The multi model time series plots show several models +on the same axes, where each model is represented by a different line colour. + +Note that this diagnostic assumes that the preprocessors do the bulk of the +hard work, and that the cube received by this diagnostic (via the settings.yml +and metadata.yml files) has a time component, no depth component, and no +latitude or longitude coordinates. + +Some approproate preprocessors for a 3D+time field would be: + +preprocessors: + prep_timeseries_1:# For Global Volume Averaged + average_volume: + coord1: longitude + coord2: latitude + coordz: depth + prep_timeseries_2: # For Global surface Averaged + extract_levels: + levels: [0., ] + scheme: linear_extrap + average_area: + coord1: longitude + coord2: latitude + + +This tool is part of the ocean diagnostic tools package in the ESMValTool. + + +Author: Lee de Mora (PML) + ledm@pml.ac.uk +""" + +import logging +import os + +import iris +import iris.quickplot as qplt +import matplotlib.pyplot as plt + +import diagnostic_tools as diagtools +from esmvaltool.diag_scripts.shared import run_diagnostic + +# This part sends debug statements to stdout +logger = logging.getLogger(os.path.basename(__file__)) + + +def timeplot(cube, **kwargs): + """ + Make a time series plot + + Needed because iris version 1.13 fails due to the time axis. + """ + if iris.__version__ > '2.0': + qplt.plot(cube, kwargs) + else: + times = diagtools.timecoord_to_float(cube.coord('time')) + plt.plot(times, cube.data, **kwargs) + + +def make_time_series_plots( + cfg, + metadata, + filename, +): + """ + Make a simple plot for an indivudual model. + + The cfg is the opened global config, + metadata is the metadata dictionairy + filename is the preprocessing model file. + """ + # Load cube and set up units + cube = iris.load_cube(filename) + cube = diagtools.bgc_units(cube, metadata['short_name']) + + # Is this data is a multi-model dataset? + multi_model = metadata['dataset'].find('MultiModel') > -1 + + # Make a dict of cubes for each layer. + cubes = diagtools.make_cube_layer_dict(cube) + + # Making plots for each layer + for layer_index, (layer, cube_layer) in enumerate(cubes.items()): + layer = str(layer) + + if multi_model: + timeplot(cube_layer, label=metadata['dataset'], ls=':') + else: + timeplot(cube_layer, label=metadata['dataset']) + + # Add title, legend to plots + title = ' '.join([metadata['dataset'], metadata['long_name']]) + if layer: + title = ' '.join( + [title, '(', layer, + str(cube_layer.coords('depth')[0].units), ')']) + plt.title(title) + plt.legend(loc='best') + + # Determine png filename: + if multi_model: + # path = diagtools.folder( + # cfg['plot_dir']) + os.path.basename(filename).replace( + # '.nc', '_timeseries_' + str(l) + '.png') + path = diagtools.get_image_path( + cfg, + metadata, + prefix='MultiModel', + suffix='_'.join(['timeseries', str(layer) + '.png']), + metadata_id_list=[ + 'field', 'short_name', 'preprocessor', 'diagnostic', + 'start_year', 'end_year' + ], + ) + + else: + path = diagtools.get_image_path( + cfg, + metadata, + suffix='timeseries_' + str(layer_index) + '.png', + ) + + # Saving files: + if cfg['write_plots']: + + logger.info('Saving plots to %s', path) + plt.savefig(path) + + plt.close() + + +def multi_model_time_series( + cfg, + metadata, +): + """ + Make a time series plot showing several models. + + This function makes a simple plot for an indivudual model. + The cfg is the opened global config, + metadata is the metadata dictionairy. + """ + #### + # Load the data for each layer as a separate cube + model_cubes = {} + layers = {} + for filename in sorted(metadata): + cube = iris.load_cube(filename) + cube = diagtools.bgc_units(cube, metadata[filename]['short_name']) + + cubes = diagtools.make_cube_layer_dict(cube) + model_cubes[filename] = cubes + for layer in cubes: + layers[layer] = True + + # Make a plot for each layer + for layer in layers: + + title = '' + z_units = '' + plot_details = {} + cmap = plt.cm.get_cmap('viridis') + + # Plot each file in the group + for index, filename in enumerate(sorted(metadata)): + color = cmap(index / (len(metadata) - 1.)) + + if 'MultiModel' in metadata[filename]['dataset']: + timeplot( + model_cubes[filename][layer], + c=color, + # label=metadata[filename]['dataset'], + ls=':', + lw=2., + ) + plot_details[filename] = { + 'c': color, + 'ls': ':', + 'lw': 2., + 'label': metadata[filename]['dataset'] + } + else: + timeplot( + model_cubes[filename][layer], + c=color, + # label=metadata[filename]['dataset']) + ls='-', + lw=2., + ) + plot_details[filename] = { + 'c': color, + 'ls': '-', + 'lw': 2., + 'label': metadata[filename]['dataset'] + } + + title = metadata[filename]['long_name'] + if layer != '': + z_units = model_cubes[filename][layer].coords('depth')[0].units + + # Add title, legend to plots + if layer: + title = ' '.join([title, '(', str(layer), str(z_units), ')']) + plt.title(title) + plt.legend(loc='best') + + # Saving files: + if cfg['write_plots']: + path = diagtools.get_image_path( + cfg, + metadata[filename], + prefix='MultipleModels_', + suffix='_'.join(['timeseries', str(layer) + '.png']), + metadata_id_list=[ + 'field', 'short_name', 'preprocessor', 'diagnostic', + 'start_year', 'end_year' + ], + ) + + # Resize and add legend outside thew axes. + plt.gcf().set_size_inches(9., 6.) + diagtools.add_legend_outside_right( + plot_details, plt.gca(), column_width=0.15) + + logger.info('Saving plots to %s', path) + plt.savefig(path) + plt.close() + + +def main(cfg): + """ + Load the config file, and send it to the plot maker. + + The cfg is the opened global config. + """ + for index, metadata_filename in enumerate(cfg['input_files']): + logger.info( + 'metadata filename:\t%s', + metadata_filename + ) + + metadatas = diagtools.get_input_files(cfg, index=index) + + ####### + # Multi model time series + multi_model_time_series( + cfg, + metadatas, + ) + + for filename in sorted(metadatas.keys()): + + logger.info('-----------------') + logger.info( + 'model filenames:\t%s', + filename, + ) + + ###### + # Time series of individual model + make_time_series_plots(cfg, metadatas[filename], filename) + logger.info('Success') + + +if __name__ == '__main__': + with run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_tools.py b/esmvaltool/diag_scripts/ocean/diagnostic_tools.py new file mode 100644 index 0000000000..1998050fd2 --- /dev/null +++ b/esmvaltool/diag_scripts/ocean/diagnostic_tools.py @@ -0,0 +1,208 @@ +""" +Diagnostic tools: + +This module contains several python tools used elsewhere by the ocean +diagnostics package. + +This tool is part of the ocean diagnostic tools package in the ESMValTool. + +Author: Lee de Mora (PML) + ledm@pml.ac.uk +""" +import logging +import os +import sys +import yaml + +import matplotlib.pyplot as plt + +# This part sends debug statements to stdout +logger = logging.getLogger(os.path.basename(__file__)) +logging.getLogger().addHandler(logging.StreamHandler(sys.stdout)) + + +def folder(name): + """ + Make a directory out of a string or list or strings. + + Take a string or a list of strings, convert it to a directory style, + then make the folder and the string. + Returns folder string and final character is always os.sep. ('/') + """ + sep = os.sep + if isinstance(name, list): + name = os.sep.join(name) + if name[-1] != sep: + name = name + sep + if os.path.exists(name) is False: + os.makedirs(name) + logger.info('Making new directory:\t%s', str(name)) + return name + + +def get_input_files(cfg, index=0): + """ + Load input configuration file. + + Get a dictionary with input files from the metadata.yml files. + """ + metadata_file = cfg['input_files'][index] + with open(metadata_file) as input_file: + metadata = yaml.safe_load(input_file) + return metadata + + +def bgc_units(cube, name): + """ + Convert the cubes into some friendlier units. + + This is because many CMIP standard units are not the standard units + used by the BGC community (ie, Celsius is prefered over Kelvin, etc.) + """ + new_units = '' + + if name in ['tos', 'thetao']: + new_units = 'celsius' + + if name in [ + 'no3', + ]: + new_units = 'mmol m-3' + + if name in [ + 'chl', + ]: + new_units = 'mg m-3' + + if new_units != '': + logger.info(' '.join( + ["Changing units from", + str(cube.units), 'to', new_units])) + cube.convert_units(new_units) + + return cube + + +def timecoord_to_float(times): + """ + Convert from time coordinate into decimal time. + + Takes an iris time coordinate and returns a list of floats. + """ + dtimes = times.units.num2date(times.points) + floattimes = [] + for dtime in dtimes: + # TODO: it would be better to have a calendar dependent value + # for daysperyear, as this is not accurate for 360 day calendars. + daysperyear = 365.25 + floattime = dtime.year + dtime.dayofyr / daysperyear + dtime.hour / ( + 24. * daysperyear) + if dtime.minute: + floattime += dtime.minute / (24. * 60. * daysperyear) + floattimes.append(floattime) + return floattimes + + +def add_legend_outside_right(plot_details, ax1, column_width=0.1): + """ + Add a legend outside the plot, to the right. + + plot_details is a 2 level dict, + where the first level is some key (which is hidden) + and the 2nd level contains the keys: + 'c': color + 'lw': line width + 'label': label for the legend. + ax1 is the axis where the plot was drawn. + """ + ##### + # Create dummy axes: + legend_size = len(plot_details.keys()) + 1 + ncols = int(legend_size / 25) + 1 + box = ax1.get_position() + ax1.set_position( + [box.x0, box.y0, box.width * (1. - column_width * ncols), box.height]) + + # Add emply plots to dummy axis. + for index in sorted(plot_details.keys()): + + plt.plot( + [], [], + c=plot_details[index]['c'], + lw=plot_details[index]['lw'], + ls=plot_details[index]['ls'], + label=plot_details[index]['label']) + + legd = ax1.legend( + loc='center left', + ncol=ncols, + prop={'size': 10}, + bbox_to_anchor=(1., 0.5)) + legd.draw_frame(False) + legd.get_frame().set_alpha(0.) + + +def get_image_path(cfg, + metadata, + prefix='diag', + suffix='image', + metadata_id_list='default',): + """ + Produce a path to the final location of the image. + + The cfg is the opened global config, + metadata is the metadata dictionairy (for the individual dataset file) + """ + ##### + if metadata_id_list == 'default': + metadata_id_list = ['project', 'dataset', 'mip', 'exp', 'ensemble', + 'field', 'short_name', 'preprocessor', + 'diagnostic', 'start_year', 'end_year', ] + + path = folder(cfg['plot_dir']) + if prefix: + path += prefix + '_' + path += '_'.join([str(metadata[b]) for b in metadata_id_list]) + if suffix: + path += '_' + suffix + + image_extention = '.png' + if path.find(image_extention) == -1: + path += image_extention + + logger.info("Image path will be: %s", path) + return path + + +def make_cube_layer_dict(cube): + """ + Take a cube and return a dictionairy layer:cube + + Each item in the dict is a layer with a separate cube for each layer. + ie: + cubes[depth] = cube from specific layer + + Cubes with no depth component are returns as: + cubes[''] = cube with no depth component. + """ + ##### + # Check layering: + depth = cube.coords('depth') + cubes = {} + + if depth == []: + cubes[''] = cube + else: + # iris stores coords as a list with one entry: + depth = depth[0] + if len(depth.points) in [ + 1, + ]: + cubes[''] = cube + else: + coord_dim = cube.coord_dims('depth')[0] + for layer_index, layer in enumerate(depth.points): + slices = [slice(None) for index in cube.shape] + slices[coord_dim] = layer_index + cubes[layer] = cube[tuple(slices)] + return cubes diff --git a/esmvaltool/diag_scripts/ocean/diagnostic_transects.py b/esmvaltool/diag_scripts/ocean/diagnostic_transects.py new file mode 100644 index 0000000000..1fe6b5efda --- /dev/null +++ b/esmvaltool/diag_scripts/ocean/diagnostic_transects.py @@ -0,0 +1,144 @@ +""" +Diagnostic transect: + +Diagnostic to produce png images of a transect. +These plost show either latitude or longitude against depth, and the cube value +is used as the colour scale. + +Note that this diagnostic assumes that the preprocessors do the bulk of the +hard work, and that the cube received by this diagnostic (via the settings.yml +and metadata.yml files) has no time component, and one of the latitude or +longitude coordinates has been reduced to a single value. + +An approproate preprocessor for a 3D+time field would be: +preprocessors: + prep_transect: + time_average: + extract_slice: # Atlantic Meridional Transect + latitude: [-50.,50.] + longitude: 332. + +This tool is part of the ocean diagnostic tools package in the ESMValTool. + +Author: Lee de Mora (PML) + ledm@pml.ac.uk +""" +import logging +import os +import sys + +import iris +import iris.quickplot as qplt +import matplotlib.pyplot as plt + +import diagnostic_tools as diagtools +from esmvaltool.diag_scripts.shared import run_diagnostic + +# This part sends debug statements to stdout +logger = logging.getLogger(os.path.basename(__file__)) +logging.getLogger().addHandler(logging.StreamHandler(sys.stdout)) + + +def determine_transect_str(cube): + """ + Determine the Transect String + + Takes a guess at a string to describe the transect. + """ + options = ['latitude', 'longitude'] + for option in options: + coord = cube.coord(option) + if len(coord.points) > 1: + continue + value = coord.points.mean() + if option == 'latitude': + return str(value) + ' N' + if option == 'longitude': + if value > 180.: + return str(value - 360.) + ' W' + return str(value) + ' E' + return '' + + +def make_transects_plots( + cfg, + metadata, + filename, +): + """ + Make a simple plot of the transect for an indivudual model. + + The cfg is the opened global config, + metadata is the metadata dictionairy + filename is the preprocessing model file. + """ + # Load cube and set up units + cube = iris.load_cube(filename) + cube = diagtools.bgc_units(cube, metadata['short_name']) + + # Is this data is a multi-model dataset? + multi_model = metadata['dataset'].find('MultiModel') > -1 + + # Make a dict of cubes for each layer. + + qplt.contourf(cube, 25) + plt.axes().set_yscale('log') + + # Add title to plot + title = ' '.join( + [metadata['dataset'], metadata['long_name'], + determine_transect_str(cube)]) + plt.title(title) + + # Determine png filename: + if multi_model: + path = diagtools.folder( + cfg['plot_dir']) + os.path.basename(filename).replace( + '.nc', '_transect.png') + else: + path = diagtools.get_image_path( + cfg, + metadata, + suffix='transect.png', + ) + + # Saving files: + if cfg['write_plots']: + logger.info('Saving plots to %s', path) + plt.savefig(path) + + plt.close() + + +def main(cfg): + """ + Load the config file, and send it to the plot maker. + + The cfg is the opened global config. + """ + ##### + for index, metadata_filename in enumerate(cfg['input_files']): + logger.info( + 'metadata filename:\t%s', + metadata_filename, + ) + + metadata = diagtools.get_input_files(cfg, index=index) + for filename in sorted(metadata.keys()): + + logger.info('-----------------') + logger.info( + 'model filenames:\t%s', + filename, + ) + + ###### + # Time series of individual model + make_transects_plots(cfg, metadata[filename], filename) + + logger.info('Success') + + +if __name__ == '__main__': + with run_diagnostic() as config: + main(config) diff --git a/esmvaltool/diag_scripts/perfmetrics/collect.ncl b/esmvaltool/diag_scripts/perfmetrics/collect.ncl index dd3bc5aa45..ff8b7151ce 100644 --- a/esmvaltool/diag_scripts/perfmetrics/collect.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/collect.ncl @@ -18,7 +18,7 @@ ; label_hi: add upper triange for values outside range ; cm_interval: min and max color of the color table ; cm_reverse: reverse color table -; sort: sort models in alphabetic order (excluding MMM) +; sort: sort datasets in alphabetic order (excluding MMM) ; title: plot title ; scale_font: scaling factor applied to the default font size ; disp_values: switch on/off the grading values on the plot @@ -57,7 +57,7 @@ begin file_type = "ps" end if - ; Write references + ; Write references ; FIX-ME to be replaced by new method write_references(diag_script, "A_fran_fr", \ (/"A_righ_ma", "A_eyri_ve", "A_gott_kl"/), \ (/"D_righi15gmd", "D_gleckler08jgr"/), \ @@ -91,7 +91,7 @@ begin end if - ; Create array for collecting all models + ; Create array for collecting all datasets if (.not.isdefined("data_all")) then dim_temp = dimsizes(data_temp) dim_data = (/dimsizes(input_files), dim_temp(1), 2/) @@ -101,7 +101,7 @@ begin data_all&models = data_temp&models end if - ; Make sure model coordinate is consistent + ; Make sure dataset coordinate is consistent consistent = False if (dimsizes(data_temp&models).eq.dimsizes(data_all&models)) then if (all(data_temp&models.eq.data_all&models)) then @@ -116,7 +116,7 @@ begin else do imod2 = 0, dimsizes(data_temp&models) - 1 if (.not.any(data_temp&models(imod2).eq.data_all&models)) then - ; Append record for model(imod) + ; Append record for dataset(imod) data_new = extend_var_at(data_all, 1, dimsizes(data_all&models)) data_new(ii, dimsizes(data_all&models), :) = \ (/data_temp(0, imod2, :)/) @@ -125,9 +125,9 @@ begin data_all := data_new delete(data_new) else - ; Loop over models of data + ; Loop over datasets of data do imod = 0, dimsizes(data_all&models) - 1 - ; if no data model is similar to curreny entry, write data entry + ; if no data dataset is similar to curreny entry, write data entry if (data_all&models(imod).eq. data_temp&models(imod2)) then data_all(ii, imod, :) = (/data_temp(0, imod2, :)/) copy_VarCoords(data_temp(0:0, imod2, :), \ @@ -154,7 +154,7 @@ begin delete(data_all@reference) end if - ; Sort models in alphabetical order, excluding multi-model mean/median + ; Sort datasets in alphabetical order, excluding multi-model mean/median ; which are placed at the beginning if (isatt(diag_script_info, "sort")) then if (diag_script_info@sort) then diff --git a/esmvaltool/diag_scripts/perfmetrics/cycle.ncl b/esmvaltool/diag_scripts/perfmetrics/cycle.ncl index 1c4eebd025..dc0d4c5ba2 100644 --- a/esmvaltool/diag_scripts/perfmetrics/cycle.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/cycle.ncl @@ -25,24 +25,24 @@ begin end if var_all!0 = "model" var_all!2 = "statistic" - var_all&model = modelnames + var_all&model = datasetnames var_all&statistic = (/"mean", "stddev"/) ; Attach attributes var_all@var = var0 var_all@diag_script = (/diag_script/) copy_VarAtts(diag_script_info, var_all) - var_all@ref_model = variable_info@reference_model + var_all@ref_model = variable_info@reference_dataset - ; Loop over models + ; Loop over datasets do imod = 0, dim_MOD - 1 - log_debug("Processing " + modelnames(imod)) + log_debug("Processing " + datasetnames(imod)) ; Set path for saving processed data ; FIX-ME add preproc_id fullpath = config_user_info@work_dir + "/" system("mkdir -p " + fullpath) - fname = basename(systemfunc("basename " + model_info@filename(imod))) + fname = basename(systemfunc("basename " + dataset_info@filename(imod))) fname = fname + "_" + basename(diag_script) + "_cycle" fname = fname + "_" + diag_script_info@time_avg if (isatt(diag_script_info, "level")) then diff --git a/esmvaltool/diag_scripts/perfmetrics/cycle_latlon.ncl b/esmvaltool/diag_scripts/perfmetrics/cycle_latlon.ncl index 52039912bd..f60d78cb91 100644 --- a/esmvaltool/diag_scripts/perfmetrics/cycle_latlon.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/cycle_latlon.ncl @@ -7,7 +7,7 @@ procedure perfmetrics_ptype_script() begin - ; Set model indexes, with reference and alternative models first + ; Set dataset indexes, with reference and alternative datasets first modidx = ispan(0, dim_MOD - 1, 1) if (l_altern) then modidx := array_append_record( \ @@ -17,17 +17,17 @@ begin modidx := array_append_record(ref_ind, modidx(ind(modidx.ne.ref_ind)), 0) end if - ; Loop over models + ; Loop over datasets do ii = 0, dimsizes(modidx) - 1 imod = modidx(ii) - log_debug("Processing " + modelnames(imod)) + log_debug("Processing " + datasetnames(imod)) ; Set path for saving processed data ; FIX-ME add preproc_id fullpath = config_user_info@work_dir + "/" system("mkdir -p " + fullpath) - fname = basename(systemfunc("basename " + model_info@filename(imod))) + fname = basename(systemfunc("basename " + dataset_info@filename(imod))) fname = fname + "_" + basename(diag_script) + "_cycle_latlon" fname = fname + "_" + diag_script_info@time_avg if (isatt(diag_script_info, "level")) then @@ -65,7 +65,7 @@ begin var_all@var = var0 var_all@diag_script = (/diag_script/) copy_VarAtts(diag_script_info, var_all) - var_all@ref_model = variable_info@reference_model + var_all@ref_model = variable_info@reference_dataset if (config_user_info@write_netcdf.eq."True") then var_all@ncdf = procpath ncdf_outfile = ncdf_write(var_all, procpath) @@ -76,12 +76,12 @@ begin continue end if - ; Store reference model + ; Store reference dataset if (imod.eq.ref_ind) then var_ref = var_all end if - ; Store alternative model + ; Store alternative dataset if (l_altern) then if (imod.eq.alt_ind) then var_alt = var_all @@ -92,7 +92,7 @@ begin do met = 0, nmetrics - 1 if (diag_script_info@metric(met).eq."taylor") then - locidx = ind(modelnames(imod).eq.taylor&models) + locidx = ind(datasetnames(imod).eq.taylor&models) if (ismissing(locidx)) then continue end if @@ -103,7 +103,7 @@ begin calculate_metric(var_all(:, :, :, 0), var_ref(:, :, :, 0), \ "correlation") else - locidx = ind(modelnames(imod).eq.grading&models) + locidx = ind(datasetnames(imod).eq.grading&models) if (ismissing(locidx)) then continue end if diff --git a/esmvaltool/diag_scripts/perfmetrics/latlon.ncl b/esmvaltool/diag_scripts/perfmetrics/latlon.ncl index ede5185c7c..ba00d466c3 100644 --- a/esmvaltool/diag_scripts/perfmetrics/latlon.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/latlon.ncl @@ -7,21 +7,21 @@ procedure perfmetrics_ptype_script() begin - ; Set model indexes, with reference model first + ; Set dataset indexes, with reference dataset first modidx = ispan(0, dim_MOD - 1, 1) modidx := array_append_record(ref_ind, modidx(ind(modidx.ne.ref_ind)), 0) - ; Loop over models + ; Loop over datasets do ii = 0, dimsizes(modidx) - 1 imod = modidx(ii) - log_debug("Processing " + modelnames(imod)) + log_debug("Processing " + datasetnames(imod)) ; Set path for saving processed data fullpath = config_user_info@work_dir + "/" system("mkdir -p " + fullpath) - fname = basename(systemfunc("basename " + model_info@filename(imod))) + fname = basename(systemfunc("basename " + dataset_info@filename(imod))) fname = fname + "_" + basename(diag_script) + "_latlon" fname = fname + "_" + diag_script_info@time_avg procpath = fullpath + fname + "_Global.nc" @@ -50,13 +50,13 @@ begin var_all@var = var0 var_all@diag_script = (/diag_script/) copy_VarAtts(diag_script_info, var_all) - var_all@ref_model = variable_info@reference_model + var_all@ref_model = variable_info@reference_dataset if (config_user_info@write_netcdf.eq."True") then var_all@ncdf = procpath ncdf_outfile = ncdf_write(var_all, procpath) end if - ; Store reference model + ; Store reference dataset if (imod.eq.ref_ind) then var_ref = var_all end if @@ -72,13 +72,13 @@ begin end if ; Absolute plot - outfile = config_user_info@plot_dir + modelnames(imod) + "_" + var0 + \ + outfile = config_user_info@plot_dir + datasetnames(imod) + "_" + var0 + \ "_latlon_" + diag_script_info@time_avg + "_Glob" plot_var = var_all(:, :, 0) plot_var@projection = diag_script_info@projection plot_var@res_cnLinesOn = False plot_var@res_cnLevelSelectionMode = "ExplicitLevels" - plot_var@res_tiMainString = modelnames(imod) + plot_var@res_tiMainString = datasetnames(imod) plot_var@res_cnLevels = diag_script_info@abs_levs plot_var@res_gsnLeftString = \ plot_var@long_name + " [" + format_units(plot_var@units) + "]" @@ -102,10 +102,11 @@ begin continue end if plot_var = var_all(:, :, 0) - var_ref(:, :, 0) - outfile = config_user_info@plot_dir + modelnames(imod) + "-" + \ - modelnames(ref_ind) + "_" + var0 + "_latlon_" + \ + outfile = config_user_info@plot_dir + datasetnames(imod) + "-" + \ + datasetnames(ref_ind) + "_" + var0 + "_latlon_" + \ diag_script_info@time_avg + "_Glob" - plot_var@res_tiMainString = modelnames(imod) + " - " + modelnames(ref_ind) + plot_var@res_tiMainString = \ + datasetnames(imod) + " - " + datasetnames(ref_ind) if (isatt(diag_script_info, "t_test")) then plot_var@res_gsnLeftString = plot_var@res_gsnLeftString + " - " + \ sprinti("%2i", toint(100 * diag_script_info@conf_level)) + "% c.l." diff --git a/esmvaltool/diag_scripts/perfmetrics/main.ncl b/esmvaltool/diag_scripts/perfmetrics/main.ncl index c594633515..0f05f854cf 100644 --- a/esmvaltool/diag_scripts/perfmetrics/main.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/main.ncl @@ -7,7 +7,7 @@ ; Calculates and (optionally) plots annual/seasonal cycles, zonal means, ; lat-lon fields and time-lat-lon fields from input T3M or T2Ms data. ; The calculated fields can be also plotted as difference w.r.t. a given -; reference model. It also calculates grading and taylor metrics. +; reference dataset. It also calculates grading and taylor metrics. ; Input data have to be regridded to a common grid in the preprocessor. ; ; Required diag_script_info attributes @@ -65,7 +65,7 @@ ; now stippling significant grid cells (old version: ; masking out non-significant values in gray) ; 20160628-A_righ_ma: moving ref_model specification from cfg- files to -; main namelist +; recipe file ; 20160628-A_senf_da: added regridding for irregular grids (ESMF_regrid). ; 20151027-A_laue_ax: moved call to 'write_references' to the beginning ; of the code. @@ -102,12 +102,12 @@ begin log_info(diag_script + " (var: " + variables(0) + ")") log_info("++++++++++++++++++++++++++++++++++++++++++") - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) - ; Write references + ; Write references ; FIX-ME to be replaced by new method write_references(diag_script, "A_fran_fr", \ (/"A_righ_ma", "A_eyri_ve", "A_gott_kl", "A_senf_da"/), \ (/"D_righi15gmd", "D_gleckler08jgr"/), \ @@ -186,27 +186,28 @@ begin end if end if - ; Unique names for models - modelnames = project_style(diag_script_info, "annots") + ; Unique names for datasets + datasetnames = project_style(diag_script_info, "annots") - ; Check for reference model definition - if (variable_info@reference_model.eq."None") then - error_msg("f", diag_script, "", "no reference model is specified") + ; Check for reference dataset definition + if (variable_info@reference_dataset.eq."None") then + error_msg("f", diag_script, "", "no reference dataset is specified") end if - ; Set index of the reference (and alternative) model - if (isatt(variable_info, "alternative_model")) then + ; Set index of the reference (and alternative) dataset + if (isatt(variable_info, "alternative_dataset")) then l_altern = True nobs = 2 - ref_inds = get_ref_model_idx(model_info, \ - (/variable_info@reference_model, \ - variable_info@alternative_model/)) + ref_inds = get_ref_dataset_idx(dataset_info, \ + (/variable_info@reference_dataset, \ + variable_info@alternative_dataset/)) ref_ind = ref_inds(0) alt_ind = ref_inds(1) else l_altern = False nobs = 1 - ref_inds = get_ref_model_idx(model_info, variable_info@reference_model) + ref_inds = \ + get_ref_dataset_idx(dataset_info, variable_info@reference_dataset) ref_ind = ref_inds end if @@ -259,29 +260,29 @@ begin ; Define grading arrays nmetrics = dimsizes(diag_script_info@metric) ncdf_dir = new(nmetrics, string) - nmodels = dimsizes(modelnames) - nobs + ndatasets = dimsizes(datasetnames) - nobs - grading = new((/nmetrics, 1, nmodels, nobs/), float) + grading = new((/nmetrics, 1, ndatasets, nobs/), float) grading!0 = "metric" grading!1 = "diagnostics" ; dummy coord. to facilitate appending grading!2 = "models" grading!3 = "reference" grading&diagnostics = var0_grade - grading&models = remove_index(modelnames, ref_inds) + grading&models = remove_index(datasetnames, ref_inds) if (isdim(grading, "reference")) then - grading&reference = modelnames(ref_inds) + grading&reference = datasetnames(ref_inds) end if ; Special case Taylor if (any(diag_script_info@metric.eq."taylor")) then - nmodels = dimsizes(modelnames) - 1 ; always 1 reference model - taylor = new((/1, nmodels, 2/), float) + ndatasets = dimsizes(datasetnames) - 1 ; always 1 reference dataset + taylor = new((/1, ndatasets, 2/), float) taylor!0 = "diagnostics" ; dummy coord. to facilitate appending taylor!1 = "models" taylor!2 = "statistic" taylor&diagnostics = var0_grade taylor&statistic = (/"stddev_ratio", "correlation"/) - taylor&models = remove_index(modelnames, ref_ind) + taylor&models = remove_index(datasetnames, ref_ind) end if ; Define grading filename @@ -323,7 +324,7 @@ begin end do end if - ; Reduce dimensionality if no alternative model + ; Reduce dimensionality if no alternative dataset if (.not.l_altern .and. diag_script_info@metric(met).ne."taylor") then metric := metric(:, :, 0) delete(metric@reference) @@ -337,8 +338,8 @@ begin metric@diag_script = (/diag_script/) metric@var = "grade" metric@region = location - metric@num_climofiles = dimsizes(model_info@model) ; FIX-ME ? - do imod = 0, dimsizes(model_info@model) - 1 + metric@num_climofiles = dimsizes(dataset_info@dataset) ; FIX-ME ? + do imod = 0, dimsizes(dataset_info@dataset) - 1 num_climo = "climofile_" + imod metric@$num_climo$ = input_file_info@filename(imod) end do diff --git a/esmvaltool/diag_scripts/perfmetrics/zonal.ncl b/esmvaltool/diag_scripts/perfmetrics/zonal.ncl index 4d7965f3e8..18852b27cc 100644 --- a/esmvaltool/diag_scripts/perfmetrics/zonal.ncl +++ b/esmvaltool/diag_scripts/perfmetrics/zonal.ncl @@ -7,7 +7,7 @@ procedure perfmetrics_ptype_script() begin - ; Start loop over models, make sure reference model is calculated first + ; Start loop over datasets, make sure reference dataset is calculated first modidx = ispan(0, dim_MOD - 1, 1) modidx := array_append_record(ref_ind, modidx(ind(modidx.ne.ref_ind)), 0) @@ -15,12 +15,12 @@ begin imod = modidx(ii) - log_debug("Processing " + modelnames(imod)) + log_debug("Processing " + datasetnames(imod)) ; Set path for saving processed data fullpath = config_user_info@work_dir + "/" system("mkdir -p " + fullpath) - fname = basename(systemfunc("basename " + model_info@filename(imod))) + fname = basename(systemfunc("basename " + dataset_info@filename(imod))) fname = fname + "_" + basename(diag_script) + "_zonal" fname = fname + "_" + diag_script_info@time_avg procpath = fullpath + fname + "_Global.nc" @@ -54,13 +54,13 @@ begin var_all@var = var0 var_all@diag_script = (/diag_script/) copy_VarAtts(diag_script_info, var_all) - var_all@ref_model = variable_info@reference_model + var_all@ref_model = variable_info@reference_dataset if (config_user_info@write_netcdf.eq."True") then var_all@ncdf = procpath ncdf_outfile = ncdf_write(var_all, procpath) end if - ; Store reference model + ; Store reference dataset if (imod.eq.ref_ind) then var_ref = var_all end if @@ -76,10 +76,10 @@ begin end if ; Absolute plot - outfile = config_user_info@plot_dir + modelnames(imod) + "_" + var0 + \ + outfile = config_user_info@plot_dir + datasetnames(imod) + "_" + var0 + \ "_zonal_" + diag_script_info@time_avg + "_Glob" plot_var = var_all(:, :, 0) - plot_var@res_tiMainString = modelnames(imod) + plot_var@res_tiMainString = datasetnames(imod) plot_var@res_cnLevelSelectionMode = "ExplicitLevels" plot_var@res_cnLevels = diag_script_info@abs_levs plot_var@res_trYMinF = diag_script_info@zonal_ymin @@ -100,10 +100,11 @@ begin continue end if plot_var = var_all(:, :, 0) - var_ref(:, :, 0) - outfile = config_user_info@plot_dir + modelnames(imod) + "-" + \ - modelnames(ref_ind) + "_" + var0 + "_zonal_" + \ + outfile = config_user_info@plot_dir + datasetnames(imod) + "-" + \ + datasetnames(ref_ind) + "_" + var0 + "_zonal_" + \ diag_script_info@time_avg + "_Glob" - plot_var@res_tiMainString = modelnames(imod) + " - " + modelnames(ref_ind) + plot_var@res_tiMainString = \ + datasetnames(imod) + " - " + datasetnames(ref_ind) if (isatt(diag_script_info, "t_test")) then plot_var@res_gsnLeftString = plot_var@res_gsnLeftString + " - " + \ sprinti("%2i", toint(100 * diag_script_info@conf_level)) + "% c.l." diff --git a/esmvaltool/diag_scripts/shared/__init__.py b/esmvaltool/diag_scripts/shared/__init__.py index 89ff2cbda7..50c5f9a159 100644 --- a/esmvaltool/diag_scripts/shared/__init__.py +++ b/esmvaltool/diag_scripts/shared/__init__.py @@ -1,9 +1,19 @@ """Code that is shared between multiple diagnostic scripts.""" -from . import plot -from ._base import get_cfg, run_diagnostic +from . import names, plot +from ._base import (get_cfg, group_metadata, run_diagnostic, select_metadata, + sorted_group_metadata, sorted_metadata) +from ._diag import Datasets, Variable, Variables __all__ = [ + 'names', 'get_cfg', 'plot', 'run_diagnostic', + 'Variable', + 'Variables', + 'Datasets', + 'select_metadata', + 'sorted_metadata', + 'group_metadata', + 'sorted_group_metadata', ] diff --git a/esmvaltool/diag_scripts/shared/_base.py b/esmvaltool/diag_scripts/shared/_base.py index e6a31754d8..4c6f00cb64 100644 --- a/esmvaltool/diag_scripts/shared/_base.py +++ b/esmvaltool/diag_scripts/shared/_base.py @@ -1,16 +1,140 @@ """Convenience functions for running a diagnostic script.""" import argparse import contextlib +import glob import logging import os import shutil import sys +import time +from collections import OrderedDict import yaml logger = logging.getLogger(__name__) +def select_metadata(metadata, **attributes): + """Select specific metadata describing preprocessed data. + + Parameters + ---------- + metadata : :obj:`list` of :obj:`dict` + A list of metadata describing preprocessed data. + **attributes : + Keyword arguments specifying the required variable attributes and + their values. + Use the value '*' to select any variable that has the attribute. + + Returns + ------- + :obj:`list` of :obj:`dict` + A list of matching metadata. + + """ + selection = [] + for attribs in metadata: + if all( + a in attribs and ( + attribs[a] == attributes[a] or attributes[a] == '*') + for a in attributes): + selection.append(attribs) + return selection + + +def group_metadata(metadata, attribute, sort=None): + """Group metadata describing preprocessed data by attribute. + + Parameters + ---------- + metadata : :obj:`list` of :obj:`dict` + A list of metadata describing preprocessed data. + attribute : str + The attribute name that the metadata should be grouped by. + sort : + See `sorted_group_metadata`. + + Returns + ------- + :obj:`dict` of :obj:`list` of :obj:`dict` + A dictionary containing the requested groups. If sorting is requested, + an `OrderedDict` will be returned. + + """ + groups = {} + for attributes in metadata: + key = attributes.get(attribute) + if key not in groups: + groups[key] = [] + groups[key].append(attributes) + + if sort: + groups = sorted_group_metadata(groups, sort) + + return groups + + +def sorted_metadata(metadata, sort): + """Sort a list of metadata describing preprocessed data. + + Sorting is done on strings and is not case sensitive. + + Parameters + ---------- + metadata : :obj:`list` of :obj:`dict` + A list of metadata describing preprocessed data. + sort : :obj:`str` or :obj:`list` of :obj:`str` + One or more attributes to sort by. + + Returns + ------- + :obj:`list` of :obj:`dict` + The sorted list of variable metadata. + + """ + if isinstance(sort, str): + sort = [sort] + + def normalized_variable_key(attributes): + """Define a key to sort the list of attributes by.""" + return tuple(str(attributes.get(k, '')).lower() for k in sort) + + return sorted(metadata, key=normalized_variable_key) + + +def sorted_group_metadata(metadata_groups, sort): + """Sort grouped metadata. + + Sorting is done on strings and is not case sensitive. + + Parameters + ---------- + metadata_groups : :obj:`dict` of :obj:`list` of :obj:`dict` + Dictionary containing the groups of metadata. + sort : :obj:`bool` or :obj:`str` or :obj:`list` of :obj:`str` + One or more attributes to sort by or True to just sort the groups but + not the lists. + + Returns + ------- + :obj:`OrderedDict` of :obj:`list` of :obj:`dict` + A dictionary containing the requested groups. + + """ + if sort is True: + sort = [] + + def normalized_group_key(key): + """Define a key to sort the OrderedDict by.""" + return '' if key is None else str(key).lower() + + groups = OrderedDict() + for key in sorted(metadata_groups, key=normalized_group_key): + groups[key] = sorted_metadata(metadata_groups[key], sort) + + return groups + + def get_cfg(filename=None): """Read diagnostic script configuration from settings.yml.""" if filename is None: @@ -22,19 +146,33 @@ def get_cfg(filename=None): def _get_input_data_files(cfg): """Get a dictionary containing all data input files.""" - input_files = {} + metadata_files = [] for filename in cfg['input_files']: - if os.path.basename(filename) == 'metadata.yml': - with open(filename) as file: - metadata = yaml.safe_load(file) - input_files.update(metadata) + if os.path.isdir(filename): + metadata_files.extend( + glob.glob(os.path.join(filename, '*metadata.yml'))) + elif os.path.basename(filename) == 'metadata.yml': + metadata_files.append(filename) + + input_files = {} + for filename in metadata_files: + with open(filename) as file: + metadata = yaml.safe_load(file) + input_files.update(metadata) return input_files @contextlib.contextmanager def run_diagnostic(): - """Run a diagnostic.""" + """Run a diagnostic. + + Example + ------- + See esmvaltool/diag_scripts/examples/diagnostic.py for an example of how to + start your diagnostic. + + """ # Implemented as context manager so we can support clean up actions later parser = argparse.ArgumentParser(description="Diagnostic script") parser.add_argument('filename', help="Path to settings.yml") @@ -45,6 +183,13 @@ def run_diagnostic(): "(useful when re-running the script)"), action='store_true', ) + parser.add_argument( + '-i', + '--ignore-existing', + help=("Force running the script, even if output files exists." + "(useful when re-running the script, use at your own risk)"), + action='store_true', + ) parser.add_argument( '-l', '--log-level', @@ -61,6 +206,7 @@ def run_diagnostic(): logging.basicConfig(format="%(asctime)s [%(process)d] %(levelname)-8s " "%(name)s,%(lineno)s\t%(message)s") + logging.Formatter.converter = time.gmtime logging.getLogger().setLevel(cfg['log_level'].upper()) # Read input metadata @@ -83,15 +229,18 @@ def run_diagnostic(): for output_directory in existing: logger.info("Removing %s", output_directory) shutil.rmtree(output_directory) - else: + elif not args.ignore_existing: logger.error( "Script will abort to prevent accidentally overwriting your " "data in these directories:\n%s\n" - "Use -f or --force to force emptying the output directories.", - '\n'.join(existing)) + "Use -f or --force to force emptying the output directories " + "or use -i or --ignore-existing to ignore existing output " + "directories.", '\n'.join(existing)) for output_directory in output_directories: logger.info("Creating %s", output_directory) + if args.ignore_existing and os.path.exists(output_directory): + continue os.makedirs(output_directory) yield cfg diff --git a/esmvaltool/diag_scripts/shared/_diag.py b/esmvaltool/diag_scripts/shared/_diag.py new file mode 100644 index 0000000000..01e6cfbfa9 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/_diag.py @@ -0,0 +1,797 @@ +"""Convenience classes and functions to implement python diagnostics. + +Example +------- +Import and use these basic classes by e.g.:: + + import esmvaltool.diag_scripts.shared as e + datasets = e.Datasets(cfg) + variables = e.Variables(cfg) + +Notes +----- +An example diagnostic using these classes is given in +`diag_scripts/examples/diagnostic_object_oriented.py`. + +""" + + +import collections +import logging + +from . import names as n + +logger = logging.getLogger(__name__) + + +# Global variables +DEFAULT_INFO = 'not_specified' + + +# Variable class containing all relevant information +Variable = collections.namedtuple('Variable', [n.SHORT_NAME, + n.STANDARD_NAME, + n.LONG_NAME, + n.UNITS]) + + +class Variables(object): + """Class to easily access a recipe's variables in a diagnostic. + + Examples + -------- + Get all variables of a recipe configuration `cfg`:: + + variables = Variables(cfg) + + Access information of a variable `tas`:: + + variables.short_name('tas') + variables.standard_name('tas') + variables.long_name('tas') + variables.units('tas') + + Access :mod:`iris`-suitable dictionary of a variable `tas`:: + + variables.iris_dict('tas') + + Check if variables `tas` and `pr` are available:: + + variables.vars_available('tas', 'pr') + + """ + + def __init__(self, cfg=None, **names): + """Load variables. + + Parameters + ---------- + cfg : dict, optional + Configuation dictionary of the recipe. + **names : dict or Variable, optional + Keyword arguments of the form `short_name=Variable_object` where + `Variable_object` can be given as :obj:`dict` or :class:`Variable`. + + """ + self._dict = {} + + # Add variables from cfg file + if cfg is not None: + success = True + if isinstance(cfg, dict): + data = cfg.get(n.INPUT_DATA) + if isinstance(data, dict): + for info in data.values(): + name = info.get(n.SHORT_NAME, DEFAULT_INFO) + attr = Variable( + name, + info.get(n.STANDARD_NAME, DEFAULT_INFO), + info.get(n.LONG_NAME, DEFAULT_INFO), + info.get(n.UNITS, DEFAULT_INFO)) + self._add_to_dict(name, attr) + else: + success = False + else: + success = False + if not success: + logger.warning("%s is not a valid configuration file!", cfg) + if not self._dict: + logger.warning("Empty recipe configuration: the automatic " + "import of variables does not work for chained " + "scripts (using 'ancestors' key)") + + # Add costum variables + self.add_vars(**names) + if not self._dict: + logger.warning("No variables found!") + + def __repr__(self): + """Representation of the class.""" + output = '' + for (name, attr) in self._dict.items(): + output += '{}: {}\n'.format(name, attr) + return output + + def _add_to_dict(self, name, attr): + """Add variable to class dictionary. + + Parameters + ---------- + name : str + `short_name` of the variable. + attr : Variable + All other information of the variable. + + """ + if name not in self._dict: + logger.debug("Added variable '%s' to collection", name) + self._dict[name] = attr + + def add_vars(self, **names): + """Add costum variables to the class. + + Parameters + ---------- + **names : dict or Variable, optional + Keyword arguments of the form `short_name=Variable_object` where + `Variable_object` can be given as :obj:`dict` or :class:`Variable`. + + """ + for (name, attr) in names.items(): + if isinstance(attr, Variable): + attr_var = attr + else: + attr_var = Variable( + name, + attr.get(n.STANDARD_NAME, DEFAULT_INFO), + attr.get(n.LONG_NAME, DEFAULT_INFO), + attr.get(n.UNITS, DEFAULT_INFO)) + self._add_to_dict(name, attr_var) + + def iris_dict(self, var): + """Access :mod:`iris` dictionary of the variable. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + dict + Dictionary containing all attributes of the variable which can be + used directly in :mod:`iris` (`short_name` replaced by `var_name`). + + """ + iris_dict = self._dict[var]._asdict() + iris_dict[n.VAR_NAME] = iris_dict.pop(n.SHORT_NAME) + return iris_dict + + def long_name(self, var): + """Access long name. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + str + Long name of the variable. + + """ + return getattr(self._dict[var], n.LONG_NAME) + + def modify_var(self, var, **names): + """Modify an already existing variable of the class. + + Parameters + ---------- + var : str + (Short) name of the existing variable. + **names + Keyword arguments of the form `short_name=tas`. + + Raises + ------ + ValueError + If `var` is not an existing variable. + TypeError + If a non-valid keyword argument is given. + + """ + if var not in self._dict: + raise ValueError("Variable '{}' does not exist yet and cannot be " + "modified".format(var)) + old_var = self._dict.pop(var) + new_var = {} + for name in Variable._fields: + new_var[name] = names.pop(name, getattr(old_var, name)) + + # Check if names is not empty (=non-valid keyword argument given) + if names: + raise TypeError("Non-valid keyword arguments " + "given: {}".format(names)) + new_var = Variable(**new_var) + self._add_to_dict(var, new_var) + + def short_name(self, var): + """Access short name. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + str + Short name of the variable. + + """ + return getattr(self._dict[var], n.SHORT_NAME) + + def short_names(self): + """Get list of all `short_names`. + + Returns + ------- + list + List of all `short_names`. + + """ + return list(self._dict) + + def standard_name(self, var): + """Access standard name. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + str + Standard name of the variable. + + """ + return getattr(self._dict[var], n.STANDARD_NAME) + + def standard_names(self): + """Get list of all `standard_names`. + + Returns + ------- + list + List of all `standard_names`. + + """ + return [self.standard_name(name) for name in self._dict] + + def units(self, var): + """Access units. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + str + Units of the variable. + + """ + return getattr(self._dict[var], n.UNITS) + + def var_name(self, var): + """Access var name. + + Parameters + ---------- + var : str + (Short) name of the variable. + + Returns + ------- + str + Var name (=short name) of the variable. + + """ + return getattr(self._dict[var], n.SHORT_NAME) + + def vars_available(self, *args): + """Check if given variables are available. + + Parameters + ---------- + *args + Short names of the variables to be tested. + + Returns + ------- + bool + `True` if variables are available, `False` if not. + + """ + for var in args: + if var not in self._dict: + return False + return True + + +class Datasets(object): + """Class to easily access a recipe's datasets in a diagnostic script. + + Examples + -------- + Get all variables of a recipe configuration `cfg`:: + + datasets = Datasets(cfg) + + Access data of a dataset with path `dataset_path`:: + + datasets.get_data(path=dataset_path) + + Access dataset information of the dataset:: + + datasets.get_dataset_info(path=dataset_path) + + Access the data of all datasets with `exp=piControl`:: + + datasets.get_data_list(exp=piControl) + + """ + + def __init__(self, cfg): + """Load datasets. + + Load all datasets of the recipe and store them in three internal + :obj:`dict`/:obj:`list` containers: `self._paths`, `self._data` and + `self._datasets`. + + Parameters + ---------- + cfg : dict, optional + Configuation dictionary of the recipe. + + Raises + ------ + TypeError + If recipe configuration dictionary is not valid. + + """ + self._iter_counter = 0 + self._paths = [] + self._data = {} + success = True + if isinstance(cfg, dict): + input_data = cfg.get(n.INPUT_DATA) + if isinstance(input_data, dict): + for path in input_data: + dataset_info = input_data[path] + if not isinstance(dataset_info, dict): + success = False + break + self._paths.append(path) + self._data[path] = None + self._datasets = input_data + else: + success = False + else: + success = False + if not success: + raise TypeError("{} is not a valid configuration " + "file".format(repr(cfg))) + self._n_datasets = len(self._paths) + if not self._paths: + logger.warning("No datasets found!") + logger.warning("Note: the automatic import of datasets does not " + "work for chained scripts (using 'ancestors' key)") + + def __repr__(self): + """Representation of the class.""" + output = '' + for path in self._datasets: + output += repr(self._datasets[path]) + '\n' + return output + + def __iter__(self): + """Allow iteration through class.""" + self._iter_counter = 0 + return self + + def __next__(self): + """Allow iteration through class.""" + if self._iter_counter >= self._n_datasets: + raise StopIteration() + next_element = self._paths[self._iter_counter] + self._iter_counter += 1 + return next_element + + def _is_valid_path(self, path): + """Check if path is in class. + + Parameters + ---------- + path : str + Path to be tested. + + Returns + ------- + bool + `True` if valid path, `False` if not. + + """ + if path in self._paths: + return True + logger.warning("%s is not a valid dataset path", path) + return False + + def _extract_paths(self, dataset_info, fail_when_ambiguous=False): + """Get all paths matching a given `dataset_info`. + + Parameters + ---------- + dataset_info : dict + Description of the desired datasets. + fail_when_ambiguous : bool, optional + Raise an exception when retrieved paths are ambiguous. + + Returns + ------- + list + All matching paths. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous and + `fail_when_ambiguous` is set to `True`. + + """ + paths = list(self._datasets) + for info in dataset_info: + paths = [path for path in paths if + self._datasets[path].get(info) == dataset_info[info]] + if not paths: + logger.warning("%s does not match any dataset", dataset_info) + return paths + if not fail_when_ambiguous: + return sorted(paths) + if len(paths) > 1: + msg = 'Given dataset information is ambiguous' + logger.error(msg) + raise RuntimeError(msg) + return sorted(paths) + + def add_dataset(self, path, data=None, **dataset_info): + """Add dataset to class. + + Parameters + ---------- + path : str + (Unique) path to the dataset. + data: optional + Arbitrary object to be saved as data for the dataset. + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + """ + if path in self._paths: + logger.warning("%s already exists! Overwriting old data", path) + self._paths.remove(path) + self._paths.append(path) + self._data[path] = data + self._datasets[path] = dataset_info + + def add_to_data(self, data, path=None, **dataset_info): + """Add element to a dataset's data. + + Notes + ----- + Either `path` or a unique `dataset_info` description have to be given. + Fails when given information is ambiguous. + + Parameters + ---------- + data + Element to be added to the dataset's data. + path : str, optional + Path to the dataset + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + if path is not None: + if self._is_valid_path(path): + self._data[path] += data + return None + return None + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if paths: + self._data[paths[0]] += data + return None + + def get_data(self, path=None, **dataset_info): + """Access a dataset's data. + + Notes + ----- + Either `path` or a unique `dataset_info` description have to be + given. Fails when given information is ambiguous. + + Parameters + ---------- + path : str, optional + Path to the dataset + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + `data_object` + Data of the selected dataset. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + if path is not None: + if self._is_valid_path(path): + return self._data.get(path) + return None + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if not paths: + return None + return self._data[paths[0]] + + def get_data_list(self, **dataset_info): + """Access the datasets' data in a list. + + Notes + ----- + The returned data is sorted alphabetically respective to the `paths`. + + Parameters + ---------- + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + list + Data of the selected datasets. + + """ + paths = self._extract_paths(dataset_info) + return [self._data[path] for path in paths] + + def get_dataset_info(self, path=None, **dataset_info): + """Access a dataset's information. + + Notes + ----- + Either `path` or a unique `dataset_info` description have to be + given. Fails when given information is ambiguous. + + Parameters + ---------- + path : str, optional + Path to the dataset. + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + dict + All dataset information. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + if path is not None: + if self._is_valid_path(path): + return self._datasets.get(path) + return None + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if not paths: + return None + return self._datasets[paths[0]] + + def get_dataset_info_list(self, **dataset_info): + """Access dataset's information in a list. + + Notes + ----- + The returned data is sorted alphabetically respective to the `paths`. + + Parameters + ---------- + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + list + Information dictionaries of the selected datasets. + + """ + paths = self._extract_paths(dataset_info) + return [self._datasets[path] for path in paths] + + def get_info(self, key, path=None, **dataset_info): + """Access a 'dataset_info`'s `key`. + + Notes + ----- + Either `path` or a unique `dataset_info` description have to be + given. Fails when given information is ambiguous. If the `dataset_info` + does not contain the `key`, returns None. + + Parameters + ---------- + key : str + Desired dictionary key. + path : str + Path to the dataset. + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + str + `key` information of the given dataset. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + if path is not None: + if self._is_valid_path(path): + output = self._datasets[path].get(key) + if output is None: + logger.warning("Dataset %s does not contain '%s' " + "information", path, key) + return output + return None + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if not paths: + return None + output = self._datasets[paths[0]].get(key) + if output is None: + logger.warning("Dataset %s does not contain '%s' information", + path, key) + return output + + def get_info_list(self, key, **dataset_info): + """Access `dataset_info`'s `key` values. + + Notes + ----- + The returned data is sorted alphabetically respective to the `paths`. + + Parameters + ---------- + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + list + `key` information of the selected datasets. + + """ + paths = self._extract_paths(dataset_info) + output = [self._datasets[path].get(key) for path in paths] + if None in output: + logger.warning("One or more datasets do not contain '%s' " + "information", key) + return output + + def get_path(self, **dataset_info): + """Access a dataset's path. + + Notes + ----- + A unique `dataset_info` description has to be given. Fails when given + information is ambiguous. + + Parameters + ---------- + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + str + Path of the selected dataset. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if not paths: + return None + return paths[0] + + def get_path_list(self, **dataset_info): + """Access dataset's paths in a list. + + Notes + ----- + The returned data is sorted alphabetically respective to the `paths`. + + Parameters + ---------- + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Returns + ------- + list + Paths of the selected datasets. + + """ + return self._extract_paths(dataset_info) + + def set_data(self, data, path=None, **dataset_info): + """Set element as a dataset's data. + + Notes + ----- + Either `path` or a unique `dataset_info` description have to be + given. Fails when if given information is ambiguous. + + Parameters + ---------- + data + Element to be set as the dataset's data. + path : str, optional + Path to the dataset. + **dataset_info: optional + Keyword arguments describing the dataset, e.g. `dataset=CanESM2`, + `exp=piControl` or `short_name=tas`. + + Raises + ------ + RuntimeError + If data given by `dataset_info` is ambiguous. + + """ + if path is not None: + if self._is_valid_path(path): + self._data[path] = data + return None + return None + paths = self._extract_paths(dataset_info, fail_when_ambiguous=True) + if paths: + self._data[paths[0]] = data + return None diff --git a/esmvaltool/diag_scripts/shared/ensemble.ncl b/esmvaltool/diag_scripts/shared/ensemble.ncl index 838730ea37..0056d57c82 100644 --- a/esmvaltool/diag_scripts/shared/ensemble.ncl +++ b/esmvaltool/diag_scripts/shared/ensemble.ncl @@ -20,17 +20,17 @@ load "./diag_scripts/shared/statistics.ncl" ; ############################################################################# undef("get_start_year") -function get_start_year(model_index[1]:numeric) +function get_start_year(dataset_index[1]:numeric) ; ; Arguments: -; model_index: index of array "models"; this function is supposed to be -; called inside a model loop +; dataset_index: index of array "datasets"; this function is supposed to be +; called inside a dataset loop ; ; Return value ; An integer containing the first year ; ; Description -; Chooses first year of model input with respect to +; Chooses first year of dataset input with respect to ; diag_script_info@range_option ; ; Caveats @@ -40,7 +40,7 @@ function get_start_year(model_index[1]:numeric) ; Modification history ; 20140128-A_senf_da: written. ; -local funcname, scriptname, model_index +local funcname, scriptname, dataset_index begin funcname = "get_start_year" @@ -52,9 +52,9 @@ begin "contain the range_option attribute") end if if (diag_script_info@range_option.eq.0) then - start_year = toint(model_info@start_year(model_index)) + start_year = toint(dataset_info@start_year(dataset_index)) else if (diag_script_info@range_option.eq.1) then - start_year = max(toint(model_info@start_year)) + start_year = max(toint(dataset_info@start_year)) else error_msg("f", "ensemble.ncl", funcname, "range_option not " + \ "properly set, must be either 0 or 1") @@ -68,17 +68,17 @@ end ; ############################################################################# undef("get_end_year") -function get_end_year(model_index:numeric) +function get_end_year(dataset_index:numeric) ; ; Arguments -; model_index: index of array "models"; this function is supposed to be -; called inside a model loop +; dataset_index: index of array "datasets"; this function is supposed to be +; called inside a dataset loop ; ; Return value ; An integer containing the last year ; ; Description -; Chooses last year of model input with respect to +; Chooses last year of dataset input with respect to ; diag_script_info@range_option ; ; Caveats @@ -88,7 +88,7 @@ function get_end_year(model_index:numeric) ; Modification history ; 20140128-A_senf_da: written. ; -local funcname, scriptname, model_index +local funcname, scriptname, dataset_index begin funcname = "get_end_year" @@ -100,9 +100,9 @@ begin "contain the range_option attribute") end if if (diag_script_info@range_option.eq.0) then - end_year = toint(model_info@end_year(model_index)) + end_year = toint(dataset_info@end_year(dataset_index)) else if (diag_script_info@range_option.eq.1) then - end_year = min(toint(model_info@end_year)) + end_year = min(toint(dataset_info@end_year)) else error_msg("f", "ensemble.ncl", funcname, "range_option not " + \ "properly set, must be either 0 or 1") @@ -125,7 +125,7 @@ function multi_model_stats(idx[*]:integer, opt[1]) ; ; Arguments -; idx: a 1-D array of model indexes to be considered. +; idx: a 1-D array of dataset indexes to be considered. ; var: variable name. ; field: field type. ; grd: type of grid to be selected: @@ -134,20 +134,20 @@ function multi_model_stats(idx[*]:integer, ; statistics: a 1-D array of strings for selecting the statistical ; fields to return. Currently implemented: ; "model_mean" -> multi model mean -; "stddev" -> standard deviation over "models" dimension +; "stddev" -> standard deviation over "datasets" dimension ; "model_grd" -> models regridded to a common grid ; opt: not used yet, set to 0 ; ; Return value ; A field with target grid spatial dimensions (lat, lon) or -; (plev, lat, lon), time coordinate, models coordinate. -; The "models" coordinate contains the strings from model_info@model and -; statistics. -; Covers the overlapping time period of all models only. +; (plev, lat, lon), time coordinate, datasets coordinate. +; The "datasets" coordinate contains the strings from dataset_info@dataset +; and statistics. +; Covers the overlapping time period of all datasets only. ; ; Description -; Determines statistical fields of all input models, after regridding them -; to a common grid. Statistics is over the "models" coordinate only. +; Determines statistical fields of all input datasets, after regridding them +; to a common grid. Statistics is over the "datasets" coordinate only. ; See function find_destination_grid (regridding.ncl) for details of ; target grid selection. ; @@ -165,7 +165,7 @@ function multi_model_stats(idx[*]:integer, ; local funcname, scriptname, dest_grd, monotonicity, field_type, rank_grd, \ start_year, end_year, idx_mod, var_tmp, var_olap, var_grd, data_mmm, \ - plev_grd, ireturn, tmp, model, Fill, stats, nstats, tmp, iMod, \ + plev_grd, ireturn, tmp, dataset, Fill, stats, nstats, tmp, iMod, \ interpol_flag, nvalid, var_plev, result begin @@ -192,20 +192,20 @@ begin end if ; Determine overlapping time period - start_year = max(toint(model_info@start_year)) - end_year = min(toint(model_info@end_year)) + start_year = max(toint(dataset_info@start_year)) + end_year = min(toint(dataset_info@end_year)) log_info("overlapping time period: " + tostring(start_year) + \ " - " + tostring(end_year)) - ; Create data structure for mmm models + ; Create data structure for mmm datasets do i = 0, dimsizes(idx) - 1 idx_mod = idx(i) data_mmm = read_data(idx_mod, var, field) end do - ; Loop over mmm models + ; Loop over mmm datasets do i = 0, dimsizes(idx) - 1 - model = model_info@model(idx(i)) + dataset = dataset_info@dataset(idx(i)) ; extract full data var_tmp = extract_data(i, data_mmm, -1, 0, 0) @@ -237,7 +237,7 @@ begin var_grd!3 = "lon" end if end if - var_grd!0 = "models" + var_grd!0 = "datasets" var_grd!1 = "time" var_grd&time = var_olap&time var_grd&lat = dest_grd&lat @@ -246,10 +246,11 @@ begin ; implemented statistics, hardcoded positions stats = (/"model_mean", "stddev"/) nstats = dimsizes(stats) - var_grd&models = array_append_record(stats, model_info@model(idx), 0) + var_grd&datasets = \ + array_append_record(stats, dataset_info@dataset(idx), 0) ; select return fields - tmp = new(dimsizes(var_grd&models), integer) + tmp = new(dimsizes(var_grd&datasets), integer) if (any("model_mean" .eq. statistics)) then tmp(0) = 1 end if @@ -259,7 +260,7 @@ begin if (any("model_grd" .eq. statistics)) then tmp(nstats:) = 1 end if - ireturn = ind(tmp.eq.1) ; selected indices of models coordinate + ireturn = ind(tmp.eq.1) ; selected indices of datasets coordinate delete(tmp) end if ; target field initialization ********************************* iMod = nstats + i @@ -272,12 +273,12 @@ begin if (dimsizes(var_olap&time).ne.dimsizes(var_grd&time)) then error_msg("f", "ensemble.ncl", funcname, \ "inconsistent number of time steps for " + \ - var_grd&models(iMod)) + var_grd&datasets(iMod)) end if if (any(var_olap&time.ne.var_grd&time)) then error_msg("f", "ensemble.ncl", funcname, \ "inconsistent time coordinate for " + \ - var_grd&models(iMod)) + var_grd&datasets(iMod)) end if ; pressure interpolation ********************************************* @@ -288,7 +289,7 @@ begin ; check consistency of pressure levels if (isMonotonic(var_olap&plev).eq.0) then ; crash error_msg("f", "ensemble.ncl", funcname, \ - "plev is not monotonic for " + var_grd&models(iMod)) + "plev is not monotonic for " + var_grd&datasets(iMod)) end if if (isMonotonic(var_olap&plev).ne.monotonicity) then var_olap = var_olap(:, ::-1, :, :) ; reverse @@ -339,7 +340,7 @@ begin end if ; lat-lon interpolation *************************************** ; clean up delete([/var_olap/]) - end do ; i (loop over mmm models) + end do ; i (loop over mmm datasets) ; statistics if (rank_grd.eq.3) then diff --git a/esmvaltool/diag_scripts/shared/latlon.ncl b/esmvaltool/diag_scripts/shared/latlon.ncl index 662a92b605..23374092fc 100644 --- a/esmvaltool/diag_scripts/shared/latlon.ncl +++ b/esmvaltool/diag_scripts/shared/latlon.ncl @@ -193,7 +193,7 @@ function extract_area(index[1]:integer, ; Modification history: ; 2013????-A_gott_kl: written. ; -local funcname, scriptname, cn, cnt, modelfile, fm, val +local funcname, scriptname, cn, cnt, datasetfile, fm, val begin funcname = "extract_area" @@ -205,9 +205,9 @@ begin ; 'dictkeys' is loaded from 'interface_data/ncl.interface' cn = interface_get_dictkeys(parent_var, index) cnt = cn + "_filepath" - modelfile = data_pointer@$cnt$ - print("modelfile = " + modelfile) - fm = addfile(modelfile, "r") + datasetfile = data_pointer@$cnt$ + print("datasetfile = " + datasetfile) + fm = addfile(datasetfile, "r") val = fm->$requested_param$ ; Fetch entire variable, including metadata leave_msg(scriptname, funcname) @@ -769,7 +769,7 @@ begin out_field = field ; Get lat-lon from another file - ; (model specific: ~/reformat_scripts folder) + ; (dataset specific: ~/reformat_scripts folder) area_lon = extract_area(index, data_pointer, "lon", var) area_lat = extract_area(index, data_pointer, "lat", var) @@ -798,7 +798,7 @@ function cdo_remapdis(var[1]:string, ; var = name of the variable ; field = a numeric array of rank 2 (lon, lat) or ; rank 3 (time, lon, lat), higher ranks not tested yet -; index = index of current model in data_pointer +; index = index of current dataset in data_pointer ; data_pointer = see interface_scripts/data_handling.ncl ; dst_grid = path to file containing destination grid information ; opt = unused diff --git a/esmvaltool/diag_scripts/shared/names.py b/esmvaltool/diag_scripts/shared/names.py new file mode 100644 index 0000000000..25dd656585 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/names.py @@ -0,0 +1,36 @@ +"""Convenience names for python diagnostics.""" + +import logging + +logger = logging.getLogger(__name__) + + +DAY_M = 'day_of_month' +DAY_Y = 'day_of_year' +HEIGHT = 'height' +LAT = 'latitude' +LON = 'longitude' +MONTH = 'month_number' +TIME = 'time' +YEAR = 'year' + +DATASET = 'dataset' +EXP = 'exp' +LONG_NAME = 'long_name' +OBS = 'OBS' +PROJECT = 'project' +SHORT_NAME = 'short_name' +STANDARD_NAME = 'standard_name' +UNITS = 'units' +VAR_NAME = 'var_name' + +INPUT_DATA = 'input_data' +INPUT_FILES = 'input_files' +METADATA_YAML_FILE = 'metadata.yml' +OUTPUT_FILE_TYPE = 'output_file_type' +PLOT_DIR = 'plot_dir' +SCRIPT = 'script' +VERSION = 'version' +WORK_DIR = 'work_dir' +WRITE_NETCDF = 'write_netcdf' +WRITE_PLOTS = 'write_plots' diff --git a/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl b/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl index 9dd6ccce8f..91a4b24762 100644 --- a/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl +++ b/esmvaltool/diag_scripts/shared/plot/GO_panels.ncl @@ -105,7 +105,7 @@ begin ; ------------------------------------- ; Plot model entry (first plot) ; ------------------------------------- - main_title_prefix = "" ; model_info@model(idx_mod) + main_title_prefix = "" ; dataset_info@dataset(idx_mod) main_title_suffix = "" res = panel_two_by_one(res, 0) ; Update resource for second plot @@ -300,7 +300,7 @@ begin ; Plot mean of differences of first and second data set, first ; interpolate to the reference data set grid (conservative interpolation) - diff_model_ref = get_model_minus_ref(curr, ref) + diff_model_ref = get_dataset_minus_ref(curr, ref) plot_settings@type = "diff" plot_settings@skip_default_title = True statistics = True @@ -358,7 +358,7 @@ local aux_title_info, cn_levels_string, curr, diag_description, \ textres, var0, wks, diff_model_ref, txres begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -467,7 +467,7 @@ local aux_title_info, cn_levels_string, curr, diag_description, \ textres, var0, wks, diff_model_ref, txres begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -659,7 +659,7 @@ begin plot_settings@idx = idx_mod ; Interpolate to reference grid for pattern correlation calculation - diff_model_ref = get_model_minus_ref(speed, speed_ref) + diff_model_ref = get_dataset_minus_ref(speed, speed_ref) statistics = True statistics = \ @@ -694,9 +694,9 @@ begin ; Plot mean of differnces of first and second data set, first ; interpolate to the reference data set grid (bilinear interpolation) - diff_model_ref = get_model_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_model_minus_ref(ua, ua_ref) - diff_model_va_ref = get_model_minus_ref(va, va_ref) + 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 @@ -773,7 +773,7 @@ local aux_title_info, cn_levels_string, curr, diag_description, \ output_file_path, plot, plot_diff, plot_ref, ref, res, storage_record, \ textres, var0, wks, wks_debug, txres begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) var1 = variables(1) @@ -1000,7 +1000,7 @@ begin 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_model_minus_ref(curr, ref) + diff_model_ref = get_dataset_minus_ref(curr, ref) delete(curr) curr = diff_model_ref delete(diff_model_ref) @@ -1147,7 +1147,7 @@ begin ; Which model goes where on each page? figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(model_info, \ + place_models_on_pages(dataset_info, \ plot_settings@idx_ref, \ figures_per_page, \ model_panel_placement, \ @@ -1410,9 +1410,9 @@ begin statistics = compute_stat((/"rmse"/), valid_statistics, speed, speed_ref) ; ua/va/speed field interpolation - diff_model_ref = get_model_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_model_minus_ref(ua, ua_ref) - diff_model_va_ref = get_model_minus_ref(va, va_ref) + 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 @@ -1530,7 +1530,7 @@ local aux_title_info, blank_plot, cn_levels_string, cols, curr_fig, \ total_no_of_pages, txres, type_specifier, ua, ua_ref, va, var0, var1, \ va_ref, wks, plot_ref_v begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -1578,7 +1578,7 @@ begin ; Which model goes where on each page? figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(model_info, \ + place_models_on_pages(dataset_info, \ plot_settings@idx_ref, \ figures_per_page, \ model_panel_placement, \ @@ -1707,7 +1707,7 @@ local am_infobox_id, am_labelbar_id, amres, debugbox, diag_script_base, \ precip_seasonal_maxY, precip_seasonal_minY, precip_seasonal_spreadY, res, \ storage_record, txres, var0, wks, xaxis, var1, field_type1 begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -1785,7 +1785,7 @@ begin ; Plot loop ; --------- do idx_mod = 0, dim_MOD - 1 - labels(idx_mod) = model_info@model(idx_mod) + labels(idx_mod) = dataset_info@dataset(idx_mod) res@gsnXYBarChartColors = di@colors_seasonal(idx_mod) ; Shift plot to the right and draw/redraw @@ -1865,7 +1865,7 @@ local annots, annots_mmm, avgstd, avgstd_mmm, colors, colors_mmm, dashes, \ storage_record, temp, thicks, thicks_mmm, values, values_stddev, \ values_stddev, var0, var1, wks, wks_debug begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -1930,9 +1930,9 @@ begin models = getvaratts(temp) do i = 0, dimsizes(models) - 1 ; Define all original attributes again, but empty - model_info@$models(i)$ = "" + dataset_info@$models(i)$ = "" end do - model_info@model = "model_mean" + dataset_info@dataset = "model_mean" ; See ./diag_scripts/shared/plot/style.ncl colors_mmm = project_style(diag_script_info, "colors") @@ -2010,7 +2010,7 @@ local annots, avgstd, diag_script_base, dim_VAR, field_type0, field_type1, \ storage_record, temp, val_area_stddev, values, values_stddev, var0, var1, \ wks, wks_debug begin - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2054,8 +2054,8 @@ begin end if ; Determine time range - start_year = min(stringtoint(model_info@start_year)) - end_year = max(stringtoint(model_info@end_year)) + start_year = min(stringtoint(dataset_info@start_year)) + end_year = max(stringtoint(dataset_info@end_year)) ; Select attributes annots = project_style(diag_script_info, "annots") diff --git a/esmvaltool/diag_scripts/shared/plot/__init__.py b/esmvaltool/diag_scripts/shared/plot/__init__.py index 8211407779..d6998563c8 100644 --- a/esmvaltool/diag_scripts/shared/plot/__init__.py +++ b/esmvaltool/diag_scripts/shared/plot/__init__.py @@ -3,6 +3,18 @@ import matplotlib matplotlib.use('Agg') # noqa -from ._plot import quickplot +from ._plot import ( + get_path_to_mpl_style, + get_dataset_style, + quickplot, + multi_dataset_scatterplot, + scatterplot, +) -__all__ = ['quickplot'] +__all__ = [ + 'get_path_to_mpl_style', + 'get_dataset_style', + 'quickplot', + 'multi_dataset_scatterplot', + 'scatterplot', +] diff --git a/esmvaltool/diag_scripts/shared/plot/_plot.py b/esmvaltool/diag_scripts/shared/plot/_plot.py index 3ae2e728a8..00c06f3720 100644 --- a/esmvaltool/diag_scripts/shared/plot/_plot.py +++ b/esmvaltool/diag_scripts/shared/plot/_plot.py @@ -1,5 +1,7 @@ """Common plot functions.""" import logging +import os +import yaml import iris.quickplot import matplotlib.pyplot as plt @@ -7,11 +9,287 @@ logger = logging.getLogger(__name__) +def _process_axes_functions(axes, axes_functions): + """Process axes functions of the form `axes.functions(*args, **kwargs).""" + if axes_functions is None: + return None + output = None + for (func, attr) in axes_functions.items(): + axes_function = getattr(axes, func) + + # Simple functions (argument directly given) + if not isinstance(attr, dict): + try: + out = axes_function(*attr) + except TypeError: + out = axes_function(attr) + + # More complicated functions (args and kwargs given) + else: + args = attr.get('args', []) + kwargs = attr.get('kwargs', {}) + + # Process 'transform' kwargs + if 'transform' in kwargs: + kwargs['transform'] = getattr(axes, kwargs['transform']) + out = axes_function(*args, **kwargs) + + # Return legend if possible + if func == 'legend': + output = out + return output + + +def _check_size_of_parameters(*args): + """Check if the size of (array-like) args is identical.""" + if len(args) < 2: + logger.warning("Less than two arguments given, comparing not possible") + return + arg_0 = args[0] + for arg in args: + try: + if len(arg_0) != len(arg): + raise ValueError("Invalid input: array-like parameters need " + "to have the same size") + except TypeError: + raise TypeError("Invalid input: some parameters are not " + "array-like") + return + + +def get_path_to_mpl_style(style_file=None): + """Get path to matplotlib style file.""" + if style_file is None: + style_file = 'default.mplstyle' + if not isinstance(style_file, str): + raise TypeError("Invalid input: {} is not a " + "string".format(style_file)) + base_dir = os.path.dirname(__file__) + filepath = os.path.join(base_dir, 'styles_python', 'matplotlib', + style_file) + logger.debug("Using matplotlib style: %s", filepath) + return filepath + + +def get_dataset_style(dataset, style_file=None): + """Retrieve the style information for the given dataset.""" + # Default path + if style_file is None: + style_file = 'cmip5.yml' + base_dir = os.path.dirname(__file__) + default_dir = os.path.join(base_dir, 'styles_python') + + # Check if style_file is valid + filepath = os.path.join(default_dir, style_file) + if os.path.isfile(filepath): + with open(filepath, 'r') as infile: + style = yaml.safe_load(infile) + else: + raise IOError("Invalid input: could not open style file " + "'{}'".format(filepath)) + logger.debug("Using style file %s for dataset %s", filepath, dataset) + + # Check if file has entry for unknown dataset + default_dataset = 'default' + options = ['color', 'dash', 'thick', 'mark', 'avgstd', 'facecolor'] + if default_dataset not in style: + raise IOError("Style file '{}' does not contain default information " + "for unknown datasets".format(filepath)) + for option in options: + if option not in style[default_dataset]: + raise IOError("Style file '{}' does not contain '{}' default " + "information for unknown " + "datasets".format(filepath, option)) + + # Check if dataset is available + if not style.get(dataset): + logger.warning("Dataset '%s' not found in style file, using default " + + "entry", dataset) + return style[default_dataset] + + # Get compulsory information + for option in options: + if option not in style[dataset]: + logger.warning("No style information '%s' found for dataset " + + "'%s', using default value for unknown datasets", + option, dataset) + style[dataset].update({option: style[default_dataset][option]}) + + return style[dataset] + + def quickplot(cube, filename, plot_type, **kwargs): """Plot a cube using one of the iris.quickplot functions.""" logger.debug("Creating '%s' plot %s", plot_type, filename) plot_function = getattr(iris.quickplot, plot_type) fig = plt.figure() plot_function(cube, **kwargs) - plt.gca().coastlines() + # plt.gca().coastlines() fig.savefig(filename) + + +def multi_dataset_scatterplot(x_data, y_data, datasets, filepath, **kwargs): + """Plot a multi dataset scatterplot. + + Notes + ----- + Allowed keyword arguments: + + * `mpl_style_file` (:obj:`str`): Path to the matplotlib style file. + + * `dataset_style_file` (:obj:`str`): Path to the dataset style file. + + * `plot_kwargs` (`array-like`): Keyword arguments for the plot (e.g. + `label`, `makersize`, etc.). + + * `save_kwargs` (:obj:`dict`): Keyword arguments for saving the plot. + + * `axes_functions` (:obj:`dict`): Arbitrary functions for axes, i.e. + `axes.set_title('title')`. + + Parameters + ---------- + x_data : array-like + x data of each dataset. + y_data : array-like + y data of each dataset. + datasets : array-like + Names of the datasets. + filepath : str + Path to which plot is written. + **kwargs + Keyword arguments. + + Raises + ------ + TypeError + A non-valid keyword argument is given or `x_data`, `y_data`, `datasets` + or (if given) `plot_kwargs` is not array-like. + ValueError + `x_data`, `y_data`, `datasets` or `plot_kwargs` do not have the same + size. + + """ + # Allowed kwargs + allowed_kwargs = [ + 'mpl_style_file', + 'dataset_style_file', + 'plot_kwargs', + 'save_kwargs', + 'axes_functions', + ] + for kwarg in kwargs: + if kwarg not in allowed_kwargs: + raise TypeError("{} is not a valid keyword argument".format(kwarg)) + + # Check parameters + _check_size_of_parameters(x_data, y_data, datasets, + kwargs.get('plot_kwargs', x_data)) + empty_dict = [{} for _ in x_data] + + # Create matplotlib instances + plt.style.use(get_path_to_mpl_style(kwargs.get('mpl_style_file'))) + (fig, axes) = plt.subplots() + + # Plot data + for (idx, dataset) in enumerate(datasets): + style = get_dataset_style(dataset, kwargs.get('dataset_styles_file')) + + # Fix problem when plotting ps file + facecolor = style['color'] if filepath.endswith('ps') else \ + style['facecolor'] + + # Plot + axes.plot(x_data[idx], y_data[idx], + markeredgecolor=style['color'], + markerfacecolor=facecolor, + marker=style['mark'], + **(kwargs.get('plot_kwargs', empty_dict)[idx])) + + # Costumize plot + legend = _process_axes_functions(axes, kwargs.get('axes_functions')) + + # Save plot + fig.savefig(filepath, additional_artists=[legend], + **kwargs.get('save_kwargs', {})) + logger.info("Writing %s", filepath) + plt.close() + + +def scatterplot(x_data, y_data, filepath, **kwargs): + """Plot a multi dataset scatterplot. + + Notes + ----- + Allowed keyword arguments: + + * `mpl_style_file` (:obj:`str`): Path to the matplotlib style file. + + * `plot_kwargs` (`array-like`): Keyword arguments for the plot (e.g. + `label`, `makersize`, etc.). + + * `save_kwargs` (:obj:`dict`): Keyword arguments for saving the plot. + + * `axes_functions` (:obj:`dict`): Arbitrary functions for axes, i.e. + `axes.set_title('title')`. + + Parameters + ---------- + x_data : array-like + x data of each dataset. + y_data : array-like + y data of each dataset. + filepath : str + Path to which plot is written. + **kwargs + Keyword arguments. + + Raises + ------ + TypeError + A non-valid keyword argument is given or `x_data`, `y_data` or (if + given) `plot_kwargs` is not array-like. + ValueError + `x_data`, `y_data` or `plot_kwargs` do not have the same size. + + """ + # Allowed kwargs + allowed_kwargs = [ + 'mpl_style_file', + 'plot_kwargs', + 'save_kwargs', + 'axes_functions', + ] + for kwarg in kwargs: + if kwarg not in allowed_kwargs: + raise TypeError("{} is not a valid keyword argument".format(kwarg)) + + # Check parameters + _check_size_of_parameters(x_data, y_data, + kwargs.get('plot_kwargs', x_data)) + empty_dict = [{} for _ in x_data] + + # Create matplotlib instances + plt.style.use(get_path_to_mpl_style(kwargs.get('mpl_style_file'))) + (fig, axes) = plt.subplots() + + # Plot data + for (idx, x_vals) in enumerate(x_data): + plot_kwargs = kwargs.get('plot_kwargs', empty_dict)[idx] + + # Fix problem when plotting ps file + if 'markerfacecolor' in plot_kwargs and filepath.endswith('ps'): + plot_kwargs.pop('markerfacecolor') + + # Plot + axes.plot(x_vals, y_data[idx], + **(kwargs.get('plot_kwargs', empty_dict)[idx])) + + # Costumize plot + legend = _process_axes_functions(axes, kwargs.get('axes_functions')) + + # Save plot + fig.savefig(filepath, additional_artists=[legend], + **kwargs.get('save_kwargs', {})) + logger.info("Writing %s", filepath) + plt.close() diff --git a/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl b/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl index 0f1b4aff36..be08c5a609 100644 --- a/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl +++ b/esmvaltool/diag_scripts/shared/plot/aux_plotting.ncl @@ -105,7 +105,7 @@ begin ncols = 4 res@vpWidthF = 1.0 if (dim_LAB .gt. nrowmax * ncols) then - error_msg("f", "xy_line.ncl", funcname, "too many models") + error_msg("f", "xy_line.ncl", funcname, "too many datasets") end if end if nrows = toint(dim_LAB/tofloat(ncols)) diff --git a/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl b/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl index fd568c313f..8bacc48dce 100644 --- a/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl +++ b/esmvaltool/diag_scripts/shared/plot/mjo_level2.ncl @@ -665,7 +665,7 @@ begin pltSubTitle = "Anomalous: OLR, U850, V850" do nSeason = 1, 2 - aux_title_info = model_info@model(idx_mod) + "_" \ + aux_title_info = dataset_info@dataset(idx_mod) + "_" \ + di@season_life_cycle(nSeason - 1) output_filename = \ interface_get_figure_filename(diag_script_base, var0, field_type0,\ @@ -679,14 +679,14 @@ begin txid = gsn_create_text(wks, pltSubTitle, txres) if (nSeason .eq. 1) then - resP@txString = model_info@model(idx_mod) + ": "\ - + model_info@start_year(idx_mod) + "-"\ - + model_info@end_year(idx_mod)\ + resP@txString = dataset_info@dataset(idx_mod) + ": "\ + + dataset_info@start_year(idx_mod) + "-"\ + + dataset_info@end_year(idx_mod)\ + ": May to Oct" else - resP@txString = model_info@model(idx_mod) + ": "\ - + model_info@start_year(idx_mod) + "-"\ - + model_info@end_year(idx_mod)\ + resP@txString = dataset_info@dataset(idx_mod) + ": "\ + + dataset_info@start_year(idx_mod) + "-"\ + + dataset_info@end_year(idx_mod)\ + ": Nov to Apr" end if do n = 0, nPhase - 1 diff --git a/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl b/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl index f1164723a8..b352b26458 100644 --- a/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl +++ b/esmvaltool/diag_scripts/shared/plot/monsoon_domain_panels.ncl @@ -185,7 +185,7 @@ begin 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_model_minus_ref(curr, ref) + diff_model_ref = get_dataset_minus_ref(curr, ref) delete(curr) curr = diff_model_ref delete(diff_model_ref) @@ -299,7 +299,7 @@ begin scriptname = "plot_script/ncl/monsoon_domain_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -341,7 +341,7 @@ begin ; Which model goes where on each page? figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(model_info, \ + place_models_on_pages(dataset_info, \ plot_settings@idx_ref, \ figures_per_page, \ model_panel_placement, \ diff --git a/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl b/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl index 9dca75fcc3..4f875165f3 100644 --- a/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl +++ b/esmvaltool/diag_scripts/shared/plot/monsoon_panels.ncl @@ -402,7 +402,7 @@ begin ; Plot mean of differences of first and second data set, first ; interpolate to the reference data set grid (conservative interpolation) - diff_model_ref = get_model_minus_ref(curr, ref) + diff_model_ref = get_dataset_minus_ref(curr, ref) plot_settings@type = "diff" plot_settings@skip_default_title = True @@ -491,7 +491,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -634,7 +634,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -883,7 +883,7 @@ begin plot_settings@idx = idx_mod ; Interpolate to reference grid for pattern correlation calculation - diff_model_ref = get_model_minus_ref(speed, speed_ref) + diff_model_ref = get_dataset_minus_ref(speed, speed_ref) statistics = True statistics = \ @@ -918,9 +918,9 @@ begin ; Plot mean of differnces of first and second data set, first ; interpolate to the reference data set grid (bilinear interpolation) - diff_model_ref = get_model_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_model_minus_ref(ua, ua_ref) - diff_model_va_ref = get_model_minus_ref(va, va_ref) + 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 @@ -1025,7 +1025,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) var1 = variables(1) @@ -1312,7 +1312,7 @@ begin 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_model_minus_ref(curr, ref) + diff_model_ref = get_dataset_minus_ref(curr, ref) delete(curr) curr = diff_model_ref delete(diff_model_ref) @@ -1483,7 +1483,7 @@ begin ; Which model goes where on each page? figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(model_info, plot_settings@idx_ref, \ + place_models_on_pages(dataset_info, plot_settings@idx_ref, \ figures_per_page, model_panel_placement, \ figure_panel_placement) @@ -1806,9 +1806,9 @@ begin statistics = compute_stat((/"rmse"/), valid_statistics, speed, speed_ref) ; ua/va/speed field interpolation - diff_model_ref = get_model_minus_ref(speed, speed_ref) - diff_model_ua_ref = get_model_minus_ref(ua, ua_ref) - diff_model_va_ref = get_model_minus_ref(va, va_ref) + 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) @@ -1957,7 +1957,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2004,7 +2004,7 @@ begin ; Which model goes where on each page? figure_panel_placement = new((/sum(figures_per_page)/), integer) - place_models_on_pages(model_info, \ + place_models_on_pages(dataset_info, \ plot_settings@idx_ref, \ figures_per_page, \ model_panel_placement, \ @@ -2165,7 +2165,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2242,7 +2242,7 @@ begin ; Plot loop ; --------- do idx_mod = 0, dim_MOD - 1 - labels(idx_mod) = model_info@model(idx_mod) + labels(idx_mod) = dataset_info@dataset(idx_mod) res@gsnXYBarChartColors = di@colors_seasonal(idx_mod) ; Shift plot to the right and draw/redraw @@ -2348,7 +2348,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2414,7 +2414,7 @@ begin ; Define all original attributes again, but empty models@$models(i)$ = "" end do - model_info@model = "model_mean" + dataset_info@dataset = "model_mean" ; See ./diag_scripts/shared/plot/style.ncl colors_mmm = project_style(diag_script_info, "colors") @@ -2531,7 +2531,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@model) + dim_MOD = dimsizes(dataset_info@dataset) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2574,8 +2574,8 @@ begin end if ; Determine time range - start_year = min(stringtoint(model_info@start_year)) - end_year = max(stringtoint(model_info@end_year)) + start_year = min(stringtoint(dataset_info@start_year)) + end_year = max(stringtoint(dataset_info@end_year)) ; Select attributes annots = project_style(diag_script_info, "annots") @@ -2665,7 +2665,7 @@ begin scriptname = "diag_scripts/shared/plot/monsoon_panels.ncl" enter_msg(scriptname, funcname) - dim_MOD = dimsizes(model_info@name) + dim_MOD = dimsizes(dataset_info@name) dim_VAR = dimsizes(variables) var0 = variables(0) field_type0 = field_types(0) @@ -2706,8 +2706,8 @@ begin plot = new((/dim_MOD/), graphic) ; Determine time range - start_year = min(stringtoint(model_info@start_year)) - end_year = max(stringtoint(model_info@end_year)) + start_year = min(stringtoint(dataset_info@start_year)) + end_year = max(stringtoint(dataset_info@end_year)) ; Select attributes annots = project_style(diag_script_info, "annots") @@ -2741,9 +2741,9 @@ begin models = getvaratts(temp) ; use "models" to pass on attribute names do i = 0, dimsizes(models) - 1 ; Define all original attributes again, but empty - model_info@$models(i)$ = "" + dataset_info@$models(i)$ = "" end do - model_info@model = "model_mean" + dataset_info@dataset = "model_mean" ; See ./diag_scripts/shared/plot/style.ncl colors_mmm = project_style(diag_script_info, "colors") diff --git a/esmvaltool/diag_scripts/shared/plot/portrait_plot.ncl b/esmvaltool/diag_scripts/shared/plot/portrait_plot.ncl index dd832df81b..c14191be25 100644 --- a/esmvaltool/diag_scripts/shared/plot/portrait_plot.ncl +++ b/esmvaltool/diag_scripts/shared/plot/portrait_plot.ncl @@ -32,8 +32,8 @@ function portrait_plot(wks_in[1], ; source!1 = models ; ; source = (ndiag, nmod, nref) -; source(:,:,0) = reference model -; source(:,:,1) = alternative model (optional) +; source(:,:,0) = reference dataset +; source(:,:,1) = alternative dataset (optional) ; source!0 = diagnostics ; source!1 = models ; diff --git a/esmvaltool/diag_scripts/shared/plot/scatterplot.ncl b/esmvaltool/diag_scripts/shared/plot/scatterplot.ncl index 24888e772f..9fa57ddcc9 100644 --- a/esmvaltool/diag_scripts/shared/plot/scatterplot.ncl +++ b/esmvaltool/diag_scripts/shared/plot/scatterplot.ncl @@ -365,7 +365,7 @@ begin do imod = 0, dimsizes(data(0, :)) - 1 - ; Use a black marker for the reference model (i.e., MVI = 0) + ; Use a black marker for the reference dataset (i.e., MVI = 0) if (zpts(imod).ne.0) then idx = max(ind(zpts(imod).ge.levels)) resM@gsMarkerColor = colors(idx) diff --git a/esmvaltool/diag_scripts/shared/plot/style.ncl b/esmvaltool/diag_scripts/shared/plot/style.ncl index 7324abf539..de0f785a55 100644 --- a/esmvaltool/diag_scripts/shared/plot/style.ncl +++ b/esmvaltool/diag_scripts/shared/plot/style.ncl @@ -28,19 +28,19 @@ undef("unique_labels_min") function unique_labels_min(prio: string) ; ; Arguments -; prio: string vector with attribute names (model_info@*), ordered by +; prio: string vector with attribute names (dataset_info@*), ordered by ; priority for annotation (starting with highest). ; ; Return value -; A vector (string) with one element for each model_info@model -> each label -; contains the least possible attribute strings. +; A vector (string) with one element for each dataset_info@dataset -> each +; label contains the least possible attribute strings. ; ; Description -; Builds the vector by looping over model_info@model. +; Builds the vector by looping over dataset_info@dataset. ; Adds "_attribute" to non-unique labels, until prio is exhausted. ; ; Caveats -; Uses model_info@*, which is available here anyway. +; Uses dataset_info@*, which is available here anyway. ; ; References ; @@ -54,7 +54,7 @@ begin scriptname = "diag_scripts/shared/plot/style.ncl" enter_msg(scriptname, funcname) - result = model_info@$prio(0)$ ; Start with highest priority + result = dataset_info@$prio(0)$ ; Start with highest priority unique = result(UNIQ(result)) iprio = 1 ; counter for while loop (must not exceed dimsizes(prio)) do while (dimsizes(unique) .ne. dimsizes(result)) @@ -67,7 +67,8 @@ begin do i = 0, dimsizes(unique) - 1 ; loop over different(sic!) labels index = ind(result .eq. unique(i)) if (dimsizes(index) .gt. 1) then ; More than one occurence - result(index) = result(index) + "_" + model_info@$prio(iprio)$(index) + result(index) = \ + result(index) + "_" + dataset_info@$prio(iprio)$(index) end if delete(index) end do ; Different labels @@ -87,19 +88,19 @@ undef("unique_labels_all") function unique_labels_all(prio:string) ; ; Arguments -; prio: string vector with attribute names (model_info@*), ordered by +; prio: string vector with attribute names (dataset_info@*), ordered by ; priority for annotation (starting with highest) ; ; Description -; Builds the vector by looping over model_info@model. +; Builds the vector by looping over dataset_info@dataset. ; Adds "_attribute" until prio is exhausted or until labels are unique. ; ; Return value -; A vector (string) with one element for each model_info@model -> all labels -; contain the same (least possible) number of attribute strings. +; A vector (string) with one element for each dataset_info@dataset -> all +; labels contain the same (least possible) number of attribute strings. ; ; Caveats -; Uses model_info@*, which is available here anyway. +; Uses dataset_info@*, which is available here anyway. ; ; References ; @@ -113,7 +114,7 @@ begin scriptname = "diag_scripts/shared/plot/style.ncl" enter_msg(scriptname, funcname) - result = model_info@$prio(0)$ ; Start with highest priority + result = dataset_info@$prio(0)$ ; Start with highest priority unique = result(UNIQ(result)) iprio = 1 ; counter for while loop (must not exceed dimsizes(prio)) do while (dimsizes(unique) .ne. dimsizes(result)) @@ -126,7 +127,7 @@ begin do i = 0, dimsizes(unique) - 1 ; loop over different(sic!) labels index = ind(result .eq. unique(i)) if (dimsizes(index) .gt. 1) then ; More than one occurence - result = result + "_" + model_info@$prio(iprio)$ + result = result + "_" + dataset_info@$prio(iprio)$ end if delete(index) end do ; Different labels @@ -159,8 +160,8 @@ function project_style(info, flag) ; observations and reanalyses). ; ; Return value -; An array of the same size of model_info@model, with the stlye information -; for the given flag. The type depends on the flag. +; An array of the same size of dataset_info@dataset, with the stlye +; information for the given flag. The type depends on the flag. ; ; Description ; Retruns style informations (annotations, colors, line dash patterns, line @@ -191,8 +192,8 @@ begin ; Check for the available dictonary keys to be used for the annotations ; (see get_dict_key in projects.py) - dkeys = (/"model", "ensemble", "case_name", "exp", "mip", "realm"/) - tmp = isatt(model_info, dkeys) + dkeys = (/"dataset", "ensemble", "case_name", "exp", "mip", "realm"/) + tmp = isatt(dataset_info, dkeys) l_dkeys = dkeys(ind(tmp)) delete(tmp) @@ -241,25 +242,25 @@ begin if (ismissing(col)) then error_msg("f", scriptname, funcname, "flag " + flag + " not allowed") end if - nmodels = dimsizes(model_info@model) + nmodels = dimsizes(dataset_info@dataset) column = new(nmodels, string) wildcard_cnt = 0 do ii = 0, nmodels - 1 - row = ind(model_info@model(ii).eq.modelsinfile) + row = ind(dataset_info@dataset(ii).eq.modelsinfile) ; Multiple entries, raise error if (dimsizes(row).gt.1) then - error_msg("f", scriptname, funcname, "Multiple entries for model" + \ - model_info@model(ii) + " in style file " + stylefile) + error_msg("f", scriptname, funcname, "Multiple entries for dataset" + \ + dataset_info@dataset(ii) + " in style file " + stylefile) end if - ; Missing model + ; Missing dataset if (ismissing(row)) then ; Search for "default" row = ind("default".eq.modelsinfile) if (.not.ismissing(row)) then - log_debug("Model " + model_info@model(ii) + " not found in " + \ + log_debug("Dataset " + dataset_info@dataset(ii) + " not found in " + \ stylefile + ", using default") column(ii) = str_squeeze(str_get_field(sty(row), col, "|")) continue @@ -268,8 +269,8 @@ begin ; Search for wildcards "*" rows = ind("*".eq.modelsinfile) if (all(ismissing(rows))) then - error_msg("f", scriptname, funcname, "Model " + \ - model_info@model(ii) + " not found in stylefile" + \ + error_msg("f", scriptname, funcname, "Dataset " + \ + dataset_info@dataset(ii) + " not found in stylefile" + \ stylefile) end if if (wildcard_cnt.ge.dimsizes(rows)) then @@ -277,7 +278,7 @@ begin " contains too few wildcard (*) " + "entries (" + \ wildcard_cnt + "), please add more") end if - log_debug("Model " + model_info@model(ii) + " not found in " + \ + log_debug("Dataset " + dataset_info@dataset(ii) + " not found in " + \ stylefile + ", using wildcard") row = rows(wildcard_cnt) wildcard_cnt = wildcard_cnt + 1 @@ -316,8 +317,8 @@ begin sprintf("%7.5f", c4) + "/)" else error_msg("f", scriptname, funcname, \ - "Invalid definition of color for model " + \ - model_info@model(ii) + ", check style file " + stylefile) + "Invalid definition of color for dataset " + \ + dataset_info@dataset(ii) + ", check style file " + stylefile) end if end if end if @@ -348,15 +349,15 @@ function project_style_GO(flag:string) ; FiX-ME move to style-file ; ; Arguments: ; flag = string determining the type of array requested -; Return value: array of dimsizes(model_info@model) -; * Definition of plot attribs; Returns arrays of dimsizes(model_info@model) -; * flag = "colors": returns an array of colors (either RGB or named colors) -; * flag = "dashes": returns an array of dash styles (integer numbers) -; * flag = "thicks": returns an array of line thicknesses (numeric) -; * flag = "annots": returns an array of annotation strings -; * flag = "avgstd": returns an array of flags -; 0 -> (model) takes part in calculation of mean & stddev -; 1 -> (obs/reanalysis) does not take part +; Return value: array of dimsizes(dataset_info@dataset) +; Definition of plot attribs; Returns arrays of dimsizes(dataset_info@dataset) +; flag = "colors": returns an array of colors (either RGB or named colors) +; flag = "dashes": returns an array of dash styles (integer numbers) +; flag = "thicks": returns an array of line thicknesses (numeric) +; flag = "annots": returns an array of annotation strings +; flag = "avgstd": returns an array of flags +; 0 -> (model) takes part in calculation of mean & stddev +; 1 -> (obs/reanalysis) does not take part ; Description: ; * Definition of plot attributes: type depending on flag ; Modification history: @@ -382,15 +383,15 @@ begin ; assign plot attributes (see function select_style in style_auxiliary.ncl) if (flag .eq. "colors") then - result = select_style(modelstyles, 1, model_info@model) + result = select_style(modelstyles, 1, dataset_info@dataset) else if (flag .eq. "dashes") then - result = select_style(modelstyles, 2, model_info@model) + result = select_style(modelstyles, 2, dataset_info@dataset) else if (flag .eq. "thicks") then - result = toint(select_style(modelstyles, 3, model_info@model)) + result = toint(select_style(modelstyles, 3, dataset_info@dataset)) else if (flag .eq. "annots") then - result = unique_labels_min((/"model", "ensemble", "exp"/)) + result = unique_labels_min((/"dataset", "ensemble", "exp"/)) else if (flag .eq. "avgstd") then - result = toint(select_style(modelstyles, 4, model_info@model)) + result = toint(select_style(modelstyles, 4, dataset_info@dataset)) else print("fatal: (project_style_CMIP5) flag " + flag + " not allowed.") status_exit(1) diff --git a/esmvaltool/diag_scripts/shared/plot/styles/ccmval1.style b/esmvaltool/diag_scripts/shared/plot/styles/ccmval1.style index 0e01878639..2f42539529 100644 --- a/esmvaltool/diag_scripts/shared/plot/styles/ccmval1.style +++ b/esmvaltool/diag_scripts/shared/plot/styles/ccmval1.style @@ -4,7 +4,7 @@ # This file defines the plot attributes for the CCMVal1 models. # Mostly based on CCMValTool definitions. # -# MODEL NAME: must be the same as given in the main namelist. +# MODEL NAME: must be the same as given in the main recipe. # COLOR: can be either an NCL named color, a RGB code (size 3) on a 0-255 scale # or a RGBA code (size 4) with the last element indicating the opacity # on a 0-1 scale (0 = transparent, 1 = full), see diff --git a/esmvaltool/diag_scripts/shared/plot/styles/ccmval2.style b/esmvaltool/diag_scripts/shared/plot/styles/ccmval2.style index 480dd9d0fd..e7f36b7fd3 100644 --- a/esmvaltool/diag_scripts/shared/plot/styles/ccmval2.style +++ b/esmvaltool/diag_scripts/shared/plot/styles/ccmval2.style @@ -4,7 +4,7 @@ # This file defines the plot attributes for the CCMVal2 models. # Mostly based on CCMValTool definitions. # -# MODEL NAME: must be the same as given in the main namelist. +# MODEL NAME: must be the same as given in the main recipe. # COLOR: can be either an NCL named color, a RGB code (size 3) on a 0-255 scale # or a RGBA code (size 4) with the last element indicating the opacity # on a 0-1 scale (0 = transparent, 1 = full), see diff --git a/esmvaltool/diag_scripts/shared/plot/styles/cmip5.style b/esmvaltool/diag_scripts/shared/plot/styles/cmip5.style index f5f623a0b7..63a35c8a76 100644 --- a/esmvaltool/diag_scripts/shared/plot/styles/cmip5.style +++ b/esmvaltool/diag_scripts/shared/plot/styles/cmip5.style @@ -4,7 +4,7 @@ # This file defines the plot attributes for the CMIP5 models. # Mostly based on IPCC-AR5 Chapter 9 figures. # -# MODEL NAME: must be the same as given in the main namelist. +# MODEL NAME: must be the same as given in the main recipe. # COLOR: can be either an NCL named color, a RGB code (size 3) on a 0-255 scale # or a RGBA code (size 4) with the last element indicating the opacity # on a 0-1 scale (0 = transparent, 1 = full), see diff --git a/esmvaltool/diag_scripts/shared/plot/styles/cmip5_esa.style b/esmvaltool/diag_scripts/shared/plot/styles/cmip5_esa.style new file mode 100644 index 0000000000..a70bc4973c --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles/cmip5_esa.style @@ -0,0 +1,108 @@ +############################################################################### +# CMIP5 STYLES WITH HIGHLIGHTED ESA OBSERVATIONS +############################################################################### +# This file defines the plot attributes for the CMIP5 models. +# Mostly based on IPCC-AR5 Chapter 9 figures. +# +# MODEL NAME: must be the same as given in the main recipe. +# COLOR: can be either an NCL named color, a RGB code (size 3) on a 0-255 scale +# or a RGBA code (size 4) with the last element indicating the opacity +# on a 0-1 scale (0 = transparent, 1 = full), see +# http://www.ncl.ucar.edu/Applications/Scripts/rgb.txt +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGB +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGBA +# https://www.ncl.ucar.edu/Document/Graphics/create_color_table.shtml +# DASH: the dash pattern index lines, see +# https://www.ncl.ucar.edu/Document/Graphics/Images/dashpatterns.png +# THICK: the line thickness (NCL default is 1) +# MARK: marker index for markers, see +# https://www.ncl.ucar.edu/Document/Graphics/Images/markers.png +# AVG-STD: 0 = takes part in the calculation of mean and stddev +# 1 = does not take part in the calculation of mean and stddev +# (usually 0 for models, 1 for observations/reanalysis) +# +# Mind the formatting: columns are separated by the | symbol , colors given +# as RGB/RGBA must be comma-separated. +############################################################################### +MODEL NAME # COLOR # DASH # THICK # MARK # AVG-STD +############################################################################### +ACCESS1-0 | 91, 142, 210 | 0 | 1 | 4 | 0 +ACCESS1-3 | 91, 142, 210 | 1 | 1 | 6 | 0 +bcc-csm1-1 | 148, 25, 30 | 0 | 1 | 4 | 0 +bcc-csm1-1-m | 148, 25, 30 | 1 | 1 | 6 | 0 +BNU-ESM | 196, 121, 0 | 0 | 1 | 4 | 0 +CanCM4 | 30, 76, 36 | 0 | 1 | 4 | 0 +CanESM2 | 30, 76, 36 | 1 | 1 | 6 | 0 +CNRM-AM-PRE6 | 30, 76, 36 | 1 | 1 | 6 | 0 +CCSM4 | 67, 178, 216 | 0 | 1 | 4 | 0 +CESM1-BGC | 67, 178, 216 | 1 | 1 | 6 | 0 +CESM1-CAM5 | 67, 178, 216 | 2 | 1 | 7 | 0 +CESM1-CAM5-1-FV2 | 67, 178, 216 | 2 | 1 | 7 | 0 +CESM1-FASTCHEM | 67, 178, 216 | 3 | 1 | 5 | 0 +CESM1-WACCM | 67, 178, 216 | 4 | 1 | 2 | 0 +CMCC-CESM | 232, 32, 35 | 0 | 1 | 4 | 0 +CMCC-CM | 232, 32, 35 | 1 | 1 | 6 | 0 +CMCC-CMS | 232, 32, 35 | 2 | 1 | 7 | 0 +CNRM-CM5 | 145, 214, 126 | 0 | 1 | 4 | 0 +CSIRO-Mk3-6-0 | 241, 75, 32 | 0 | 1 | 4 | 0 +EC-EARTH | 124, 99, 184 | 0 | 1 | 4 | 0 +FGOALS-g2 | 248, 154, 28 | 0 | 1 | 4 | 0 +FIO-ESM | 77, 187, 55 | 0 | 1 | 4 | 0 +GFDL-CM2p1 | 35, 54, 109 | 0 | 1 | 4 | 0 +GFDL-CM3 | 35, 54, 109 | 1 | 1 | 6 | 0 +GFDL-ESM2G | 35, 54, 109 | 2 | 1 | 7 | 0 +MPIESM-1-1 | 35, 54, 109 | 2 | 1 | 7 | 0 +GFDL-ESM2M | 35, 54, 109 | 3 | 1 | 5 | 0 +GISS-E2-H | 119, 29, 123 | 0 | 1 | 4 | 0 +GISS-E2-H-CC | 119, 29, 123 | 1 | 1 | 6 | 0 +GISS-E2-R | 119, 29, 123 | 2 | 1 | 7 | 0 +GISS-E2-R-CC | 119, 29, 123 | 3 | 1 | 5 | 0 +HadCM3 | 122, 139, 38 | 0 | 1 | 4 | 0 +HadGEM2-AO | 122, 139, 38 | 1 | 1 | 6 | 0 +HadGEM2-A | 122, 139, 38 | 1 | 1 | 6 | 0 +HadGEM2-CC | 122, 139, 38 | 2 | 1 | 7 | 0 +HadGEM2-ES | 122, 139, 38 | 3 | 1 | 5 | 0 +inmcm4 | 161, 37, 44 | 0 | 1 | 4 | 0 +INMCM4 | 161, 37, 44 | 0 | 1 | 4 | 0 +IPSL-CM5A-LR | 91, 83, 174 | 0 | 1 | 4 | 0 +IPSL-CM5A-MR | 91, 83, 174 | 1 | 1 | 6 | 0 +IPSL-CM5B-LR | 91, 83, 174 | 2 | 1 | 7 | 0 +MIROC4h | 184, 95, 182 | 0 | 1 | 4 | 0 +MIROC5 | 184, 95, 182 | 1 | 1 | 6 | 0 +MIROC-ESM | 184, 95, 182 | 2 | 1 | 7 | 0 +MIROC-ESM-CHEM | 184, 95, 182 | 3 | 1 | 5 | 0 +MPI-ESM-LR | 93, 161, 162 | 0 | 1 | 4 | 0 +MPI-ESM-MR | 93, 161, 162 | 1 | 1 | 6 | 0 +MPI-ESM-P | 93, 161, 162 | 2 | 1 | 7 | 0 +MRI-CGCM3 | 173, 255, 47 | 0 | 1 | 4 | 0 +MRI-ESM1 | 173, 255, 47 | 1 | 1 | 7 | 0 +NorESM1-M | 241, 58, 167 | 0 | 1 | 4 | 0 +NorESM1-ME | 241, 58, 167 | 1 | 1 | 7 | 0 +MultiModelMean | 255, 0, 0 | 0 | 3 | 12 | 1 +MultiModelMedian | 0, 0, 255 | 0 | 3 | 12 | 1 +NSIDC | 0, 0, 0 | 0 | 3 | 16 | 1 +HadISST | 0, 0, 0 | 1 | 3 | 16 | 1 +MOHC-HadISST | 0, 0, 0 | 1 | 3 | 16 | 1 +AMSRE | 0, 0, 0 | 2 | 3 | 16 | 1 +ERAINT | 0, 0, 0 | 3 | 3 | 16 | 1 +NCEP | 0, 0, 0 | 4 | 3 | 16 | 1 +TRMM-3B43-v7-0.25deg | 0, 0, 0 | 5 | 3 | 16 | 1 +TRMM-L3 | 0, 0, 0 | 5 | 3 | 16 | 1 +CERES-SYN1deg | 0, 0, 0 | 0 | 1 | 16 | 0 +CMAP | 0, 0, 0 | 6 | 3 | 16 | 1 +GPCP-1DD-V12 | 0, 0, 0 | 7 | 3 | 16 | 1 +MERRA | 0, 0, 0 | 8 | 3 | 16 | 1 +ESACCI-AEROSOL | 0, 0, 0 | 0 | 3 | 16 | 1 +ESACCI-CLOUD | 255, 0, 0 | 0 | 3 | 0 | 0 +MODIS | 0, 255, 0 | 0 | 3 | 16 | 1 +NIWA | 0, 0, 0 | 1 | 3 | 8 | 1 +BDBP | 0, 0, 0 | 1 | 3 | 4 | 1 +IGAG/SPARC | 248, 154, 28 | 0 | 3 | 16 | 0 +PATMOS | 0, 0, 255 | 0 | 3 | 0 | 0 +CLARA-A2 | 0, 255, 255 | 0 | 3 | 0 | 0 +ERA-Interim | 255, 200, 0 | 0 | 3 | 0 | 0 +ESACCI-SSMI | 0, 0, 0 | 0 | 20 | 0 | 0 +ESACCI-AMSR | 0, 0, 0 | 1 | 20 | 0 | 0 +NSIDC-NT | 0, 0, 0 | 2 | 9 | 0 | 0 +NSIDC-BT | 0, 0, 0 | 12 | 9 | 0 | 0 +default | 0, 0, 0 | 0 | 1 | 16 | 0 diff --git a/esmvaltool/diag_scripts/shared/plot/styles/default.style b/esmvaltool/diag_scripts/shared/plot/styles/default.style index 251e4a339a..84d8877f1f 100644 --- a/esmvaltool/diag_scripts/shared/plot/styles/default.style +++ b/esmvaltool/diag_scripts/shared/plot/styles/default.style @@ -3,7 +3,7 @@ ############################################################################### # This file defines the plot attributes for the DEFAULT case. # -# MODEL NAME: must be the same as given in the main namelist. The "default" +# MODEL NAME: must be the same as given in the main recipe. The "default" # entry is assigned to all models not in the list. Alternatively, # wildcards "*" can be given and models not in the list will be # assigned to them in the given order. diff --git a/esmvaltool/diag_scripts/shared/plot/styles/righi15gmd.style b/esmvaltool/diag_scripts/shared/plot/styles/righi15gmd.style index 9a3a17598c..ce2be85d21 100644 --- a/esmvaltool/diag_scripts/shared/plot/styles/righi15gmd.style +++ b/esmvaltool/diag_scripts/shared/plot/styles/righi15gmd.style @@ -4,7 +4,7 @@ # This file defines the plot attributes for the righi15gmd models. # Based on Righi et al., GMD (2015). # -# MODEL NAME: must be the same as given in the main namelist. +# MODEL NAME: must be the same as given in the main recipe. # COLOR: can be either an NCL named color, a RGB code (size 3) on a 0-255 scale # or a RGBA code (size 4) with the last element indicating the opacity # on a 0-1 scale (0 = transparent, 1 = full), see diff --git a/esmvaltool/diag_scripts/shared/plot/styles_python/cmip5.yml b/esmvaltool/diag_scripts/shared/plot/styles_python/cmip5.yml new file mode 100644 index 0000000000..d441e7c487 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles_python/cmip5.yml @@ -0,0 +1,593 @@ +############################################################################### +# PYTHON STYLE FILE +# cmip5.yml +# created by 'convert_ncl_style.py'. +############################################################################### +# This file defines plot attributes for certain datasets. +# +# Template: +# +# DATASET: +# avgstd: 0 +# color: '#ffffff' +# dash: -- +# facecolor: none +# mark: x +# thick: 1 +# +# DATASET: dataset name (same as given in the main recipe) +# avgstd: 0 = takes part in the calculation of mean and stddev +# 1 = does not take part in the calculation of mean and stddev +# (usually 0 for models, 1 for observations/reanalysis) +# color: hex RGB or RGBA string (e.g. #0f0fa1), see +# http://www.ncl.ucar.edu/Applications/Scripts/rgb.txt +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGB +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGBA +# dash: matplotlib dash pattern (linestyle) +# facecolor: Color of the filling (none = no filling) +# mark: marker string for markers (used in matplotlib), see +# https://matplotlib.org/api/markers_api.html +# https://www.ncl.ucar.edu/Document/Graphics/Images/markers.png +# thick: line thickness +############################################################################### + +ACCESS1-0: + avgstd: 0 + color: '#5b8ed2' + dash: '-' + facecolor: none + mark: o + thick: 1 +ACCESS1-3: + avgstd: 0 + color: '#5b8ed2' + dash: -- + facecolor: none + mark: s + thick: 1 +AMSRE: + avgstd: 1 + color: '#000000' + dash: ':' + facecolor: '#000000' + mark: o + thick: 3 +BDBP: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: none + mark: o + thick: 3 +BNU-ESM: + avgstd: 0 + color: '#c47900' + dash: '-' + facecolor: none + mark: o + thick: 1 +CCSM4: + avgstd: 0 + color: '#43b2d8' + dash: '-' + facecolor: none + mark: o + thick: 1 +CERES-SYN1deg: + avgstd: 0 + color: '#000000' + dash: '-' + facecolor: '#000000' + mark: o + thick: 1 +CESM1-BGC: + avgstd: 0 + color: '#43b2d8' + dash: -- + facecolor: none + mark: s + thick: 1 +CESM1-CAM5: + avgstd: 0 + color: '#43b2d8' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +CESM1-CAM5-1-FV2: + avgstd: 0 + color: '#43b2d8' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +CESM1-FASTCHEM: + avgstd: 0 + color: '#43b2d8' + dash: -. + facecolor: none + mark: x + thick: 1 +CESM1-WACCM: + avgstd: 0 + color: '#43b2d8' + dash: -. + facecolor: none + mark: + + thick: 1 +CLARA-A2: + avgstd: 0 + color: '#00ffff' + dash: '-' + facecolor: none + mark: x + thick: 3 +CMAP: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: '#000000' + mark: o + thick: 3 +CMCC-CESM: + avgstd: 0 + color: '#e82023' + dash: '-' + facecolor: none + mark: o + thick: 1 +CMCC-CM: + avgstd: 0 + color: '#e82023' + dash: -- + facecolor: none + mark: s + thick: 1 +CMCC-CMS: + avgstd: 0 + color: '#e82023' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +CNRM-AM-PRE6: + avgstd: 0 + color: '#1e4c24' + dash: -- + facecolor: none + mark: s + thick: 1 +CNRM-CM5: + avgstd: 0 + color: '#91d67e' + dash: '-' + facecolor: none + mark: o + thick: 1 +CSIRO-Mk3-6-0: + avgstd: 0 + color: '#f14b20' + dash: '-' + facecolor: none + mark: o + thick: 1 +CanCM4: + avgstd: 0 + color: '#1e4c24' + dash: '-' + facecolor: none + mark: o + thick: 1 +CanESM2: + avgstd: 0 + color: '#1e4c24' + dash: -- + facecolor: none + mark: s + thick: 1 +EC-EARTH: + avgstd: 0 + color: '#7c63b8' + dash: '-' + facecolor: none + mark: o + thick: 1 +ERA-Interim: + avgstd: 0 + color: '#ffc800' + dash: '-' + facecolor: none + mark: x + thick: 3 +ERAINT: + avgstd: 1 + color: '#000000' + dash: -. + facecolor: '#000000' + mark: o + thick: 3 +ESACCI-AEROSOL: + avgstd: 1 + color: '#000000' + dash: '-' + facecolor: '#000000' + mark: o + thick: 3 +ESACCI-AMSR: + avgstd: 0 + color: '#000000' + dash: -- + facecolor: none + mark: x + thick: 4 +ESACCI-CLOUD: + avgstd: 0 + color: '#ff0000' + dash: '-' + facecolor: none + mark: x + thick: 3 +ESACCI-SSMI: + avgstd: 0 + color: '#000000' + dash: '-' + facecolor: none + mark: x + thick: 4 +FGOALS-g2: + avgstd: 0 + color: '#f89a1c' + dash: '-' + facecolor: none + mark: o + thick: 1 +FIO-ESM: + avgstd: 0 + color: '#4dbb37' + dash: '-' + facecolor: none + mark: o + thick: 1 +GFDL-CM2p1: + avgstd: 0 + color: '#23366d' + dash: '-' + facecolor: none + mark: o + thick: 1 +GFDL-CM3: + avgstd: 0 + color: '#23366d' + dash: -- + facecolor: none + mark: s + thick: 1 +GFDL-ESM2G: + avgstd: 0 + color: '#23366d' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +GFDL-ESM2M: + avgstd: 0 + color: '#23366d' + dash: -. + facecolor: none + mark: x + thick: 1 +GISS-E2-H: + avgstd: 0 + color: '#771d7b' + dash: '-' + facecolor: none + mark: o + thick: 1 +GISS-E2-H-CC: + avgstd: 0 + color: '#771d7b' + dash: -- + facecolor: none + mark: s + thick: 1 +GISS-E2-R: + avgstd: 0 + color: '#771d7b' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +GISS-E2-R-CC: + avgstd: 0 + color: '#771d7b' + dash: -. + facecolor: none + mark: x + thick: 1 +GPCP-1DD-V12: + avgstd: 1 + color: '#000000' + dash: -. + facecolor: '#000000' + mark: o + thick: 3 +HadCM3: + avgstd: 0 + color: '#7a8b26' + dash: '-' + facecolor: none + mark: o + thick: 1 +HadGEM2-A: + avgstd: 0 + color: '#7a8b26' + dash: -- + facecolor: none + mark: s + thick: 1 +HadGEM2-AO: + avgstd: 0 + color: '#7a8b26' + dash: -- + facecolor: none + mark: s + thick: 1 +HadGEM2-CC: + avgstd: 0 + color: '#7a8b26' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +HadGEM2-ES: + avgstd: 0 + color: '#7a8b26' + dash: -. + facecolor: none + mark: x + thick: 1 +HadISST: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: '#000000' + mark: o + thick: 3 +IGAG/SPARC: + avgstd: 0 + color: '#f89a1c' + dash: '-' + facecolor: '#f89a1c' + mark: o + thick: 3 +INMCM4: + avgstd: 0 + color: '#a1252c' + dash: '-' + facecolor: none + mark: o + thick: 1 +IPSL-CM5A-LR: + avgstd: 0 + color: '#5b53ae' + dash: '-' + facecolor: none + mark: o + thick: 1 +IPSL-CM5A-MR: + avgstd: 0 + color: '#5b53ae' + dash: -- + facecolor: none + mark: s + thick: 1 +IPSL-CM5B-LR: + avgstd: 0 + color: '#5b53ae' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +MERRA: + avgstd: 1 + color: '#000000' + dash: -. + facecolor: '#000000' + mark: o + thick: 3 +MIROC-ESM: + avgstd: 0 + color: '#b85fb6' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +MIROC-ESM-CHEM: + avgstd: 0 + color: '#b85fb6' + dash: -. + facecolor: none + mark: x + thick: 1 +MIROC4h: + avgstd: 0 + color: '#b85fb6' + dash: '-' + facecolor: none + mark: o + thick: 1 +MIROC5: + avgstd: 0 + color: '#b85fb6' + dash: -- + facecolor: none + mark: s + thick: 1 +MODIS: + avgstd: 1 + color: '#00ff00' + dash: '-' + facecolor: '#00ff00' + mark: o + thick: 3 +MOHC-HadISST: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: '#000000' + mark: o + thick: 3 +MPI-ESM-LR: + avgstd: 0 + color: '#5da1a2' + dash: '-' + facecolor: none + mark: o + thick: 1 +MPI-ESM-MR: + avgstd: 0 + color: '#5da1a2' + dash: -- + facecolor: none + mark: s + thick: 1 +MPI-ESM-P: + avgstd: 0 + color: '#5da1a2' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +MPIESM-1-1: + avgstd: 0 + color: '#23366d' + dash: ':' + facecolor: none + mark: ^ + thick: 1 +MRI-CGCM3: + avgstd: 0 + color: '#adff2f' + dash: '-' + facecolor: none + mark: o + thick: 1 +MRI-ESM1: + avgstd: 0 + color: '#adff2f' + dash: -- + facecolor: none + mark: ^ + thick: 1 +MultiModelMean: + avgstd: 1 + color: '#ff0000' + dash: '-' + facecolor: none + mark: '*' + thick: 3 +MultiModelMedian: + avgstd: 1 + color: '#0000ff' + dash: '-' + facecolor: none + mark: '*' + thick: 3 +NCEP: + avgstd: 1 + color: '#000000' + dash: -. + facecolor: '#000000' + mark: o + thick: 3 +NIWA: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: none + mark: v + thick: 3 +NSIDC: + avgstd: 1 + color: '#000000' + dash: '-' + facecolor: '#000000' + mark: o + thick: 3 +NSIDC-BT: + avgstd: 0 + color: '#000000' + dash: -- + facecolor: none + mark: x + thick: 3 +NSIDC-NT: + avgstd: 0 + color: '#000000' + dash: ':' + facecolor: none + mark: x + thick: 3 +NorESM1-M: + avgstd: 0 + color: '#f13aa7' + dash: '-' + facecolor: none + mark: o + thick: 1 +NorESM1-ME: + avgstd: 0 + color: '#f13aa7' + dash: -- + facecolor: none + mark: ^ + thick: 1 +PATMOS: + avgstd: 0 + color: '#0000ff' + dash: '-' + facecolor: none + mark: x + thick: 3 +TRMM-3B43-v7-0.25deg: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: '#000000' + mark: o + thick: 3 +TRMM-L3: + avgstd: 1 + color: '#000000' + dash: -- + facecolor: '#000000' + mark: o + thick: 3 +bcc-csm1-1: + avgstd: 0 + color: '#94191e' + dash: '-' + facecolor: none + mark: o + thick: 1 +bcc-csm1-1-m: + avgstd: 0 + color: '#94191e' + dash: -- + facecolor: none + mark: s + thick: 1 +default: + avgstd: 0 + color: '#000000' + dash: '-' + facecolor: '#000000' + mark: o + thick: 1 +inmcm4: + avgstd: 0 + color: '#a1252c' + dash: '-' + facecolor: none + mark: o + thick: 1 diff --git a/esmvaltool/diag_scripts/shared/plot/styles_python/convert_ncl_style.py b/esmvaltool/diag_scripts/shared/plot/styles_python/convert_ncl_style.py new file mode 100644 index 0000000000..1e44f2ab89 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles_python/convert_ncl_style.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +"""Script to convert nvl style files to python style files. + +Example +------- +The script is simply called by:: + + $ python convert_ncl_style.py + +Global attributes +----------------- +INPUT_FILE : str + Path to the ncl style file. +OUTPUT_FILE : str + Path to the new python style file (yml format). + +""" + + +import os +import yaml + + +# Global variables +INPUT_FILE = '../styles/cmip5.style' +OUTPUT_FILE = 'cmip5.yml' + +HEADER_FILE = 'style_header' +DATASET = 'dataset' +COLOR = 'color' +DASH = 'dash' +THICKNESS = 'thick' +MARK = 'mark' +AVG_STD = 'avgstd' +FILLING = 'facecolor' + +INFORMATION = [DATASET, COLOR, DASH, THICKNESS, MARK, AVG_STD] + + +def read_line(line): + """Read line of the ncl style file.""" + # Read information + info_dict = {} + for (idx, line_elem) in enumerate(line): + info = line_elem.strip() + option = INFORMATION[idx] + + # Convert color to hex string + if option == COLOR: + color = info.split(',') + info = '#' + for col in color: + col = "{:02x}".format(int(col)) + info += col + + # Convert mark index to matplotlib marker + elif option == MARK: + # Filling + info_dict[FILLING] = info_dict[COLOR] if info == '16' else 'none' + + # Shape + shape = { + '0': 'x', + '1': '.', + '2': '+', + '3': 'x', + '4': 'o', + '5': 'x', + '6': 's', + '7': '^', + '8': 'v', + '9': 'D', + '10': '<', + '11': '>', + '12': '*', + '13': 'h', + '14': '.', + '15': 'x', + '16': 'o'} + info = shape.get(info, 'o') + + # Convert dash index to matplotlib dash marker + elif option == DASH: + dash = { + '0': '-', + '1': '--', + '2': ':', + '3': '-.', + '4': '-.', + '5': '--', + '6': '--', + '7': '-.', + '8': '-.', + '9': '-.', + '10': '-.', + '11': '--', + '12': '--', + '13': '--', + '14': '--', + '15': '--', + '16': '--'} + info = dash.get(info, '-') + + # Convert str to int + elif option in (AVG_STD, THICKNESS): + info = int(info) + + # Add information + info_dict[option] = info + return info_dict + + +def read_ncl_style(file_name): + """Read ncl style file.""" + output = [] + with open(file_name, 'r') as file: + for line in file: + line = line.strip() + + # Ignore commentary lines + if line.startswith('#'): + continue + + # Get lines with valid information (seperated by '|') + line = line.split('|') + if len(line) != len(INFORMATION): + continue + + # Read line + output.append(read_line(line)) + + # Convert list to dictionary + output_dict = {} + for info in output: + dataset = info[DATASET] + del info[DATASET] + output_dict[dataset] = info + + return output_dict + + +def write_yml_file(dataset_info, file_name): + """Write configuration file.""" + with open(file_name, 'w') as outfile: + with open(HEADER_FILE, 'r') as header_file: + header = header_file.read() + outfile.write(header.format(output_file=OUTPUT_FILE, + script=os.path.basename(__file__))) + yaml.dump(dataset_info, outfile, default_flow_style=False) + + +# Execute script if called directly +if __name__ == '__main__': + STYLES = read_ncl_style(INPUT_FILE) + write_yml_file(STYLES, OUTPUT_FILE) diff --git a/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/default.mplstyle b/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/default.mplstyle new file mode 100644 index 0000000000..8b110a77dd --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/default.mplstyle @@ -0,0 +1,28 @@ +############################################################################### +# DEFAULT +# Style file for matplotlib plots +############################################################################### + +# Font +font.sans-serif : Helvetica, Avant Garde, Arial, DejaVu Sans, sans-serif +font.serif : Palatino, Times New Roman, DejaVu Serin, DejaVu Serif, serif +font.family : sans-serif +font.style : normal +font.variant : normal +font.weight : normal +font.stretch : normal +font.size : 14 + +# Fontsizes +axes.labelsize : medium +axes.titlesize : larger +xtick.labelsize : medium +ytick.labelsize : medium + +# Object sizes +lines.linewidth : 1 +lines.markersize : 6 + +# Axis +xtick.minor.visible : True +ytick.minor.visible : True diff --git a/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/small_font.mplstyle b/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/small_font.mplstyle new file mode 100644 index 0000000000..50a5917ae0 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles_python/matplotlib/small_font.mplstyle @@ -0,0 +1,28 @@ +############################################################################### +# SMALL FONTS +# Style file for matplotlib plots +############################################################################### + +# Font +font.sans-serif : Helvetica, Avant Garde, Arial, DejaVu Sans, sans-serif +font.serif : Palatino, Times New Roman, DejaVu Serin, DejaVu Serif, serif +font.family : sans-serif +font.style : normal +font.variant : normal +font.weight : normal +font.stretch : normal +font.size : 10 + +# Fontsizes +axes.labelsize : medium +axes.titlesize : larger +xtick.labelsize : medium +ytick.labelsize : medium + +# Object sizes +lines.linewidth : 1 +lines.markersize : 3 + +# Axis +xtick.minor.visible : True +ytick.minor.visible : True diff --git a/esmvaltool/diag_scripts/shared/plot/styles_python/style_header b/esmvaltool/diag_scripts/shared/plot/styles_python/style_header new file mode 100644 index 0000000000..4b1f814234 --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/styles_python/style_header @@ -0,0 +1,33 @@ +############################################################################### +# PYTHON STYLE FILE +# {output_file} +# created by '{script}'. +############################################################################### +# This file defines plot attributes for certain datasets. +# +# Template: +# +# DATASET: +# avgstd: 0 +# color: '#ffffff' +# dash: -- +# facecolor: none +# mark: x +# thick: 1 +# +# DATASET: dataset name (same as given in the main recipe) +# avgstd: 0 = takes part in the calculation of mean and stddev +# 1 = does not take part in the calculation of mean and stddev +# (usually 0 for models, 1 for observations/reanalysis) +# color: hex RGB or RGBA string (e.g. #0f0fa1), see +# http://www.ncl.ucar.edu/Applications/Scripts/rgb.txt +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGB +# https://www.ncl.ucar.edu/Document/glossary.shtml#RGBA +# dash: matplotlib dash pattern (linestyle) +# facecolor: Color of the filling (none = no filling) +# mark: marker string for markers (used in matplotlib), see +# https://matplotlib.org/api/markers_api.html +# https://www.ncl.ucar.edu/Document/Graphics/Images/markers.png +# thick: line thickness +############################################################################### + diff --git a/esmvaltool/diag_scripts/shared/plot/xy_line.ncl b/esmvaltool/diag_scripts/shared/plot/xy_line.ncl index 0ac999a442..408382b9ea 100644 --- a/esmvaltool/diag_scripts/shared/plot/xy_line.ncl +++ b/esmvaltool/diag_scripts/shared/plot/xy_line.ncl @@ -1520,20 +1520,20 @@ begin ; 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 + ; Project_style evaluates metadata of variable "dataset_info" + temp = dataset_info - ; -> keep original "models" in "temp" and restore later - copy_VarMeta(models, temp) - delete(models) + ; -> keep original "dataset_info" in "temp" and restore later + copy_VarMeta(dataset_info, temp) + delete(dataset_info) - ; Use "models" to pass on attribute names - models = getvaratts(temp) ; use "models" to pass on attribute names - do i = 0, dimsizes(models) - 1 + ; Use "dataset_info" to pass on attribute names + dataset_info = getvaratts(temp) + do i = 0, dimsizes(dataset_info) - 1 ; Define all original attributes again, but empty - models@$models(i)$ = "" + dataset_info@$dataset_info(i)$ = "" end do - models@name = "model_mean" + dataset_info@dataset = "model_mean" ; See ./diag_scripts/shared/plot/style.ncl colors_mmm = project_style(diag_script_info, "colors") @@ -1541,32 +1541,12 @@ begin 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(dataset_info) + dataset_info = temp ; restore original "dataset_info" + copy_VarMeta(temp, dataset_info) delete(temp) end if - ; Highlight ESA OBS - do i = 0, dimsizes(models@name) - 1 - if (models@name(i).eq."ESACCI-SSMI") then - thicks(i) = 5 * thicks(i) - dashes(i) = 0 - else if (models@name(i).eq."ESACCI-AMSR") then - thicks(i) = 5 * thicks(i) - dashes(i) = 1 - else if (models@name(i).eq."NSIDC-NT") then - thicks(i) = 3 * thicks(i) - dashes(i) = 2 - else if (models@name(i).eq."NSIDC-BT") then - thicks(i) = 3 * thicks(i) - dashes(i) = 12 - end if - end if - end if - end if - end do - ; Set/copy resources res = True res@xyLineColors = colors ; change line color @@ -1588,22 +1568,22 @@ begin ; Add multi model mean and stddev if (diag_script_info@multi_model_mean .eq. "y") then - ; Stddev + ; 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, source_x, source_stddev(2:3, :), \ - res_stddev) + res_stddev@xyLineColor = -1 + shading_plot = gsn_csm_xy(wks, source_x, source_stddev(2:3, :), \ + res_stddev) overlay(plot, shading_plot) - ; mmm + ; MMM delete([/res@xyLineThicknesses, res@xyLineColors, res@xyDashPatterns/]) res@xyLineThicknesses = thicks_mmm - res@xyLineColors = colors_mmm - res@xyDashPatterns = dashes_mmm + res@xyLineColors = colors_mmm + res@xyDashPatterns = dashes_mmm mmm = gsn_csm_xy(wks, source_x, source_stddev(0, :), res) overlay(plot, mmm) end if @@ -1624,11 +1604,11 @@ begin diag_script_info@EMs_in_lg = True ; Set default end if if (.not.diag_script_info@EMs_in_lg) then - idcs_modelnames = UNIQ(model_info@model) + idcs_modelnames = UNIQ(dataset_info@dataset) colors := colors(idcs_modelnames) dashes := dashes(idcs_modelnames) thicks := thicks(idcs_modelnames) - annots := model_info@model(idcs_modelnames) + annots := dataset_info@dataset(idcs_modelnames) end if if (diag_script_info@multi_model_mean .eq. "y") then lgres@lgLineColors = array_append_record(colors, colors_mmm, 0) diff --git a/esmvaltool/diag_scripts/shared/regridding.ncl b/esmvaltool/diag_scripts/shared/regridding.ncl index 5598659394..50b363f5a4 100644 --- a/esmvaltool/diag_scripts/shared/regridding.ncl +++ b/esmvaltool/diag_scripts/shared/regridding.ncl @@ -13,7 +13,7 @@ ; function esmf_conserve_wrapper ; function rect2rect_interp ; function plev_lat_interp -; function get_model_minus_ref +; function get_dataset_minus_ref ; function esmf_conserve_wrapper_time ; function regrid_3D_to_rectilinear_grid ; @@ -35,7 +35,7 @@ function find_destination_grid(indexes[*]:integer, opt[1]:string) ; ; Arguments -; indexes: a 1-D array of model indexes to be considered. +; indexes: a 1-D array of dataset indexes to be considered. ; var: variable name. ; field: field type. ; opt: type of grid to be selected: @@ -47,19 +47,19 @@ function find_destination_grid(indexes[*]:integer, ; plev/lat/lon or lat/lon coordinates. ; ; Description: -; Given an array of models, returns the coordinates of the coarsest or +; Given an array of datasets, returns the coordinates of the coarsest or ; finest grid, to be used as a destination grid in regridding routines. ; For the vertical coordinate, the extent is considered as first priority ; (to avoid loss of data). -; All models are expect to have the same rank and dimension sizes. +; All datasets are expect to have the same rank and dimension sizes. ; ; Caveats ; The returned plev, lat, lon coordinates do not necessarily come from the -; same input model, i.e. it is possible to get latitude from one model -; longitude from another model. +; same input dataset, i.e. it is possible to get latitude from one dataset +; longitude from another dataset. ; ; Modification history -; 20150113-A_gott_kl: check that all models have the same dimensions. +; 20150113-A_gott_kl: check that all datasets have the same dimensions. ; 20150113-A_gott_kl: revised to allow data without lev or lon coordinate. ; 20140903-A_righ_ma: revised plev coordinate selection. ; 20140311-A_righ_ma: added plev coordinate. @@ -98,7 +98,7 @@ begin ref_lat = 1.d0 ref_lon = 1.d0 - ; Loop over models, select coarsest/finest lat and lon + ; Loop over datasets, select coarsest/finest lat and lon ; Always use the finest in the vertical do mID = 0, dimsizes(indexes) - 1 @@ -122,13 +122,13 @@ begin end if flags = (/flag_plev, flag_lat, flag_lon/) - ; Check that all models have the same dimensions + ; Check that all datasets have the same dimensions if(mID.eq.0) then flags0 = flags else if(.not.all(flags.eq.flags0)) then error_msg("f", scriptname, funcname, \ - "all models must have same dimensions") + "all datasets must have same dimensions") end if end if @@ -143,7 +143,7 @@ begin lower_plev = max(tmp&plev) ref_plev = tmp&plev ref_nplev = dimsizes(ref_plev) - modelID_plev = mID + datasetID_plev = mID else if (d_up.lt.1.d-5 .and. d_lo.lt.1.d-5) then if (dimsizes(tmp&plev).gt.ref_nplev .and. opt.eq."finest") then delete(ref_plev) @@ -151,7 +151,7 @@ begin lower_plev = max(tmp&plev) ref_plev = tmp&plev ref_nplev = dimsizes(ref_plev) - modelID_plev = mID + datasetID_plev = mID end if if (dimsizes(tmp&plev).lt.ref_nplev .and. opt.eq."coarsest") then delete(ref_plev) @@ -159,7 +159,7 @@ begin lower_plev = max(tmp&plev) ref_plev = tmp&plev ref_nplev = dimsizes(ref_plev) - modelID_plev = mID + datasetID_plev = mID end if end if end if @@ -174,7 +174,7 @@ begin delete(ref_lat) ref_lat = tmp&lat ref_nlat = dimsizes(ref_lat) - modelID_lat = mID + datasetID_lat = mID end if end if @@ -185,12 +185,12 @@ begin delete(ref_lon) ref_lon = tmp&lon ref_nlon = dimsizes(ref_lon) - modelID_lon = mID + datasetID_lon = mID end if end if delete(tmp) - end do ; models + end do ; datasets ; Assemble target grid, depending on (non-)existence of dimensions if(flag_plev .and. flag_lat .and. flag_lon) then ; plev, lat, lon @@ -231,15 +231,15 @@ begin if(flag_plev) then grid&plev = ref_plev - grid@gridlev_mID = modelID_plev + grid@gridlev_mID = datasetID_plev end if if(flag_lat) then grid&lat = ref_lat - grid@gridlat_mID = modelID_lat + grid@gridlat_mID = datasetID_lat end if if(flag_lon) then grid&lon = ref_lon - grid@gridlon_mID = modelID_lon + grid@gridlon_mID = datasetID_lon end if leave_msg(scriptname, funcname) @@ -553,9 +553,9 @@ begin end ; ############################################################################# -undef("get_model_minus_ref") -function get_model_minus_ref(model[*][*]:numeric, - ref[*][*]:numeric) +undef("get_dataset_minus_ref") +function get_dataset_minus_ref(dataset[*][*]:numeric, + ref[*][*]:numeric) ; ; Arguments ; @@ -571,46 +571,46 @@ function get_model_minus_ref(model[*][*]:numeric, ; ; Modification history ; -local funcname, scriptname, model_grid_size, ref_grid_size, local_model, \ +local funcname, scriptname, dataset_grid_size, ref_grid_size, local_dataset, \ local_ref, difference begin - funcname = "get_model_minus_ref" + funcname = "get_dataset_minus_ref" scriptname = "diag_scripts/shared/regridding.ncl" enter_msg(scriptname, funcname) - is_plev = any(isdim(model, "plev")) - model_grid_size = guestimate_average_grid_area(model) + is_plev = any(isdim(dataset, "plev")) + dataset_grid_size = guestimate_average_grid_area(dataset) ref_grid_size = guestimate_average_grid_area(ref) - dimmodel = dimsizes(model) + dimdataset = dimsizes(dataset) dimref = dimsizes(ref) - log_debug("get_model_minus_ref: dims are, model:" + dimmodel + \ + log_debug("get_dataset_minus_ref: dims are, dataset:" + dimdataset + \ ", ref" + dimref) - if (model_grid_size .gt. ref_grid_size) then + if (dataset_grid_size .gt. ref_grid_size) then if (is_plev) then - local_ref = plev_lat_interp(ref, model) + local_ref = plev_lat_interp(ref, dataset) else - local_ref = rect2rect_interp(ref, model) + local_ref = rect2rect_interp(ref, dataset) end if - local_model = model + local_dataset = dataset ; Copy meta data - difference = local_model + difference = local_dataset else if (is_plev) then - local_ref = plev_lat_interp(model, ref) + local_ref = plev_lat_interp(dataset, ref) else - local_model = rect2rect_interp(model, ref) + local_dataset = rect2rect_interp(dataset, ref) end if local_ref = ref ; Copy meta data difference = local_ref end if - dimmodel = dimsizes(local_model) + dimdataset = dimsizes(local_dataset) dimref = dimsizes(local_ref) - log_debug("get_model_minus_ref: dims are, model:" + dimmodel + \ + log_debug("get_dataset_minus_ref: dims are, dataset:" + dimdataset + \ ", ref" + dimref) - difference = local_model - local_ref + difference = local_dataset - local_ref leave_msg(scriptname, funcname) return(difference) @@ -731,7 +731,7 @@ function regrid_3D_to_rectilinear_grid(data_in:numeric, ; lon: array with longitudes ; lat: array with latitudes ; grid_resolution: grid resolution of destination grid -; filename: file name of model file +; filename: file name of dataset file ; regular: defines grid type ; True: rectilinear ; False: curvilinear @@ -781,7 +781,7 @@ begin nlat = dimx(1) nlon = dimx(2) - ; Convert models to SCRIP file. + ; Convert datasets to SCRIP file. temp = dim_sum_n(data_in, 0) ; This is needed to create the mask ; Variables like LAI have a different distribution of NaNs @@ -808,7 +808,7 @@ begin else error_msg("w", "regridding.ncl", funcname, \ "lat_vertices/lon_vertices not available for this " + \ - "model, using ESMF estimated values") + "dataset, using ESMF estimated values") end if curvilinear_to_SCRIP(srcGridName, lat, lon, Opt) end if @@ -854,7 +854,7 @@ begin ESMF_regrid_gen_weights(srcGridName, dstGridName, wgtFile, Opt) delete(Opt) - ; Interpolating models from original grid final grid + ; Interpolating datasets from original grid final grid Opt = True Opt@PrintTimings = False data_out = new((/ntime, dNLAT, dNLON/), typeof(data_in)) diff --git a/esmvaltool/interface_scripts/auxiliary.ncl b/esmvaltool/interface_scripts/auxiliary.ncl index e275078717..e9021b0881 100644 --- a/esmvaltool/interface_scripts/auxiliary.ncl +++ b/esmvaltool/interface_scripts/auxiliary.ncl @@ -6,7 +6,7 @@ ; ; Contents: ; procedure copy_VarCoords_l1 -; procedure check_min_max_models +; procedure check_min_max_datasets ; function tstep ; function get_ncdf_name ; function get_ncdf_dir @@ -27,7 +27,7 @@ ; procedure set_default_att ; function filter_attrs ; procedure write_ignore_warnings -; function get_ref_model_idx +; function get_ref_dataset_idx ; ; ############################################################################# @@ -99,20 +99,20 @@ begin end ; ############################################################################# -undef("check_min_max_models") -procedure check_min_max_models(no_models[1]:integer, - min_no_models[1]:integer, - max_no_models[1]:integer, - diag_script[1]) +undef("check_min_max_datasets") +procedure check_min_max_datasets(no_datasets[1]:integer, + min_no_datasets[1]:integer, + max_no_datasets[1]:integer, + diag_script[1]) ; ; Arguments -; no_models: number of models. -; min_no_models: minimum no of models required for this diagnostic script. -; max_no_models: maximum no of models required for this diagnostic script. +; no_datasets: number of datasets. +; min_no_datasets: minimum no of datasets required for this diag script. +; max_no_datasets: maximum no of datasets required for this diagg script. ; diag_script: name of diagnostic script. ; ; Description -; Checks if sufficient number of models are present for the given +; Checks if sufficient number of datasets are present for the given ; diagnostic, tries to abort with a intelligible message. ; ; Caveats @@ -124,20 +124,20 @@ procedure check_min_max_models(no_models[1]:integer, local funcname, scriptname begin - funcname = "check_min_max_models" + funcname = "check_min_max_datasets" scriptname = "interface_scripts/auxiliary.ncl" enter_msg(scriptname, funcname) - if (no_models .lt. min_no_models) then + if (no_datasets .lt. min_no_datasets) then error_msg("f", scriptname, funcname,\ - "Too few models (=" + no_models + ") for " + diag_script \ - + ". Mininum is " + min_no_models) + "Too few datasets (=" + no_datasets + ") for " + diag_script \ + + ". Mininum is " + min_no_datasets) end if - if (no_models .gt. max_no_models) then + if (no_datasets .gt. max_no_datasets) then error_msg("f", scriptname, funcname,\ - "Too many models (=" + no_models + ") for " + diag_script \ - + ". Maximum is " + max_no_models) + "Too many datasets (=" + no_datasets + ") for " + diag_script \ + + ". Maximum is " + max_no_datasets) end if leave_msg(scriptname, funcname) @@ -1419,16 +1419,16 @@ begin end ; ############################################################################# -undef("get_ref_model_idx") -function get_ref_model_idx(models[1]:logical,\ - model_ref_name:string) +undef("get_ref_dataset_idx") +function get_ref_dataset_idx(datasets[1]:logical,\ + dataset_ref_name:string) ; ; Arguments -; models: list of all models -; model_ref_name: reference model name, possibly two, separated by comma +; datasets: list of all datasets +; dataset_ref_name: reference dataset name, possibly two, separated by comma ; ; Description -; Fetches the reference model index in model_info@model +; Fetches the reference dataset index in dataset_info@dataset ; ; Caveats ; @@ -1440,18 +1440,19 @@ function get_ref_model_idx(models[1]:logical,\ local funcname, scriptname, nrefs, idx_ref begin - funcname = "get_ref_model_idx" + funcname = "get_ref_dataset_idx" scriptname = "interface_scripts/auxiliary.ncl" enter_msg(scriptname, funcname) - nrefs = dimsizes(model_ref_name) + nrefs = dimsizes(dataset_ref_name) idx_ref = new(nrefs, integer) do ii = 0, nrefs - 1 - idx_ref(ii) = ind(model_info@model.eq.str_squeeze(model_ref_name(ii))) + idx_ref(ii) = \ + ind(dataset_info@dataset.eq.str_squeeze(dataset_ref_name(ii))) if (ismissing(idx_ref(ii))) then - error_msg("f", scriptname, funcname, "reference model " + \ - model_ref_name(ii) + " not found in the models list") + error_msg("f", scriptname, funcname, "reference dataset " + \ + dataset_ref_name(ii) + " not found in the datasets list") end if end do diff --git a/esmvaltool/interface_scripts/data_handling.ncl b/esmvaltool/interface_scripts/data_handling.ncl index 1dc9c1e43b..5a08755a5a 100644 --- a/esmvaltool/interface_scripts/data_handling.ncl +++ b/esmvaltool/interface_scripts/data_handling.ncl @@ -6,14 +6,10 @@ ; ; Contents: ; function read_data +; function read_fx_data ; ; ############################################################################# -; Global variables to save the names of all files read by "read_data" -gFilesRead0 = new(10000, string) -gNFiles0 = 0 - -; ############################################################################# undef("read_data") function read_data(index[1]:integer, variable[1]:string, @@ -49,7 +45,7 @@ begin ; Check array boundaries first if (index.lt.0 .or. index.gt.(dimsizes(input_file_info@filename) - 1)) then - error_msg("f", scriptname, funcname, "model index out of range") + error_msg("f", scriptname, funcname, "dataset index out of range") end if infile = input_file_info@filename(index) @@ -73,18 +69,9 @@ begin ; Check that variable is in the file if (.not. isfilevar(fin, variable)) then error_msg("f", scriptname, funcname, "variable " + variable + \ - "is not in the file") - end if - - ; Add to the list of read in files for traceability/provenance log - if (gNFiles0.lt.dimsizes(gFilesRead0)) then - gFilesRead0(gNFiles0) = infile - gNFiles0 = gNFiles0 + 1 + " not found in file " + infile) end if - ; Read attributes and write info to log-file - inquire_and_save_fileinfo(infile, input_file_info@model(index), variable) - ; Read data data = fin->$variable$ @@ -92,3 +79,102 @@ begin return(data) end + + +; ############################################################################# +undef("read_fx_data") +function read_fx_data(index[1]:integer, + variable[1]:string) +; +; Arguments +; index: index to current input file as defined in the _info.ncl +; file in the preproc directory of the current variable +; variable: name of the fx variable to read +; +; Return value +; The a list of data array(s) with all metadata or a missing value if the +; fx variable is not found. +; +; Description +; Retrieve the fx variable data and metadata based on the input_file_info +; logical defined in the _info.ncl file automatically generated +; by the preprocessor and stored in the preproc// subdirectory. +; Unlike read_data, this function does not exit on error if the input file +; is not found. This is to provide more flexibility to the calling +; diagnostic. +; +; Caveats +; If auxiliary coordinates are associated to the fx-variables (typically for +; areacello), these are also read and pushed to the return list. +; +; References +; +; Modification history +; 20180526_A-righ_ma: written. +; +local funcname, scriptname, infile, fin +begin + + funcname = "read_fx_data" + scriptname = "interface_scripts/data_handling.ncl" + enter_msg(scriptname, funcname) + + ; Check array boundaries first + if (index.lt.0 .or. index.gt.(dimsizes(input_file_info@filename) - 1)) then + error_msg("f", scriptname, funcname, "dataset index out of range") + end if + + if (.not.isatt(input_file_info, variable)) then + error_msg("f", scriptname, funcname, "input path for fx variable " + \ + variable + " not found in the interface file, please add " + \ + "the required fx variable to the recipe") + end if + + infile = input_file_info@$variable$(index) + + ; Return missing if variable not available + if (infile.eq."None") then + error_msg("w", scriptname, funcname, "fx variable " + variable + \ + " not found for dataset " + dataset_info@dataset(index)) + out = new(1, float) + out = default_fillvalue(typeof(out)) + return(out) + end if + + ; Open file + log_info("Reading in file = " + infile) + fin = addfile(infile, "r") + + ; Check that variable is in the file + if (.not. isfilevar(fin, variable)) then + error_msg("f", scriptname, funcname, "variable " + variable + \ + " not found in " + infile) + end if + + ; Initialize list + outlist = NewList("lifo") + + ; Check if auxiliary coordinates are defined + atts = getfilevaratts(fin, variable) + if (any("coordinates".eq.atts)) then + ; Read auxiliary coordinates in reverse order (for correct order in list) + coords = fin->$variable$@coordinates + ncoords = str_fields_count(coords, " ") + do ii = 1, ncoords + curr_coord = str_squeeze(str_get_field(coords, ncoords + 1 - ii, " ")) + if (.not. isfilevar(fin, curr_coord)) then + error_msg("w", scriptname, funcname, "auxiliary coordinate " + \ + curr_coord + " not found in " + infile + ", skipping") + else + ListPush(outlist, fin->$curr_coord$) + end if + end do + end if + + ; Push variable to the list + ListPush(outlist, fin->$variable$) + + leave_msg(scriptname, funcname) + return(outlist) + +end diff --git a/esmvaltool/interface_scripts/interface.ncl b/esmvaltool/interface_scripts/interface.ncl index 7e0c8e820e..e01538021c 100644 --- a/esmvaltool/interface_scripts/interface.ncl +++ b/esmvaltool/interface_scripts/interface.ncl @@ -15,7 +15,7 @@ begin loadscript("$settings") end -; Load input_file_info, model_info and variable_info from _info.ncl +; Load input_file_info, dataset_info and variable_info from _info.ncl begin vardeffiles = \ str_match_ic_regex(diag_script_info@input_files, ".*_info\" + ".ncl") diff --git a/esmvaltool/interface_scripts/logging.ncl b/esmvaltool/interface_scripts/logging.ncl index 78f4caf604..73931a7292 100644 --- a/esmvaltool/interface_scripts/logging.ncl +++ b/esmvaltool/interface_scripts/logging.ncl @@ -17,7 +17,6 @@ ; procedure inquire_and_save_fileinfo ; ; ############################################################################# -MASTER_REFS = "../doc/MASTER_authors-refs-acknow.txt" gOldVar = "" gOldDiag = "" @@ -284,7 +283,7 @@ end undef("write_filelist") procedure write_filelist(script:string, variable:string, - model:string, + dataset:string, filelist:string, sourcefilelist:string, fixfile:string, @@ -297,7 +296,7 @@ procedure write_filelist(script:string, ; script: name of the diagnostic script for which the input files are ; written to the log file ; variable: name of variable -; model: name of model +; dataset: name of dataset ; filelist: list of filenames processed to produce the file to be written ; sourcefilelist: list of filenames processed to produce the input files ; of the file to be written (e.g., input files used to @@ -372,7 +371,7 @@ begin system("echo " + " >> " + output_refs) end if gOldVar = variable - system(s_open + " Model: " + model + s_close) + system(s_open + " Dataset: " + dataset + s_close) system(s_open + " Input path: " + path + s_close) system(s_open + " Input file(s):" + s_close) @@ -459,28 +458,28 @@ begin scriptname = "interface_scripts/logging.ncl" enter_msg(scriptname, funcname) - hline = "-------------------------" - hline_dble = "=========================" - hline = hline + hline + hline - hline_dble = hline_dble + hline_dble + hline_dble + ; hline = "-------------------------" + ; hline_dble = "=========================" + ; hline = hline + hline + hline + ; hline_dble = hline_dble + hline_dble + hline_dble ; Master refs file - master_refs = MASTER_REFS + ; master_refs = MASTER_REFS ; Output refs file - output_refs = config_user_info@run_dir + "/references-acknowledgements.txt" + ; output_refs = config_user_info@run_dir + "/references-acknowledgements.txt" - s_open = "echo " + str_get_dq - s_close = str_get_dq + " >> " + output_refs + ; s_open = "echo " + str_get_dq + ; s_close = str_get_dq + " >> " + output_refs ; If first time (empty output_refs) write header - if (.not. fileexists(output_refs)) then - write_header(s_open, hline, s_close) - end if + ; if (.not. fileexists(output_refs)) then + ; write_header(s_open, hline, s_close) + ; end if ; write diagnostic header - write_diag_header(s_open, hline_dble, s_close, master_refs, output_refs, \ - auth, contr, diag, obs, proj, script) + ; write_diag_header(s_open, hline_dble, s_close, master_refs, output_refs, \ + ; auth, contr, diag, obs, proj, script) leave_msg(scriptname, funcname) @@ -489,12 +488,12 @@ end ; ############################################################################# undef("inquire_and_save_fileinfo") procedure inquire_and_save_fileinfo(filename:string, - model:string, + dataset:string, variable:string) ; ; Arguments ; filename: file name of input file (netCDF) -; model: name of model +; dataset: name of dataset ; variable: name of variable ; ; Description @@ -636,7 +635,7 @@ begin end if ; Write information on processed files to log-file - write_filelist(diag_script, variable, model, filelist(0:n - 1), \ + write_filelist(diag_script, variable, dataset, filelist(0:n - 1), \ sourcefilelist(0:ns), fixfile, sourcefixfile, \ sourcereflist(0:nr), sourcetidlist(0:ns), version) diff --git a/esmvaltool/interface_scripts/write_header.ncl b/esmvaltool/interface_scripts/write_header.ncl index 41e20e1581..c61941ebd9 100644 --- a/esmvaltool/interface_scripts/write_header.ncl +++ b/esmvaltool/interface_scripts/write_header.ncl @@ -20,14 +20,14 @@ procedure write_header(s_open:string, ; 20160713-A_laue_ax: updated ESMValTool reference ; 20150630-A_laue_ax: written. ; -local funcname, scriptname, namelist, version +local funcname, scriptname, recipe, version begin funcname = "write_header" scriptname = "interface_scripts/logging.ncl" - ; Namelist in use - namelist = diag_script_info@namelist + ; Recipe in use + recipe = diag_script_info@recipe ; ESMValTool version version = diag_script_info@version @@ -40,7 +40,7 @@ begin " +++++++++++++" + s_close) system(s_open + hline + s_close) system(s_open + "" + s_close) - system(s_open + "Namelist file: " + namelist + s_close) + system(s_open + "Recipe file: " + recipe + s_close) system(s_open + "Creation date: `date`" + s_close) system(s_open + "ESMValTool version: " + version + s_close) system(s_open + "Host name: " + getenv("HOST") + s_close) diff --git a/esmvaltool/namelist_schema.yml b/esmvaltool/namelist_schema.yml deleted file mode 100644 index b651f75d9d..0000000000 --- a/esmvaltool/namelist_schema.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Generic namelist Yamale schema definition. -# See https://github.com/23andMe/Yamale for help. - ---- -# Namelist schema -models: list(include('model'), required=False) -preprocessors: map(map(), min=1) -diagnostics: map(include('diagnostic'), required=False) - ---- -# Namelist item definitions -model: - model: str() - project: str() - start_year: int(min=1750, max=2250) - end_year: int(min=1750, max=2250) - ensemble: str(required=False) - exp: 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: - field: str() - preprocessor: str() - reference_model: str(required=False) - alternative_model: str(required=False) - mip: str(required=False) - -# TODO: add preprocessor item - -diagnostic: - scripts: any(null(), map(include('script'))) - additional_models: list(include('model'), required=False) - description: str(required=False) - variables: map(include('variable'), required=False) - -script: - script: str() diff --git a/esmvaltool/namelists/namelist_example_ncl.yml b/esmvaltool/namelists/namelist_example_ncl.yml deleted file mode 100644 index 8594759d1d..0000000000 --- a/esmvaltool/namelists/namelist_example_ncl.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- - -models: - - {model: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} - -preprocessors: - preprocessor_1: - extract_levels: - levels: 85000 - scheme: nearest - regrid: false - mask_landocean: false - multi_model_statistics: false - - preprocessor_2: - extract_levels: false - regrid: - target_grid: ERA-Interim - scheme: linear - mask_landocean: false - multi_model_statistics: false - -diagnostics: - ta_diagnostics: - description: Air temperature tutorial diagnostics. - variables: - ta: - preprocessor: preprocessor_1 - field: T3M - additional_models: - - {model: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} - scripts: - test_ta: &settings - script: examples/diagnostic_ta.ncl - projection: Mollweide - styleset: CMIP5 - colormap: WhiteBlueGreenYellowRed - ncdf: default - test_ta_no2: - <<: *settings - script: examples/diagnostic_ta.ncl - - pr_diagnostic: - description: Precipitation tutorial diagnostic. - variables: - pr: - preprocessor: preprocessor_2 - field: T2Ms - additional_models: [] - scripts: - test_pr: - <<: *settings - script: examples/diagnostic_pr.ncl diff --git a/esmvaltool/namelists/namelist_example_py.yml b/esmvaltool/namelists/namelist_example_py.yml deleted file mode 100644 index 2eadb4f957..0000000000 --- a/esmvaltool/namelists/namelist_example_py.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- - -models: - - {model: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} - -preprocessors: - - preprocessor1: - extract_levels: - levels: 85000 - scheme: nearest - regrid: - target_grid: reference_model - scheme: linear - multi_model_statistics: - span: overlap - statistics: [mean, median] - - preprocessor2: - regrid: - target_grid: reference_model - scheme: linear - multi_model_statistics: - span: overlap - statistics: [mean, median] - -diagnostics: - - diagnostic1: - description: Air temperature and precipitation Python tutorial diagnostic. - variables: - ta: - preprocessor: preprocessor1 - field: T3M - reference_model: ERA-Interim - additional_models: - - {model: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} - pr: - preprocessor: preprocessor2 - field: T2Ms - reference_model: ERA-Interim - scripts: - script1: - script: examples/diagnostic.py - quickplot: - plot_type: pcolormesh diff --git a/esmvaltool/namelists/namelist_perfmetrics_CMIP5.yml b/esmvaltool/namelists/namelist_perfmetrics_CMIP5.yml deleted file mode 100644 index 46efe7137f..0000000000 --- a/esmvaltool/namelists/namelist_perfmetrics_CMIP5.yml +++ /dev/null @@ -1,1479 +0,0 @@ -############################################################################### -# namelist_perfmetrics_CMIP5.xml -# -# Description -# Namelist for plotting the performance metrics for the CMIP5 models, -# including the "standard" ECVs as in Gleckler et al., plus some additional -# variables (like ozone, sea-ice, aerosol...) -# -# Authors -# Franziska Frank (DLR, Germany) -# Mattia Righi (DLR, Germany) -# Veronika Eyring (DLR, Germany) -# -# Project -# DLR ESMVal -# -# Reference -# Gleckler et al., J. Geophys. Res., 113, D06104, doi: 10.1029/2007JD008972 -# (2008) -# -# This namelist is part of the ESMValTool -############################################################################### ---- -preprocessors: - pp850: - extract_levels: - levels: 85000 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - pp500: - extract_levels: - levels: 50000 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - pp400: - extract_levels: - levels: 40000 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - pp200: - extract_levels: - levels: 20000 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - pp30: - extract_levels: - levels: 3000 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - pp5: - extract_levels: - levels: 500 - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - ppNOLEV1: - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model] - - ppNOLEV2: - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - ppNOLEV1x1: - regrid: - target_grid: 1x1 - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - ppALL: - extract_levels: - levels: reference_model - scheme: linear - regrid: - target_grid: reference_model - scheme: linear - mask_fillvalues: - threshold_fraction: 0.95 - multi_model_statistics: - span: overlap - statistics: [mean, median] - exclude: [reference_model, alternative_model] - - -diagnostics: - - ### ta: AIR TEMPERATURE ############################################################################################################################## - - ta850: - description: Air temperature at 850 hPa global. - variables: - ta: - preprocessor: pp850 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - cycle: &cycle_settings - script: perfmetrics/main.ncl - plot_type: cycle # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) - time_avg: monthlyclim # Time average ('opt' argument of time_operations.ncl) - region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') - plot_stddev: ref_model # Plot standard deviation ('all', 'none', 'ref_model' or given model name) - legend_outside: true # Plot legend in a separate file - styleset: CMIP5 # Plot style - grading: &grading_settings - <<: *cycle_settings - plot_type: cycle_latlon # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) - draw_plots: false # Do not draw plots - calc_grading: true # Calculate grading - metric: [RMSD, taylor] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median, none] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ta200: - description: Air temperature at 200 hPa global. - variables: - ta: - preprocessor: pp200 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - cycle: - <<: *cycle_settings - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ta30: - description: Air temperature at 30 hPa global. - variables: - ta: - preprocessor: pp30 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - cycle: - <<: *cycle_settings - - - ta5: - description: Air temperature at 5 hPa global. - variables: - ta: - preprocessor: pp5 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - cycle: - <<: *cycle_settings - - - taZONAL: - description: Air temperature zonal mean - variables: - ta: - preprocessor: ppALL - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - zonal: &zonal_settings - script: perfmetrics/main.ncl - plot_type: zonal # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) - time_avg: annualclim # Time average ('opt' argument of time_operations.ncl) - region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') - plot_diff: true # Draw difference plots - t_test: true # Calculate t-test in difference plots - conf_level: 0.95 # Confidence level for the t-test - stippling: true # Mask non-significant values with stippling - abs_levs: [200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300] # Contour levels for absolute plot - diff_levs: [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10] # Contour levels for difference plot - - - ### ua: EASTWARD WIND ################################################################################################################################ - - ua850: - description: Eastward wind at 850 hPa global. - variables: - ua: - preprocessor: pp850 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ua200: - description: Eastward wind at 200 hPa global. - variables: - ua: - preprocessor: pp200 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### va: NORTHWARD WIND ############################################################################################################################### - - va850: - description: Northward wind at 850 hPa global. - variables: - va: - preprocessor: pp850 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - va200: - description: Northward wind at 200 hPa global. - variables: - va: - preprocessor: pp200 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### zg: GEOPOTENTIAL HEIGHT ########################################################################################################################## - - zg500: - description: Geopotential height 500 hPa global. - variables: - zg: - preprocessor: pp500 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### hus: SPECIFIC HUMIDITY ########################################################################################################################### - - hus400: - description: Specific humidity at 400 hPa global. - variables: - hus: - preprocessor: pp400 - reference_model: AIRS - alternative_model: ERA-Interim - mip: Amon - field: T3M - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} - - {model: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start_year: 2003, end_year: 2004, tier: 1} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2003, end_year: 2004, tier: 3} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### tas: NEAR-SURFACE TEMPERATURE #################################################################################################################### - - tas: - description: Near-surface air temperature - variables: - tas: - preprocessor: ppNOLEV2 - reference_model: ERA-Interim - alternative_model: NCEP - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} - - {model: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - latlon: &latlon_settings - script: perfmetrics/main.ncl - plot_type: latlon # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) - time_avg: annualclim # Time average ('opt' argument of time_operations.ncl) - region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') - plot_diff: true # Draw difference plots - t_test: true # Calculate t-test in difference plots - conf_level: 0.95 # Confidence level for the t-test - abs_levs: [240, 243, 246, 249, 252, 255, 258, - 261, 264, 267, 270, 273, 276, 279, - 282, 285, 288, 291, 294, 297, 300] # Contour levels for absolute plot - diff_levs: [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] # Contour levels for difference plot - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### ts: SEA-SURFACE (SKIN) TEMPERATURE ############################################################################################################### - - ts: - description: Sea-surface (skin) temperature - variables: - ts: - preprocessor: ppNOLEV1x1 - reference_model: ESACCI-SST - alternative_model: HadISST - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ESACCI-SST, project: OBS, type: sat, version: L4-GHRSST-SSTdepth-OSTIA-GLOB, start_year: 2000, end_year: 2002, tier: 2} - - {model: HadISST, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### pr: PRECIPITATIONS ############################################################################################################################### - - pr: - description: Precipitations - variables: - pr: - preprocessor: ppNOLEV1 - reference_model: GPCP-SG - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start_year: 2000, end_year: 2002, tier: 1} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### clt: TOTAL CLOUD COVER ########################################################################################################################### - - clt: - description: Total cloud cover - variables: - clt: - preprocessor: ppNOLEV2 - reference_model: ESACCI-CLOUD - alternative_model: PATMOS - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} - - {model: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ESACCI-CLOUD, project: OBS, type: sat, version: AVHRR-fv2.0, start_year: 2000, end_year: 2002, tier: 2} - - {model: PATMOS, project: OBS, type: sat, version: 1, start_year: 2000, end_year: 2002, tier: 2} - scripts: - latlon: - <<: *latlon_settings - show_global_avg: true - abs_levs: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Contour levels for absolute plot - diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### rlut: ALL-SKY LONGWAVE RADIATION ################################################################################################################# - - rlut: - description: All-sky longwave radiation - variables: - rlut: - preprocessor: ppNOLEV1 - reference_model: CERES-EBAF - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### rsut: ALL-SKY SHORTWAVE RADIATION ################################################################################################################ - - rsut: - description: All-sky shortwave radiation - variables: - rsut: - preprocessor: ppNOLEV1 - reference_model: CERES-EBAF - mip: Amon - field: T2Ms - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} - scripts: - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - - - ### lwcre: LONGWAVE CLOUD FORCING #################################################################################################################### - lwcre: - description: Longwave cloud radiative effect - variables: - lwcre: - preprocessor: ppNOLEV1 - reference_model: CERES-EBAF - mip: Amon - field: T2Ms - derive: true - force_derivation: false - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} - scripts: - latlon: - <<: *latlon_settings - abs_levs: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90 , 100] # Contour levels for absolute plot - diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot - grading: - <<: *grading_settings - - - ### swcre: SHORTWAVE CLOUD FORCING ################################################################################################################### - - swcre: - description: Shortwave cloud radiative effect - variables: - swcre: - preprocessor: ppNOLEV1 - reference_model: CERES-EBAF - mip: Amon - field: T2Ms - derive: true - force_derivation: false - additional_models: - - {model: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} - - {model: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} - - {model: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} - scripts: - latlon: - <<: *latlon_settings - abs_levs: [-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0] # Contour levels for absolute plot - diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot - grading: - <<: *grading_settings - metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') - normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') - -### od550aer: AEROSOL OPTICAL DEPTH AT 550 nm ######################################################################################################## - -### od870aer: AEROSOL OPTICAL DEPTH AT 870 nm ######################################################################################################## - -### od550lt1aer: FINE MODE AEROSOL OPTICAL DEPTH AT 550 nm ########################################################################################### - -### toz: TOTAL COLUMN OZONE ########################################################################################################################## - -### sic: SEA-ICE CONCENTRATION (NH) ################################################################################################################## - -### sic: SEA-ICE CONCENTRATION (SH) ################################################################################################################## - -### dos: SOIL MOISTURE ############################################################################################################################### - - -### COLLECT METRICS ################################################################################################################################## - - collect: - description: Wrapper to collect and plot previously calculated metrics - scripts: - RMSD: - script: perfmetrics/collect.ncl - ancestors: ['*/grading'] - metric: RMSD - label_bounds: [-0.5, 0.5] - label_scale: 0.1 - disp_values: false - cm_interval: [2, 241] - sort: true # Sort model in alphabetic order (excluding MMM) - taylor: - script: perfmetrics/collect.ncl - ancestors: ['*/grading'] - metric: taylor diff --git a/esmvaltool/namelists/namelist_preprocessor_derive_test.yml b/esmvaltool/namelists/namelist_preprocessor_derive_test.yml deleted file mode 100644 index c8bc88eb09..0000000000 --- a/esmvaltool/namelists/namelist_preprocessor_derive_test.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- - -models: -# - {model: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r2i1p1, start_year: 1997, end_year: 2005} -# - {model: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} - - {model: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} - - {model: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start_year: 1997, end_year: 2005} - - {model: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start_year: 1997, end_year: 2005} -# - {model: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} - - {model: ESACCI-OZONE, project: OBS, tier: 2, type: sat, version: L3, start_year: 1997, end_year: 2005} -# - {model: NIWA, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 1997, end_year: 2005} - -preprocessors: - - preprocessor: {} - -diagnostics: - - derive_diagnostic: - description: Test variable derivation - variables: - toz: - preprocessor: preprocessor - field: T2Ms - derive: true - force_derivation: false - additional_models: [] - scripts: null diff --git a/esmvaltool/namelists/tobeported/.gitignore b/esmvaltool/namelists/tobeported/.gitignore deleted file mode 100644 index 1479ddb387..0000000000 --- a/esmvaltool/namelists/tobeported/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/to_be_checked/ -*~ -*.fuse* diff --git a/esmvaltool/namelists/tobeported/namelist_CVDP.yml b/esmvaltool/namelists/tobeported/namelist_CVDP.yml deleted file mode 100644 index 5584909db6..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_CVDP.yml +++ /dev/null @@ -1,180 +0,0 @@ -############################################################################### -# namelist_CVDP.xml -# -# Description -# Namelist to calculate the major modes of climate variability based on the -# NCAR Climate Variability Dynamics Package (CVDP) -# -# Authors -# Adam Phillips (NCAR, USA) -# Clara Deser (NCAR, USA) -# -# Contributor -# Dominik Kunert (DLR, Germany) -# -# Project -# EMBRACE -# -# Reference -# Phillips, A. S. et al., EOS T. Am. Geophys. Un., 95, 453-455 (2014) -# http://webext.cgd.ucar.edu/Multi-Case/CVDP_ex/CMIP5-Historical/ -# methodology.html -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - show_debuginfo: True - read_from_vault: False - - -MODELS: -# Not required - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: None - - -DIAGNOSTICS: - -# OBSERVATIONS PREPROCESSING ########################################################################################### - - DIAG_obsSST: - description: Sea Surface Temperature (SST) Observations - variables: - - {name: ts, field: T2Ms} - scripts: - - {script: cvdp_obs.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} - additional_models: - - {name: HadISST, project: OBS, type: reanaly, version: 1, start: 1900, end: 2005, path: /obspath/Tier2/HadISST} - - - DIAG_obsSLP: Sea surface pressure (SLP) observations - description: Sea Surface Pressure (SLP) Observations - variables: - - {name: psl, field: T2Ms} - scripts: - - {script: cvdp_obs.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} - additional_models: - - {name: IFS-Cy31r2, project: ana4mips, mip: Amon, type: reanalyses, start: 1984, end: 2005, path: /obspath/Tier1/} - - - DIAG_obstas: - description: 2m Air Temperature Observations - variables: - - {name: tas, field: T2Ms} - scripts: - - {script: cvdp_obs.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} - additional_models: - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1984, end: 2005, path: /obspath/Tier2/NCEP} - - - DIAG_obspr: - description: Precipitation Observations - variables: - - {name: pr, field: T2Ms} - scripts: - - {script: cvdp_obs.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} - additional_models: - - {name: GPCP-SG, project: obs4mips, level: L3, version: 2.2, start: 1984, end: 2005, path: /obspath/Tier2/NCEP} - - - # DIAG_obssnowdp: - # description: Snow Depth Observations - # variables: - # - {name: snowdp, field: T2Ms} - # scripts: - # - {script: cvdp_obs.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} - - -# OCEAN MODELS PREPROCESSING ########################################################################################### - - # DIAG_obssnd: - # description: OImond Models - # variables: - # - {name: snd, field: T2Ms} - # scripts: - # - {script: cvdp_ocean.ncl, cfg_file: ./nml/cfg_CVDP/cdf_cvdp.ncl} - # additional_models: - # - {name: MPI-ESM_LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - DIAG_obsmsfzmyz: - description: Omon Models - variables: - - {name: msfzmyz, field: T3Mz} - scripts: - - {script: cvdp_ocean.ncl, cfg_file: ./nml/cfg_CVDP/cvdp_ocean.ncl} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Omon, exp: historical, ensemble: r2i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: Omon, exp: historical, ensemble: r2i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - # - {name: FGOALS-g2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - # - {name: NorESM1-M, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - # - {name: NorESM1-ME, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1 start: 1900, end: 2005, exp: /modelpath/CMIP5/} - - -# ATMOSPHERIC MODELS PREPROCESSING -# MR: what is ersst here?? - DIAG_Amon: - description: Amon Models - variables: - - {name: ts, field: T2Ms} - - {name: psl, exclude_model: ersst, field: T2Ms} - - {name: tas, exclude_model: ersst, field: T2Ms} - - {name: pr, exclude_model: ersst, field: T2Ms} - scripts: - - {script: cvdp_atmos.ncl, cfg_file: ./nml/cfg_CVDP/cfg_cvdp.ncl} # this will also call cvdp_driver.ncl - additional_models: - - {name: ACCESS1-0, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - # - {name: CanCM4, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CM, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - # - {name: EC-EARTH, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - # - {name: FGOALS-s2, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - # - {name: HadGEM2-CC, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - # - {name: HadGEM2-ES, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1950, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1900, end: 2005, path: /modelpath/CMIP5/} diff --git a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_SFCflux.yml b/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_SFCflux.yml deleted file mode 100644 index 8a4dc6a47c..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_SFCflux.yml +++ /dev/null @@ -1,327 +0,0 @@ -############################################################################### -# namelist_DiurnalCycle_box_SFCflux.xml -# -# Description -# Computes mean diurnal cycle of surface radiation over specific boxes and -# seasons -# -# Author -# Catherine Rio (LMD, France) -# -# Project -# EMBRACE -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-A, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_rsds: - description: Mean diurnal cycle of SWdnSFC over specific boxes - variables: - - {name: rsds, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rlds: - description: Mean diurnal cycle of LWdnSFC over specific boxes - variables: - - {name: rlds, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rsdscs: - description: Mean diurnal cycle of SWdnSFCclr over specific boxes - variables: - - {name: rsdscs, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rldscs: - description: Mean diurnal cycle of LWdnSFCclr over specific boxes - variables: - - {name: rldscs, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rsus: - description: Mean diurnal cycle of SWupSFC over specific boxes - variables: - - {name: rsus, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rsuscs: - description: Mean diurnal cycle of SWupSFCclr over specific boxes - variables: - - {name: rsuscs, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} - - - DIAG_rlus: - description: Mean diurnal cycle of LWupSFC over specific boxes - variables: - - {name: rlus, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {scripts: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg/} diff --git a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_TOAflux.yml b/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_TOAflux.yml deleted file mode 100644 index f8cfaf6d36..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_TOAflux.yml +++ /dev/null @@ -1,197 +0,0 @@ -############################################################################### -# namelist_DiurnalCycle_box_TOAflux.xml -# -# Description -# Computes mean diurnal cycle of TOA radiation over specific boxes and seasons -# -# Author -# Catherine Rio (LMD, France) -# -# Project -# EMBRACE -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - read_from_vault: False - - -MODELS: - - {name: CNRM-AM-PRE6, project: CMIP5, mip: 3hr, exp: amip, ensmble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: MPIESM-1-1, project: CMIP5, mip: 3hr, exp: amip, ensmble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - -DIAG_: - description: Mean diurnal cycle of SWupTOA over specific boxes - variable: {name: rsut, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_SON.ncl - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg} - -DIAG_: - description: Mean diurnal cycle of SWupTOAclr over specific boxes - variable: {name: rsutcs, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_SON.ncl - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg} - - -DIAG_: - description: Mean diurnal cycle of LWupTOA over specific boxes - variable: {name: rlut, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_SON.ncl - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg} - - -DIAG_: - description: Mean diurnal cycle of LWupTOAclr over specific boxes - variable: {name: rlutcs, ref_model: CERES-SYN1deg, field: T2Is} - scripts: - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_DJF.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_MAM.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_JJA.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Sahel_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WestAf_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_GoG_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_India_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_IO_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_Amazon_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_EEP_SON.ncl - - {script: DiurnalCycle_box.ncl, cfg_file: cfg_DiurnalCycle_WEP_SON.ncl - additional_models: - - {name: CERES-SYN1deg, project: OBS, type: sat, version: 3hr, start: 2004, end: 2004, /obspath/Tier3/CERES-SYN1deg} diff --git a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_pr.yml b/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_pr.yml deleted file mode 100644 index 5831cbcc2f..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_box_pr.yml +++ /dev/null @@ -1,82 +0,0 @@ -############################################################################### -# namelist_DiurnalCycle_box_box_pr.xml -# -# Description -# Computes mean diurnal cycle of precipitation over specific boxes and seasons -# -# Authors -# Catherine Rio (LMD, France) -# -# Project -# EMBRACE -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-A, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: 3hr, experiment: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG: - description: Mean diurnal cycle of precipitation over specific boxes - variables: - - {name: pr-mmh, ref_model: TRMM, type: T2Is} - scripts: - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_DJF.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_MAM.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_JJA.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Sahel_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WestAf_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_GoG_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_India_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_IO_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_Amazon_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_EEP_SON.ncl} - - {script: DiurnalCycle_box.ncl, cfg_file: ./nml/cfg_DiurnalCycle/cfg_DiurnalCycle_WEP_SON.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 2004, end: 2004, path: /obspath/Tier2/TRMM-3B42/} - diff --git a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_harmonic.yml b/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_harmonic.yml deleted file mode 100644 index d7d25e815e..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_DiurnalCycle_harmonic.yml +++ /dev/null @@ -1,54 +0,0 @@ -############################################################################### -# namelist_DiurnalCycle_harmonic.xml -# -# Description -# Computes mean diurnal cycle of precipitation over specific boxes -# and seasons. - -# Author -# Catherine Rio (LMD, France) -# -# Project -# EMBRACE -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - read_from_vault: False - - -MODELS: - - {name: CMRN-CM5, project: CMIP5, mip: 3hr, exp: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5} - - {name: HadGEM-A, project: CMIP5, mip: 3hr, exp: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5} - - {name: EC-EARTH, project: CMIP5, mip: 3hr, exp: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: 3hr, exp: amip, ensemble: r1i1p1, start: 2004, end: 2004, path: /modelpath/CMIP5} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG: - description: Maximum of precipitation - variables: - - {name: pr-mmh, ref_model: TRMM, field: T2Is} - scripts: - - {script: DiurnalCycle_precip_harmonic.ncl, cfg_file: cfg_DiurnalCycle_harmonic_DJF.ncl} - - {script: DiurnalCycle_precip_harmonic.ncl, cfg_file: cfg_DiurnalCycle_harmonic_MAM.ncl} - - {script: DiurnalCycle_precip_harmonic.ncl, cfg_file: cfg_DiurnalCycle_harmonic_JJA.ncl} - - {script: DiurnalCycle_precip_harmonic.ncl, cfg_file: cfg_DiurnalCycle_harmonic_SON.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 2004, end: 2004, path: /obspath/Tier2/TRMM-3B42/} diff --git a/esmvaltool/namelists/tobeported/namelist_Emmons.yml b/esmvaltool/namelists/tobeported/namelist_Emmons.yml deleted file mode 100644 index 9a22e9d88f..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_Emmons.yml +++ /dev/null @@ -1,49 +0,0 @@ -############################################################################### -# namelist_Emmons.xml -# -# Description -# Namelist to plot vertical profiles compared to Emmons et al. (2000) data -# -# Author -# Klaus-Dirk Gottschaldt (DLR, Germany) -# -# Project -# DLR ESMVal -# -# Reference -# Emmons, L. K. et al., J. Geophys. Res., 105, 20497-20538, -# doi:10.1029/2000JD900232, (2000) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2001, end: 2001, path: /modelpath/CMIP5} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG: - description: Vertical profile of trace gases - variables: - - {name: tro3, field: T3M} - scripts: - - {script: Emmons.ncl, cfg_file: ./nml/cfg_Emmons/cfg_Emmons.ncl} - # MR: add observations here (?) diff --git a/esmvaltool/namelists/tobeported/namelist_Evapotranspiration.yml b/esmvaltool/namelists/tobeported/namelist_Evapotranspiration.yml deleted file mode 100644 index b081c423f3..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_Evapotranspiration.yml +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################### -# namelist_Evapotranspiration.xml -# -# Description -# General namelist to compute global contour plots of Evapotranspiration -# -# Authors -# Martin Evaldsson (SMHI, Sweden) -# Edouard Davin (ETH, Switzerland) -# Boris Orlowski (ETH, Switzerland) -# -# Project -# EMBRACE -# -# References -# Mueller, B. and Seneviratne, S. I. Geophys. Res. Lett., 41, 128-134, -# doi:10.1002/2013GL058055 (2014) -# Mueller, B. et al., Hydrol. Earth Syst. Sci., 17, 3707-3720, -# doi:10.5194/hess-17-3707-2013 (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - read_from_vault type: False - show_debuginfo: False - - -MODELS: - - {name: LandFlux-EVAL, project: OBS, type: ground, version: 1, srart: 1989, end: 2004, path: /obspath/Tier3/LandFlux-EVAL} -# MR: models need extra fx file for sftlf, do not use CMIP5_fx - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: Amon, exp: historical, ensemble: r12i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: land # MR: with cutoff, so that sftlf is not needed! - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG: - description: Simple evotranspiration plots using the LandFlux-Eval data set - variables: - - {name: et, ref_model: LandFlux-EVAL, field: T2Ms} - scripts: - - {script: Evapotranspiration.ncl, cfg_file: ./nml/cfg_et/cfg_Evapotranspiration.ncl} diff --git a/esmvaltool/namelists/tobeported/namelist_GlobalOcean.yml b/esmvaltool/namelists/tobeported/namelist_GlobalOcean.yml deleted file mode 100644 index 63d5158972..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_GlobalOcean.yml +++ /dev/null @@ -1,114 +0,0 @@ -############################################################################### -# namelist_GlobalOcean.xml -# -# Description -# Diagnostics to support the evaluation of ocean biogeochemical cycles at -# global scales. Implemented routines produce time series lines and contour -# plots (for climatological distributions or inter-annual or inter-seasonal -# variability) using either 2-D (surface) or 3-D (depth-resolving) ocean -# variables -# -# Authors -# Oliver Andrews (UEA, UK) -# Clare Enright (UEA, UK) -# -# Project -# EMBRACE -# -# Reference -# Bakker, D. C. E. et al., Earth Syst. Sci. Data, 6, 69-90, -# doi:10.5194/essd-6-69-2014 (2014) -# Bianchi, D. et al., Global Biogeochem. Cy., 26, GB2009, -# doi:10.1029/2011GB004209 (2012) -# Jones, S. D. et al., J. Adv. Model Earth Syst., in press (2015). -# Key, R. M. et al.,Global Biogeochem. Cy., 18, GB4031, doi:10.109/2004GB002247 -# (2004) -# Roedenbeck, C. et al., Ocean Sci., 9, 193-216, doi:10.5194/os-9-193-2013 -# (2013) -# Takahashi, T. et al., Mar. Chem., 164, 95–125, -# doi:10.1016/j.marchem.2014.06.004 (2014) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - show_debug_info: False - output_file_type: ps - - -MODELS: - - -PREPROCESS: - -# MR: need to find a way to read in fx file (use class standard paths, avoid extra class). Not clear what the nml is doing here with AUXILIARIES - -DIAGNOSTICS: - - DIAG_spco2ts: - description: Time series for spco2 - variables: - - {name: spco2, ref_model: ETH-SOM-FFN, field: TO2Ms} - scripts: - - {script: GO_tsline.ncl, cfg_file: ./nml/cgf_GO/spco2Diag.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpath/CMIP5/} - - {name: ETH-SOM-FFN, project: OBS, type: ocean, version: 1, start: 1998, end: 2005, path: /obspath/Tier2/ETH-SOM-FFN/} - # MR: need to find a way to read in fx file (use class standard paths, avoid extra class). Not clear what the nml is doing here. - - - DIAG_spco2cont: - description: Contour map diagnostic for surface ocean pCO2 - variables: - - {name: spco2, ref_model: ETH-SOM-FFN, field: T2OMs} - scripts: - - {script: GO_comp_map.ncl, cfg_file: ./nml/cfg_GO/spco2compmapDiag.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpa - - {name: inmcm4, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 1998: end: 2005, path: /modelpa - - {name: ETH-SOM-FFN, project: OBS, type: ocean, version: 1, start: 1998, end: 2005, path: /obspath/Tier2/ETH-SOM-FFN/} - # MR: need to find a way to read in fx file (use class standard paths, avoid extra class). Not clear what the nml is doing here. - - - DIAG_talkcont: - description: Contour map diagnostic for surface ocean Total Alkalinity - variables: - - {name: talk, ref_model: takahashi14, field: TO2Ms} - scripts: - - {script: GO_comp_map.ncl, cfg_file: ./nml/cfg_GO/talkcompmapDiag.ncl} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2005, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2005, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2005, end: 2005, path: /modelpath/CMIP5/} - - {name: takahashi14, project: OBS, type: ocean, version: 1, start: 2005, end: 2005, path: /obspath/Tier2/ETH-SOM-FFN/} - # MR: need to find a way to read in fx file (use class standard paths, avoid extra class). Not clear what the nml is doing here. - - - DIAG_o2cont: - description: Contour map diagnostic for ocean interior dissolved oxygen concentration - variables: - - {name: o2_onelev, ref_model: woa2005, field: TO2M} - scripts: - - {script: GO_comp_map.ncl, cfg_file: ./nml/cfg_GO/O2compmapDiag.ncl} - additional_models: - - {name: GFDL-ESM2M, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2001, end: 2001, path: /modelpath/CMIP5/} - - {name: woa2005, project: OBS, type: bianchi, version: reg, start: 2005, end: 2005, path: /obspath/Tier2/woa2005/} - # MR: need to find a way to read in fx file (use class standard paths, avoid extra class). Not clear what the nml is doing here. - - - DIAG_chlcont: - description: Contour map diagnostic for surface ocean chl - variables: {name: chl, ref_model: SeaWIFS, field: TO2Ms} - scripts: - - {script: GO_comp_map.ncl, cfg_file: ./nml/cfg_GO/chlcompmapDiag.ncl} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2000: end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CESM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2000: end: 2005, path: /modelpath/CMIP5/} - - {name: SeaWIFS, project: OBS, type: ocean, version: 1, start: 2000, end: 2005, path: /obspath/Tier2/SeaWIFS/} diff --git a/esmvaltool/namelists/tobeported/namelist_SAMonsoon.yml b/esmvaltool/namelists/tobeported/namelist_SAMonsoon.yml deleted file mode 100644 index 4a06b790b8..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SAMonsoon.yml +++ /dev/null @@ -1,124 +0,0 @@ -############################################################################### -# namelist_SAMonsoon.xml -# -# Description -# South Asian Monsoon diagnostics implemented from the UKMET Monsoon suite -# -# Authors -# Ricard Levine (UKMET, UK) -# Martin Evaldsson (SMHI, Sweden) -# -# Contributor -# Gill Martin (UKMET, UK) -# -# Project -# EMBRACE -# -# References -# Sperber, K. R. et al., Clim. Dyn. 41, 2711-2744, -# doi:10.1007/s00382-012-1607-6 (2013) -# Lin, J.-L. et al., J. Climate, 21, 4541-4567, doi: 10.1175/2008JCLI1816.1 -# (2008) -# Webster, P.J. and Yang, S., J. Roy. Meteor. Soc., 118, 877-926, -# doi:10.1002/qj.49711850705 (1992) -# Goswami, B. N. et al., Quart. J. Roy. Meteor. Soc., 125, 611-633, -# doi:10.1002/qj.49712555412 (1999) -# Wang, B. and Z. Fan, Bull. Amer. Meteor. Soc., 80, 629-638, -# doi:10.1175/1520-0477(1999)080<0629:COSASM>2.0.CO;2 (1999) -# Wang, B. et al., Clim. Dyn., 39, 1123-1135, doi:10.1007/s00382-011-1266-z -# (2011) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: IPSL-CM5A-MR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: MIROC5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: EC-EARTH, mip: Amon, exp: historical, ensemble: r12i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG_200: - description: Mean/stddev wind contour and vector plots at 200 hPa - variables: - - {name: ua-200, ref_model: ERA-Interim, field: T2Ms} - - {name: va-200, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_wind_basic_200mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier3/ERA-Interim/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier2/NCEP/} - - - DIAG_850: - description: Mean/stddev wind contour and vector plots at 850 hPa - variables: - - {name: ua-850, ref_model: ERA-Interim, field: T2Ms} - - {name: va-850, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_wind_basic_850mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier3/ERA-Interim/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier2/NCEP/} - - - DIAG_200-850: - description: Seasonal variability for wind + Monsoon index plots - variables: - - {name: ua-200-850, ref_model: ERA-Interim, field: T2Ms} - - {name: va-200-850, ref_model: ERA-Interim, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_seasonal.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_wind_seasonal.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier3/ERA-Interim/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier2/NCEP/} - - DIAG_pr: - description: Mean/stddev precip contour plots, seasonal variability, global intensity region plots - variables: - - {name: pr-mmday, ref_model: TRMM, field: T2Ds} - scripts: - - {name: SAMonsoon_precip_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - - {name: SAMonsoon_precip_seasonal.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - - {name: SAMonsoon_precip_domain.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2010, path: /obspath/Tier2/TRMM-3B42/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 1998, end: 2010, path: /obspath/Tier1/} - - {name: CMAP, project: OBS, type: mergedanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier2/CMAP/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERa-Interim/} - - {name: MERRA, project: ana4mips, mip: Amon, type: reanalysis, start: 1980, end: 2004, path: /obspath/TIer1/} - - DIAG_tele: - variables: - - {name: pr-mmday, ref_model: TRMM, exclude_model: HadISST, field: T2Ms} - - {name: ts, ref_model: HadISST, exclude_model: TRMM, field: T2Ms} - scripts: - - {name: SAMonsoon_teleconnections.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_tele.ncl} - additional_model: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2010, path: /obspath/Tier2/TRMM-3B42/} - - {name: HadISST, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier2/TRMM-3B42/} diff --git a/esmvaltool/namelists/tobeported/namelist_SAMonsoon_AMIP.yml b/esmvaltool/namelists/tobeported/namelist_SAMonsoon_AMIP.yml deleted file mode 100644 index 9113420c71..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SAMonsoon_AMIP.yml +++ /dev/null @@ -1,129 +0,0 @@ -############################################################################### -# namelist_SAMonsoon_AMIP.xml -# -# Description -# South Asian Monsoon diagnostics implemented from the UKMET Monsoon suite, -# this namelist is configured for AMIP runs (Atmosphere only runs with -# prescribed SST) -# -# Authors -# Ricard Levine (UKMET, Great Britain) -# Martin Evaldsson (SMHI, Sweden) -# -# Contributor -# Gill Martin (UKMET, Great Britain) -# -# Project -# EMBRACE -# -# References -# Sperber, K. R. et al., Clim. Dyn. 41, 2711-2744, -# doi:10.1007/s00382-012-1607-6 (2013) -# Lin, J.-L. et al., J. Climate, 21, 4541-4567, doi: 10.1175/2008JCLI1816.1 -# (2008) -# Webster, P.J. and Yang, S., J. Roy. Meteor. Soc., 118, 877-926, -# doi:10.1002/qj.49711850705 (1992) -# Goswami, B. N. et al., Quart. J. Roy. Meteor. Soc., 125, 611-633, -# doi:10.1002/qj.49712555412 (1999) -# Wang, B. and Z. Fan, Bull. Amer. Meteor. Soc., 80, 629-638, -# doi:10.1175/1520-0477(1999)080<;0629:COSASM>;2.0.CO;2 (1999) -# Wang, B. et al., Clim. Dyn., 39, 1123-1135, doi:10.1007/s00382-011-1266-z -# (2011) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-A, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: AMon, exp: amip, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG_200: - description: Mean/stddev wind contour and vector plots at 200 hPa - variables: - - {name: ua-200, ref_model: ERA-Interim, field: T2Ms} - - {name: va-200, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_wind_basic_200mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier2/NCEP} - - - DIAG_850: - description: Mean/stddev wind contour and vector plots at 850 hPa - variables: - - {name: ua-850, ref_model: ERA-Interim, field: T2Ms} - - {name: va-850, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_wind_basic_850mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier2/NCEP} - - - DIAG_200_850: - description: Seasonal variability for wind + Monsoon index plots - variables: - - {name: ua-200-850, field: T2Ms} - - {name: va-200-850, field: T2Ms} - scripts: - - {name: SAMonsoon_wind_seasonal.ncl, cfg_file: cfg_SAMonsoon_wind_seasonal.ncl} - - {name: SAMonsoon_wind_IAV.ncl, cfg_file: cfg_SAMonsoon_wind_seasonal.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier2/NCEP} - - - DIAG_pr: - description: Mean/stddev precip contour plots, seasonal variability, global intensity region plots - variables: - - {name: pr-mmday, ref_model: TRMM, field: T2Ms} - scripts: - - {name: SAMonsoon_precip_basic.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - - {name: SAMonsoon_precip_seasonal.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - - {name: SAMonsoon_precip_IAV.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - - {name: SAMonsoon_precip_domain.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2009, path: /obspath/Tier2/TRMM-3B42/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 1998, end: 2010, path: /obspath/Tier1/} - - {name: CMAP, project: OBS, type: mergedanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier2/CMAP/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERa-Interim/} - - {name: MERRA, project: ana4mips, mip: Amon, type: reanalysis, start: 1980, end: 2004, path: /obspath/TIer1/} - - DIAG_tele: - description: Teleconnections between Monsoon precip and Nino34 SST - variables: - - {name: pr-mmday, ref_model: TRMM, exclude_model: HadISST, field: T2Ms} - - {name: ts, ref_model: HadISST, exclude_model: TRMM, field: T2Ms} - scripts: - - {name: SAMonsoon_teleconnections.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_tele.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2009, path: /obspath/Tier2/TRMM-3B42/} - - {name: HadISST, project: OBS, type: reanaly, version: 1, start: 1998, end: 2009, path: /obspath/Tier2/HadISST/} diff --git a/esmvaltool/namelists/tobeported/namelist_SAMonsoon_daily.yml b/esmvaltool/namelists/tobeported/namelist_SAMonsoon_daily.yml deleted file mode 100644 index 1714074afe..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SAMonsoon_daily.yml +++ /dev/null @@ -1,85 +0,0 @@ -############################################################################### -# namelist_SAMonsoon_daily.xml -# -# Description -# South Asian Monsoon diagnostics implemented from the UKMET Monsoon suite, -# this namelist is configured for daily diagnostics -# -# Authors -# Ricard Levine (UKMET, UK) -# Martin Evaldsson (SMHI, Sweden) -# -# Contributor -# Gill Martin (UKMET, Great Britain) -# -# Project -# EMBRACE -# -# References -# Sperber, K. R. et al., Clim. Dyn. 41, 2711-2744, -# doi:10.1007/s00382-012-1607-6 (2013) -# Lin, J.-L. et al., J. Climate, 21, 4541-4567, doi: 10.1175/2008JCLI1816.1 -# (2008) -# Webster, P.J. and Yang, S., J. Roy. Meteor. Soc., 118, 877-926, -# doi:10.1002/qj.49711850705 (1992) -# Goswami, B. N. et al., Quart. J. Roy. Meteor. Soc., 125, 611-633, -# doi:10.1002/qj.49712555412 (1999) -# Wang, B. and Z. Fan, Bull. Amer. Meteor. Soc., 80, 629-638, -# doi:10.1175/1520-0477(1999)080<0629:COSASM>2.0.CO;2 (1999) -# Wang, B. et al., Clim. Dyn., 39, 1123-1135, -# doi:10.1007/s00382-011-1266-z (2011) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: HadGEM2-ES, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: IPSL-CM5A-MR, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: MPI-ESM-LR, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: GFDL-ESM2M, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: MIROC5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: EC-EARTH, mip: day, exp: historical, ensemble: r12i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG_pr1: - description: Intra-seasonal variability for precip on daily resolution - variables: - - {name: pr-mmday, ref_model: TRMM, field: T2Ds} - scripts: - - {name: SAMonsoon_precip_daily.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip_daily.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2009, path: /obspath/Tier2/TRMM-3B42/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 1998, end: 2010, path: /obspath/Tier1/} - - DIAG_pr2: - description: Lagged propagation of precipitation wrt reference area - variables: - - {name: pr-mmday, ref_model: TRMM, field: T2Ds} - scripts: - - {name: SAMonsoon_precip_propagation.ncl, cfg_file: ./nml/cfg_SAMonsoon/cfg_SAMonsoon_precip_daily.ncl} - additional_models: - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 1998, end: 2010, path: /obspath/Tier1/} - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2009, path: /obspath/Tier2/TRMM-3B42/} diff --git a/esmvaltool/namelists/tobeported/namelist_SeaIce.yml b/esmvaltool/namelists/tobeported/namelist_SeaIce.yml deleted file mode 100644 index 645c78f267..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SeaIce.yml +++ /dev/null @@ -1,245 +0,0 @@ -############################################################################### -# namelist_SeaIce.xml -# -# Description -# A namelist for plotting SeaIce diagnostics at the Arctic and Antarctic -# -# Author -# Daniel Senftleben (DLR, Germany) -# -# Contributor -# Melanie Braeu (DLR, Germany) -# Klaus-Dirk Gottschaldt (DLR, Germany) -# -# Project -# ESMVal -# -# Reference -# Stroeve, J. et al., Geophys. Res. Lett., 34, L09501, doi:10.1029/2007GL029703 -# (2007) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - -MODELS: - - {name: ACCESS1-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: ACCESS1-3, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: bcc-csm1-1, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: bcc-csm1-1-m, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: BNU-ESM, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CanESM2, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CESM1-BGC, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CESM1-CAM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CMCC-CM, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CMCC-CMS, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r7i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r8i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: OImon, exp: historical, ensemble: r9i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r7i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r8i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: OImon, exp: historical, ensemble: r9i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r7i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r8i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: OImon, exp: historical, ensemble: r9i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: FGOALS-g2, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GFDL-CM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GFDL-ESM2G, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GFDL-ESM2M, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GISS-E2-H-CC, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: GISS-E2-R-CC, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r7i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r8i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r9i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: HadGEM2-CC, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2000, path: /modelpath/CMIP5/} - - - {name: HadGEM2-ES, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} - - - {name: inmcm4, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r6i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: IPSL-CM5A-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: IPSL-CM5B-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MIROC5, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MIROC-ESM, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MPI-ESM-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MPI-ESM-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MRI-CGCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r4i1p2, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: OImon, exp: historical, ensemble: r5i1p2, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: MRI-ESM1, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: NorESM1-M, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: OImon, exp: historical, ensemble: r2i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: OImon, exp: historical, ensemble: r3i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: NorESM1-ME, project: CMIP5, mip: OImon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - {name: HadISST, project: OBS, type: reanaly, version: 20130524, start: 1960, end: 2005, path: /obspath/Tier2/HadISST/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_NH: - description: Set of NH sic timeline, contour and difference plots - variables: - - {name: sic, field: T2Ms} - scritps: - - {name: SeaIce_tsline.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_NH.ncl} - - {name: SeaIce_ancyc.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_NH.ncl} - - {name: SeaIce_polcon.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_NH.ncl} - - {name: SeaIce_polcon_diff.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_NH.ncl} - additional_models: - - {name: NSIDC-NT, project: OBS, type: sat, version: NH, start: 1979, end: 2005, path: /obspath/Tier2/NSIDC/} - # fx file: /obspath/Tier2/NSIDC/OBS_NSIDC-NT_sat_NH_T2Ms_sic_197811-201312.nc ?! - - {name: NDICD-BT, project: OBS, type: sat, version: NH, start: 1979, end: 2005, path: /obspath/Tier2/NSIDC/} - # fx file: /obspath/Tier2/NSIDC/OBS_NSIDC-BT_sat_NH_T2Ms_sic_197811-201312.nc ?! - - - DIAG_SH: - description: Set of NH sic timeline, contour and difference plots - variables: - - {name: sic, field: T2Ms} - scritps: - - {name: SeaIce_tsline.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_SH.ncl} - - {name: SeaIce_ancyc.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_SH.ncl} - - {name: SeaIce_polcon.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_SH.ncl} - - {name: SeaIce_polcon_diff.ncl, cfg_file: ./nml/cfg_SeaIce/cfg_SeaIce_SH.ncl} - additional_models: - - {name: NSIDC-NT, project: OBS, type: sat, version: SH, start: 1979, end: 2005, path: /obspath/Tier2/NSIDC/} - # fx file: /obspath/Tier2/NSIDC/OBS_NSIDC-NT_sat_SH_T2Ms_sic_197811-201312.nc ?! - - {name: NDICD-BT, project: OBS, type: sat, version: SH, start: 1979, end: 2005, path: /obspath/Tier2/NSIDC/} - # fx file: /obspath/Tier2/NSIDC/OBS_NSIDC-BT_sat_SH_T2Ms_sic_197811-201312.nc ?! diff --git a/esmvaltool/namelists/tobeported/namelist_SouthernHemisphere.yml b/esmvaltool/namelists/tobeported/namelist_SouthernHemisphere.yml deleted file mode 100644 index 25913f274c..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SouthernHemisphere.yml +++ /dev/null @@ -1,127 +0,0 @@ -############################################################################### -# namelist_SouthernHemisphere.xml -# -# Description -# Namelist for the diagnostics of Southern Hemisphere clouds, radiation and -# fluxes -# -# Author -# Jarmo Makela (FMI, Finland) -# -# Contributors -# Martin Evaldsson (SMHI, Sweden) -# Ralf Doescher (SMHI, Sweden) -# Colin Jones (MetOffice, UK) -# Ulrika Willen (SMHI, Sweden) -# -# Project -# EMBRACE -# -# Reference -# -# This namelist is part of the ESMVal tool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - -MODELS: -# Models and observations are given below within each diag-block - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - -DIAGNOSTICS: - - DIAG_radiation: - description: Diagnostics for Southern Hemisphere radiation - variables: - - {name: rlut, field: T2Ms} - - {name: rlutcs, field: T2Ms} - - {name: rsut, field: T2Ms} - - {name: rsutcs, field: T2Ms} - - {name: rlds, field: T2Ms} - - {name: rldscs, field: T2Ms} - - {name: rsds, field: T2Ms} - - {name: rsdscs, field: T2Ms} - scripts: - - {name: SouthernHemisphere.py, cfg_file: ./nml/cfg_SouthernHemisphereSouthernHemisphere.conf} - additional_models: - - {name: HadGEM2-ES, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: NorESM1-M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2000, end: 2005, path: /obspath/Tier1/CERES-EBAF/} - - - DIAG_fluxes: - description: Diagnostics for Southern Hemisphere fluxes - variables: - - {name: hfls, field: T2Ms} - - {name: hfss, field: T2Ms} - scripts: - - {name: SouthernHemisphere.py, cfg_file: ./nml/cfg_SouthernHemisphereSouthernHemisphere.conf} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: WHOI-OAFlux, project: OBS, type: ocean, version: 1, start: 2000, end: 2005, path: /obspath/Tier2/WHOI-OAFlux} - - - DIAG_totalcloudcover: - description: Diagnostics for Southern Hemisphere cloud cover - variables: - - {name: clt, field: T2Ms} - scripts: - - {name: SouthernHemisphere.py, cfg_file: ./nml/cfg_SouthernHemisphere/SouthernHemisphere.conf} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: CloudSat-L3, project: obs4mips, level: obs4MIPs, version: v2.0, start: 2000, end: 2005, path: /obspath/Tier1/CloudSat-L3} - - - DIAG_lwp: - description: Diagnostics for Southern Hemisphere liquid water path - variables: - - {name: clivi, field: T2Ms} - scripts: - - {name: SouthernHemisphere.py, cfg_file: ./nml/cfg_SouthernHemisphere} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 2000, end: 2005, path: /modelpath/} - - - DIAG_sic: - description: Diagnostics for Southern Hemisphere ice water path - variables: - - {name: clwvi, field: T2Ms} - scripts: - - {name: SouthernHemisphere.py, cfg_file: ./nml/cfg_SouthernHemisphere} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 2000, end: 2005, path: /modelpath/} - - - DIAG_cloudrad: - description: Diagnostics for Southern Hemisphere radiation - variables: - - {name: clt, ref_model: CloudSat-L3, exclude_model: CERES-EBAF, field: T2Ms} - - {name: rlut, ref_model: CERES-EBAF, exclude_model: CloudSat-L3, field: T2Ms} - - {name: rsut, ref_model: CERES-EBAF, exclude_model: CloudSat-L3, field: T2Ms} - - {name: rlds, ref_model: CERES-EBAF, exclude_model: CloudSat-L3, field: T2Ms} - - {name: rsds, ref_model: CERES-EBAF, exclude_model: CloudSat-L3, field: T2Ms} - scripts: - - {name: SouthernHemisphere_scatter.py, cfg_file: ./nml/cfg_SouthernHemisphere/SouthernHemisphere.conf} - additional_models: - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/} - - {name: CloudSat-L3, project: obs4mips, level: obs4MIPs, version: v2.0, start: 2000, end: 2005, path: /obspath/Tier1/CloudSat-L3} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2000, end: 2005, path: /obspath/Tier1/CERES-EBAF/} diff --git a/esmvaltool/namelists/tobeported/namelist_SouthernOcean.yml b/esmvaltool/namelists/tobeported/namelist_SouthernOcean.yml deleted file mode 100644 index a6961fb063..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_SouthernOcean.yml +++ /dev/null @@ -1,204 +0,0 @@ -############################################################################### -# namelist_SouthernOcean.xml -# -# Description -# Diagnostics addressing ocean variables (sea water temperature, salinity, -# ocean mixed layer thickness, wind stress and the Antarctic Circumpolar -# Current strength) between models and, if available, with observations - -# Author -# Bert van Ulft (KNMI, Netherlands) - -# Project -# EMBRACE - -# References -# Antonov, J. I. et al., World Ocean Atlas 2009, Volume 2: Salinity. S. -# Levitus, Ed. NOAA Atlas NESDIS 69, U.S. Government Printing Office, -# Washington, D.C., 184 pp. (2010) -# Dong, S. et al., J. Geophys. Res., 113, C06013, doi:10.1029/2006JC004051 -# (2008) -# 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) -# World Ocean Atlas 2009: https://www.nodc.noaa.gov/OC5/WOA09/pr_woa09.html -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: ECEARTH, ORCA1 historic no_ensemble 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/ORCA_files # ????????????? - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -### MR: ADD FIX FILES! - - -DIAGNOSTICS: - - DIAG_sst: - description: Southern Ocean Sea Surface Temperature - variables: - - {name: tos, ref_model: ERA-Interim, field: TO2Ms} - scripts: - - {name: SouthernOcean_polcon.ncl, cfg_file: ./nml/cfg_SouthernOcean/cfg_SouthernOcean_tos.ncl} - - {name: SouthernOcean_polcon.ncl, cfg_file: ./nml/cfg_SouthernOcean/cfg_SouthernOcean_tos_diff.ncl} - additional_model: - - {model: HadGEM2-ES, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5} - - {model: MIP-ESM-LR, project: CMIP5, mip: Omon, exp: historical, ensemble: r2i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5} - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 2000, end: 2005, path: /obspath/Tier3/ERA-Interim} - - - DIAG_sos: - description: Southern Ocean Sea Surface Salinity - variables: - - {name: sos, ref_model: ERA-Interim, field: TO2Ms} - scripts: - - {name: SouthernOcean_polcon.ncl, cfg_file: ./nml/cfg_SouthernOcean/cfg_SouthernOcean_sos.ncl} - - {name: SouthernOcean_polcon.ncl, cfg_file: ./nml/cfg_SouthernOcean/cfg_SouthernOcean_sos_diff.ncl} - additional_model: - - {model: HadGEM2-ES, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5} - - {model: MIP-ESM-LR, project: CMIP5, mip: Omon, exp: historical, ensemble: r2i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5} - - {model: WOA09-monthly, project: OBS, type: insitu, version: 1, start: 0, end: 0, path: /obspath/Tier2/WOA09-monthly/} - - - - - - Southern Ocean Mixed Layer Thickness - ./variable_defs/ - mlotst - TO2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon.ncl - - OBS Dong08-ARGO-monthly insitu 1 0 0 /nobackup/users/ulft/EMBRACE/ESMVal/obs/Dong08-ARGO-monthly/CMORized - CMIP5_fx MPI-ESM-LR Omon historical r1i1p1 2000 2005 /nobackup_1/users/ulft/CMIP5/ESMdiag fx_acello_mpi - - - - Southern Ocean Mixed Layer Thickness difference - ./variable_defs/ - mlotst - TO2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon_diff.ncl - - OBS Dong08-ARGO-monthly insitu 1 0 0 /nobackup/users/ulft/EMBRACE/ESMVal/obs/Dong08-ARGO-monthly/CMORized - CMIP5_fx MPI-ESM-LR Omon historical r1i1p1 2000 2005 /nobackup_1/users/ulft/CMIP5/ESMdiag fx_acello_mpi - - - - Southern Ocean Water Flux (P+E) Difference - ./variable_defs/ - wfpe-mmday - T2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon_diff.ncl - - OBS ERA-Interim reanaly 1 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/obs/ERA-Interim/CMORized - - - - Southern Ocean Total Heat Flux Difference - ./variable_defs/ - hfds - T2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon_diff.ncl - - OBS ERA-Interim reanaly 1 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/obs/ERA-Interim/CMORized - - - - Southern Ocean Eastward Wind Stress Difference - ./variable_defs/ - tauu - TO2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon_diff.ncl - - OBS ERA-Interim reanaly 1 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/obs/ERA-Interim/CMORized - - - - Southern Ocean Northward Wind Stress Difference - ./variable_defs/ - tauv - TO2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_polcon_diff.ncl - - OBS ERA-Interim reanaly 1 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/obs/ERA-Interim/CMORized - - - - Southern Ocean Wind Stress Difference - ./variable_defs/ - tauw - tauu - tauv - TO2Ms - ./nml/cfg_SouthernOcean/ - SouthernOcean_vector_polcon_diff.ncl - - OBS ERA-Interim reanaly 1 2000 2005 /nobackup/users/ulft/EMBRACE/ESMVal/obs/ERA-Interim/CMORized - - - - Southern Ocean Temperature - ./variable_defs/ - to - T3M - ./nml/cfg_SouthernOcean/ - SouthernOcean_areamean_vertconplot.ncl - - OBS WOA09-monthly insitu 1 0 0 /nobackup/users/ulft/EMBRACE/ESMVal/obs/WOA09-monthly/CMORized - - - - Southern Ocean Salinity - ./variable_defs/ - so - T3M - ./nml/cfg_SouthernOcean/ - SouthernOcean_areamean_vertconplot.ncl - - OBS WOA09-monthly insitu 1 0 0 /nobackup/users/ulft/EMBRACE/ESMVal/obs/WOA09-monthly/CMORized - - - - Southern Ocean Transport - ./variable_defs/ - uo - vo - T3M - ./nml/cfg_SouthernOcean/ - SouthernOcean_transport.ncl - - - - - /nobackup_1/users/ulft/CMIP5/ESMdiag/areacello_fx_MPI-ESM-LR_xxx_r0i0p0.nc - /nobackup/users/ulft/EMBRACE/ESMVal/ORCA_files/lsm_fx_ORCA1_SouthernOcean-NEMO_r0i0p0.nc - /nobackup/users/ulft/EMBRACE/ESMVal/ORCA_files/lsm3d_fx_ORCA1_SouthernOcean-NEMO_r0i0p0.nc - /nobackup/users/ulft/EMBRACE/ESMVal/ORCA_files/mesh_zgr.nc - /nobackup/users/ulft/EMBRACE/ESMVal/ORCA_files/mesh_hgr.nc - -
diff --git a/esmvaltool/namelists/tobeported/namelist_TropicalVariability.yml b/esmvaltool/namelists/tobeported/namelist_TropicalVariability.yml deleted file mode 100644 index 15e7f6843c..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_TropicalVariability.yml +++ /dev/null @@ -1,80 +0,0 @@ -############################################################################### -# namelist_TropicalVariability.xml -# -# Description -# Evaluates tropical biases in the equatorial mean, 5 degrees N to 5 degrees S -# for a range of atmospheric variables and SST -# -# Author -# Jarmo Makela (FMI, Finland) -# -# Contributors -# Martin Evaldsson (SMHI, Sweden) -# Colin Jones (MetOffice, UK) -# -# Project -# EMBRACE -# -# Reference -# Gen, L. et al., J. Climate, 27, 1765–1780, doi:10.1175/JCLI-D-13-00337.1, -# (2014) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start: 1998, end: 2004, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start: 1998, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start: 1998, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_tspr: - description: Diagnostics for temperature/precipitation means and scatter - variables: - - {name: ts, ref_model: HadISST, exclude_model: TRMM, field: T2Ms} - - {name: pr-mmday, ref_model: TRMM, exclude_model: HadISST, field: T2Ms} - scripts: - - {name: TropicalVariability.py, cfg_file: ./nml/cfg_TropicalVariability/TropicalVariability.conf} - additional_models: - - {name: HadISST, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier2/TRMM-3B42/} - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2004, path: /obspath/Tier2/TRMM-3B42/} - - - DiAG_uava: - description: Diagnostics for Equatorial wind divergence - variables: - - {name: ua-925, ref_model: ERA-Interim, field: T2Ms} - - {name: va-925, ref_model: ERA-Interim, field: T2Ms} - scripts: - - {name: TropicalVariability_wind.py, cfg_file: ./nml/cfg_TropicalVariability/TropicalVariability.conf} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_ua: - description: Diagnostics for Equatorial temp/precip/wind plots - variables: - - {name: ua-1000, ref_model: ERA-Interim, field: T2Ms} - scripts: - - {name: TropicalVariability_EQ.py, cfg_file: ./nml/cfg_TropicalVariability/TropicalVariability.conf} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1998, end: 2004, path: /obspath/Tier3/ERA-Interim} diff --git a/esmvaltool/namelists/tobeported/namelist_WAMonsoon.yml b/esmvaltool/namelists/tobeported/namelist_WAMonsoon.yml deleted file mode 100644 index e5b5cf84ed..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_WAMonsoon.yml +++ /dev/null @@ -1,183 +0,0 @@ -############################################################################### -# namelist_WAMonsoon.xml -# -# Description -# Evaluates West African monsoon for monthly data sets -# -# Author -# Romain Roehrig (Meteo France, France) -# -# Project -# EMBRACE -# -# References -# Kerry H. et al, J. Climate, 19, 3681-3703, doi:10.1175/JCLI3814.1 (2006) -# Roehrig, R. et al., J. Climate, 26, 6471-6505, doi:10.1175/JCLI-D-12-00505.1 -# (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: CNRM-CM5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: IPSL-CM5A-MR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /obspath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG_200: - description: Mean wind contour and vector plots at 200 hPa - variables: - - {name: ua-200, ref_model: ERA-Interim, field: T2Ms} - - {name: va_200, field: T2Ms} - scripts: - - {name: WAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_wind_basic_200mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_700: - description: Mean/stddev wind contour and vector plots at 700 hPa - variables: - - {name: ua-700, ref_model: ERA-Interim, field: T2Ms} - - {name: va_700, field: T2Ms} - scripts: - - {name: WAMonsoon_wind_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_wind_basic_700mb.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_zonalua: - description: Zonal average of Zonal wind - variables: - - {name: ua, ref_model: ERA-Interim, field: T3M} - scripts: - - {name: WAMonsoon_10W10E_3D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_ua.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_zonalva: - description: Zonal average of Meridional wind - variables: - - {name: va, ref_model: ERA-Interim, field: T3M} - scripts: - - {name: WAMonsoon_10W10E_3D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_va.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_zonaltheta: - description: Zonal average of Theta - variables: - - {name: theta, ref_model: ERA-Interim, field: T3M} - scripts: - - {name: WAMonsoon_10W10E_3D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_theta.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_zonaltheta850: - description: Zonal average of Theta at 850 hPa - variables: - - {name: theta-850, ref_model: ERA-Interim, field: T3M} - scripts: - - {name: WAMonsoon_10W10E_3D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_theta850.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_prJJAS: - description: JJAS climatology of precipitation - variables: - - {name: pr-mmday, ref_model: TRMM, field: T2Ms} - scripts: - - {name: WAMonsoon_contour_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip.ncl} - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_pr.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2010, path: /obspath/Tier2/TRMM-3B42/} - - - DIAG_tasJJAS: - description: JJAS climatology of Temperature at 2m - variables: - - {name: tas, ref_model: ERA-Interim, field: T2Ms} - scripts: - - {name: WAMonsoon_contour_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_tas.ncl} - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_tar.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path: /obspath/Tier3/ERA-Interim} - - - DIAG_prCYCLE: - description: Precipitation mean annual cycle - variables: - - {name: pr-mmday, field: T2ms} - scripts: - - {name: WAMonsoon_precip_IAV.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip.ncl} - - {name: WAMonsoon_precip_seasonal.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip.ncl} - additional_models: - - {name: TRMM, project: OBS, type: sat, version: 3B42-v7, start: 1998, end: 2010, path: /obspath/Tier2/TRMM-3B42/} - - - DIAG_rsdsJJAS: - description: JJAS climatology of Surface SWdn - variables: - - {name: rsds, ref_model: CERES-EBAF, field: T2Ms} - scripts: - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_rsds.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2009, path: /obspath/Tier1/CERES-EBAF/} - - - DIAG_rldsJJAS: - description: JJAS climatology of Surface LWdn - variables: - - {name: rlds, ref_model: CERES-EBAF, field: T2Ms} - scripts: - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_rlds.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2009, path: /obspath/Tier1/CERES-EBAF/} - - - DIAG_swcreJJAS: - description: JJAS climatology of Surface LWdn - variables: - - {name: SW_CRE, ref_model: CERES-EBAF, field: T2Ms} - scripts: - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_SW_CRE.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2009, path: /obspath/Tier1/CERES-EBAF/} - - - DIAG_lwcreJJAS: - description: JJAS climatology of Surface LWdn - variables: - - {name: LW_CRE, ref_model: CERES-EBAF, field: T2Ms} - scripts: - - {name: WAMonsoon_10W10E_1D_basic.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_10W10E_LW_CRE.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2009, path: /obspath/Tier1/CERES-EBAF/} diff --git a/esmvaltool/namelists/tobeported/namelist_WAMonsoon_daily.yml b/esmvaltool/namelists/tobeported/namelist_WAMonsoon_daily.yml deleted file mode 100644 index 0032342a57..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_WAMonsoon_daily.yml +++ /dev/null @@ -1,79 +0,0 @@ -############################################################################### -# namelist_WAMonsoon_daily.xml -# -# Description -# Evaluates West African monsoon for daily data sets -# -# Author -# Romain Roehrig (Meteo France, France) -# -# Project -# EMBRACE -# -# Reference -# Roehrig, R. et al., J. Climate, 26, 6471-6505, doi:10.1175/JCLI-D-12-00505.1 -# (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: png - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: HadGEM2-A, project: CMIP5, mip: day, exp: amip, ensemble: r1i1p1, start: 2001, end: 2002, path: /modelpath/CMIP5} - - {name: CNRM-CM5, project: CMIP5, mip: day, exp: amip, ensemble: r1i1p1, start: 2001, end: 2002, path: /modelpath/CMIP5} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: day, exp: amip, ensemble: r1i1p1, start: 2001, end: 2002, path: /modelpath/CMIP5} - - {name: EC-EARTH, project: CMIP5, mip: day, exp: amip, ensemble: r1i1p1, start: 2001, end: 2002, path: /modelpath/CMIP5} - - {name: MPI-ESM-LR, project: CMIP5, mip: day, exp: amip, ensemble: r1i1p1, start: 2001, end: 2002, path: /modelpath/CMIP5} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG_pr1: - description: Intra-seasonal variability of precipitation - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, field: T2Ds} - scripts: - - {name: WAMonsoon_isv_filtered.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip_hp90.ncl} - - {name: WAMonsoon_isv_filtered.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip_bp3-10.ncl} - additional_models: - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2002, path: /obspath/Tier1/} - - - DIAG_rlut: - description: Intra-seasonal variability of OLR - variables: - - {name: rlut, ref_model: NOAA-PSD-Interp, field: T2Ds} - scripts: - - {name: WAMonsoon_isv_filtered.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_rlut_hp90.ncl} - - {name: WAMonsoon_isv_filtered.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_rlut_bp3-10.ncl} - additional_models: - - {name: NOAA-PSD-Interp, project: OBS, type: ground, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NOAA-PSD-Interp} - - - DIAG_pr2: - description: 1-day autocorrelation of 1-90d (intraseasonal) precipitation anomalies - variables: - - {name: pr-mmday, ref-model: GPCP-1DD, field: T2Ds} - scripts: - - {name: WAMonsoon_autocorr.ncl, cfg_file: ./nml/cfg_WAMonsoon/cfg_WAMonsoon_precip_autocorr_hp90.ncl} - additional_models: - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2002, path: /obspath/Tier1/} diff --git a/esmvaltool/namelists/tobeported/namelist_aerosol_CMIP5.yml b/esmvaltool/namelists/tobeported/namelist_aerosol_CMIP5.yml deleted file mode 100644 index d1e347b912..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_aerosol_CMIP5.yml +++ /dev/null @@ -1,222 +0,0 @@ -############################################################################### -# namelist_aerosol_CMIP5.xml -# -# Description -# Namelist for reproducing aerosol figures in Chapter 9 of IPCC AR5 and for -# additional aerosol diagnostics -# -# Author -# Mattia Righi (DLR, Germany) -# -# Project -# ESA CCI CMUG -# -# References -# Flato, G. et al., Evaluation of climate models, in: Climate Change 2013: the -# Physical Science Basis, contribution of Working Group I to the Fifth -# Assessment Report of the Intergovernmental Panel on Climate Change, edited -# by: Stocker, T. F., Qin, D., Plattner, G.-K., Tignor, M., Allen, S. K., -# Boschung, J., Nauels, A., Xia, Y., Bex, V., and Midgley, P. M., Cambridge -# University Press, Cambridge, UK and New York, NY, USA (2013). -# Righi et al., Atmos. Chem. Phys., 13, 9939-9970, doi:10.5194/acp-13-9939-2013 -# (2013). -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - -MODELS: -# Models and observations are given below within each diag-block -# Links to rcp45 have to be created in the historical folder in order to have a continuous time-series beyond 2005 -# CCSM4, IPSL-CM5A-LR, IPSL-CM5A-MR, MPI-ESM-LR and MPI-ESM-MR are excluded since they use concentration-driven aerosol - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - -DIAGNOSTICS: - - DIAG_BC: - description: surface-level concentration of BC - variables: - - {name: sconcbc, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_IMPROVE.ncl} - additional_models: - - {name: ACCESS1-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980 end: 2015, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - # OPTION: add line for station data (now in cfg file) - - - DIAG_OA: - description: surface-level concentration of OA - variables: - - {name: sconcoa, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_IMPROVE.ncl} - additional_models: - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - # MR: add line for station data (now in cfg file) ? - - - DIAG_SO4: - description: surface-level concentration of SO4 - variables: - - {name: sconcso4, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_CASTNET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_EANET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_IMPROVE.ncl} - additional_models: - - {name: ACCESS1-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - # MR: add line for station data (now in cfg file) ? - - - DIAG_AOD1: - description: aerosol optical depth at 550 nm - variables: - - {name: od550aer, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_stations_AERONET.ncl} - additional_models: - - {name: ACCESS1-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1980, end: 2015, path: /modelpath/CMIP5/} - # MR: add line for station data (now in cfg file) ? - - - DIAG_AOD2: - description: aerosol optical depth at 550 nm - variables: - - {name: od550aer, field: T2Ms} - preprocess: - multimodel_mean: True - scripts: - - {script: aerosol_tsline.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_tsline.ncl} - additional_models: - - {name: ACCESS1-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1860, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1861, end: 2015, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1861, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1860, end: 2015, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1860, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1950, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2012, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1851, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 1850, end: 2015, path: /modelpath/CMIP5/} - - {name: ESACCI-AEROSOL, project: OBS, type: sat, version: SU-v4.21, start: 1997, end: 2011, path: /obspath/Tier2/ESACCI-AEROSOL} - - {name: MODIS, project: OBS, type: sat, version: L3-C6, start: 2003, end: 2014, path: /obspath/Tier2/MODIS-L3-C6} - - - DIAG_AOD2: - description: aerosol optical depth at 550 nm - variables: - - {name: od550aer, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - multimodel_mean: True - multimodel_median: True - scripts: - - {script: aerosol_satellite.ncl, cfg_file: ./nml/cfg_aerosol/CMIP5/cfg_aerosol_satellite_MODIS.ncl} - additional_models: - - {name: ACCESS1-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p2, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-CC, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: aero, exp: historical, ensemble: r1i1p1, start: 2003, end: 2005, path: /modelpath/CMIP5/} - - {name: MODIS, project: OBS, type: sat, version: L3-C6, start: 2003, end: 2005, path: /obspath/Tier2/MODIS-L3-C6} diff --git a/esmvaltool/namelists/tobeported/namelist_aerosol_EMAC.yml b/esmvaltool/namelists/tobeported/namelist_aerosol_EMAC.yml deleted file mode 100644 index 7ae75484cc..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_aerosol_EMAC.yml +++ /dev/null @@ -1,285 +0,0 @@ -############################################################################### -# namelist_aerosol_EMAC.xml -# -# Description -# Master namelist for the aerosol diagnostics of the ESVMal tool. It includes -# vertical profiles of aerosol concentrations, aerosol size distributions, -# surface level aerosol concentations compared with station data, aerosol -# optical depth compared with station data and satellite observations. -# -# Author -# Mattia Righi (DLR, Germany) -# -# Contributors -# Christopher Kaiser (DLR, Germany) -# -# Projects -# DLR VEU -# DLR ESMVal -# -# References -# Lauer et al., Atmos. Chem. Phys., 5, 3251-3276, doi:10.5194/acp-5-3251-2005 -# (2005) -# Aquila et al., Geosci. Model Dev., 4 , 325-355, doi:10.5194/gmd-4-325-2011 -# (2011) -# Righi et al., Atmos. Chem. Phys., 13, 9939-9970, doi:10.5194/acp-13-9939-2013 -# (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: MADE-REF, project: EMAC, ensemble: 1, start: 1999, end: 2001, path: /modelpath/EMAC/} - - {name: MADEin-REF, project: EMAC, ensemble: 1, start: 1999, end: 2001, path: /modelpath/EMAC/} - - {name: MAD3E-REF, project: EMAC, ensemble: 1, start: 1999, end: 2001, path: /modelpath/EMAC/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_LACE: - description: Aerosol size distribution - variables: - - {name: conccnmode, field: T3I} - - {name: diamcnmode, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_LACE.ncl} - - - DIAG_Putaud: - description: Aerosol size distribution - variables: - - {name: conccnmode, field: T2Is} - - {name: diamcnmode, field: T2Is} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_Putaud.ncl} - - - DIAG_Asmi: - description: Aerosol size distribution - variables: - - {name: conccnSTPmode, field: T2Is} - - {name: diamcnmode, field: T2Is} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_Asmi11.ncl} - - - DIAG_UCN: - description: Vertical profile of number concentration - variables: - - {name: conccnSTPd3, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_UCN-Pacific.ncl} - - - DIAG_INCA5: - description: Vertical profile of number concentration - variables: - - {name: conccnSTPd5, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_INCA.ncl} - - - DIAG_INCA14: - description: Vertical profile of number concentration - variables: - - {name: conccnSTPd14, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_INCA.ncl} - - - DIAG_INCA120: - description: Vertical profile of number concentration - variables: - - {name: conccnSTPd120, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_INCA.ncl} - - - DIAG_ACCESS5: - description: Vertical profile of number concentration - variables: - - {name: conccnd5, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_ACCESS-2.ncl} - - - DIAG_ACCESS10: - description: Vertical profile of number concentration - variables: - - {name: conccnd10, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_ACCESS-2.ncl} - - - DIAG_BC: - description: Vertical profile of BC concentration - variables: - - {name: mmrbc, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_ACCESS.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_CONCERT.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_CR-AVE.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_DC3.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_HIPPO.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_SALTRACE1.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_SALTRACE2.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_TC4.ncl} - - {script: aerosol_profile.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_Texas.ncl} - - - DIAG_MASS: - description: Vertical profile of aerosol mass concentration - variables: - - {name: mmraer, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_Texas.ncl} - - - DIAG_BCFREE: - description: Vertical profile of BC-free aerosol concentration - variables: - - {name: mmrbcfree, field: T3I} - - {name: cl, field: T3I} - scripts: - - {script: aerosol_profiles.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_profiles_CIRRUS.ncl} - - - DIAG_SO4: - description: Surface-level concentration of SO4 - variables: - - {name: sconcso4, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_CASTNET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EANET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_NO3: - description: Surface-level concentration of NO3 - variables: - - {name: sconcno3, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_CASTNET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EANET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_NH4: - description: Surface-level concentration of NH4 - variables: - - {name: sconcnh4, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_CASTNET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EANET.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_BC: - description: Surface-level concentration of BC - variables: - - {name: sconcno3, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_OA: - description: Surface-level concentration of OA - variables: - - {name: sconcoa, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_PM10: - description: Surface-level concentration of PM10 - variables: - - {name: sconcpm10, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_PM2p5: - description: Surface-level concentration of PM2.5 - variables: - - {name: sconcpm2p5, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_EMEP.ncl} - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_IMPROVE.ncl} - - - DIAG_AOD1: - description: Aerosol optical depth at 550 nm - variables: - - {name: od550aer, field: T2Ms} - scripts: - - {script: aerosol_stations.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_stations_AERONET.ncl} - - - DIAG_AOD2: - description: Aerosol optical depth at 550 nm vs. MODIS - variables: - - {name: od550aer, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - scripts: - - {script: aerosol_satellite.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_satellite_MODIS.ncl} - additional_models: - - {name: MODIS, project: obs4mips, level: L3, version: C5, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_AOD3: - description: Aerosol optical depth at 550 nm vs. MISR - variables: - - {name: od550aer, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - scripts: - - {script: aerosol_satellite.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_satellite_MISR.ncl} - additional_models: - - {name: MISR, project: obs4mips, level: L3, version: F12_0022, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_AOD4: - description: Aerosol optical depth at 550 nm vs. ESACCI - variables: - - {name: od550aer, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - scripts: - - {script: aerosol_satellite.ncl, cfg_file: ./nml/cfg_aerosol/EMAC/cfg_aerosol_satellite_ESACCI-AEROSOL.ncl} - additional_model: - - {name: ESACCI-AEROSOL, project: OBS, type: sat, version: SU-v4.21, start: 1997, end: 2011, path: /obspath/Tier2/ESACCI-AEROSOL} - diff --git a/esmvaltool/namelists/tobeported/namelist_anav13jclim.yml b/esmvaltool/namelists/tobeported/namelist_anav13jclim.yml deleted file mode 100644 index ceb5f800a9..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_anav13jclim.yml +++ /dev/null @@ -1,765 +0,0 @@ -############################################################################### -# namelist_anav13jclim.xml -# -# Description -# This namelist reproduces most of the figures of Anav et al. (2013) -# -# Author -# Alessandro Anav (University of Exeter, UK) -# -# Contributors -# Sabrina Wenzel (DLR, Germany) -# Mattia Righi (DLR, Germany) -# -# Project -# EMBRACE -# -# Reference -# Anav, A., et al., J. Climate, 26, 6801-6843, doi:10.1175/JCLI-D-12-00417.1 -# (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: -# Models which do not provide all variables are defined within each diag block block -# MR: HERE WE NEED TO IMPLEMENT A WAY TO REPLACE mip WITH VARIABLE-SPECIFIC mip (e.g., USE * AS A WILDCARD) - - {name: CanESM2, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: GFDL-ESM2G, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: GFDL-ESM2M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: HadGEM2-CC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2004, path: /modelpath/CMIP5} - - {name: HadGEM2-ES, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2004, path: /modelpath/CMIP5} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: MPI-ESM-LR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: MPI-ESM-MR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - - {name: NorESM1-ME, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5} - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - -DIAGNOSTICS: - - DIAG_taMVI: - description: MVI scatter plot surface temperature (Figure 1) - variables: - - {name: tas-degC, field: T2Ms, mip: Amon} - scripts: - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_glob.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_trop.ncl - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_NH.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_prMVI: - description: MVI scatter plot precipitation (Figure 2) - variables: - - {name: pr-mmday, field: T2Ms, mip: Amon} - scripts: - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_glob.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_trop.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_NH.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_mainNBP: - description: Error bar and sasonal cycle plots NBP (Figures 6 and 7) - variables: - - {name: nbp, field: T2Ms, mip: Lmon} - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_glob.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_trop.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_NH.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_SH.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - - DIAG_MVIGPP: - description: MVI scatter plot gpp (Figure 8) - variables: - - {name: gpp, field: T2Ms, mip: Lmon} - scripts: - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_glob.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_trop.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_NH.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_mainGPP: - description: Seasonal cycle plot gpp (Figure 9) - variables: - - {name: gpp, field: T2Ms, mip: Lmon} - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_glob.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_trop.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_NH.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_MVILAI: - description: MVI scatter plot LAI (Figure 10) - variables: - - {name: lai, field: T2Ms, mip: Lmon} - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_glob.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_trop.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_NH.ncl} - - {script: CarbonCycle_MVI.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_MVI_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_mainLAI: - description: Seasonal cycle plot LAI (Figure 11) - variables: - - {name: lai, field: T2Ms, mip: Lmon} - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_glob.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_trop.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_NH.ncl} - - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_scatter2: - description: Two-variable scatter plot cSoil-cVeg (Figure 12) - variables: - - {name: cSoil, ref_model: HWSD, exclude_model: NDP, field: T2Ms} - - {name: cVeg, ref_model: NDP, exclude_model: HWSD, field: T2Ms} - preprocess: - mask_landocean: land - scripts: - - {script: CarbonCycle_2vars.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_cSoil-cVeg_glob.ncl} - - {script: CarbonCycle_2vars.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_cSoil-cVeg_trop.ncl} - - {script: CarbonCycle_2vars.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_cSoil-cVeg_NH.ncl} - - {script: CarbonCycle_2vars.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_cSoil-cVeg_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NDP, project: OBS, type: ground, version: 017b, start: 2000, end: 2000, path: /obspath/Tier2/NDP/} - - {name: HWSD, project: OBS, type: ground, version: 1, start: 2000, end: 2000, path: /obspath/Tier2/HWSD/} - - -# THIS DIAGNOSTIC DOES NOT SUPPORT IRREGULAR GRIDS YET - # DIAG_mainFGCO2: - # description: Error bas and seasonal cycle plots fgco2 (Figure 14 and 15) - # variables: - # - {name: fgco2, mip: Omon, field: T2Ms} - # scripts: - # - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_glob.ncl} - # - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_trop.ncl} - # - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_NH.ncl} - # - {script: CarbonCycle_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_anav_main_SH.ncl} - # additional_models: - # - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - # - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - # - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - -# GRADING GLOBAL ####################################################################################################### - - DIAG_gradtasglob: - description: Grading precalculations - variables: - - {name: tas, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradprglob: - description: Grading precalculations - variables: - - {name: pr, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradGPPglob: - description: Grading precalculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradMTEglob: - description: Grading calculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradLAIglob: - description: Grading precalculations - variables: - - {name: lai, ref_model: LAI3g, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_gradNBPglob: - description: Grading precalculations - variables: - - {name: nbp, ref_model: JMA-TRANSCOM, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - - DIAG_portraitglob: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_collect.ncl} - - -# GRADING TROPICS ###################################################################################################### - - DIAG_gradtastrop: - description: Grading precalculations - variables: - - {name: tas, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradprtrop: - description: Grading precalculations - variables: - - {name: pr, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradGPPtrop: - description: Grading precalculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradMTEtrop: - description: Grading calculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradLAItrop: - description: Grading precalculations - variables: - - {name: lai, ref_model: LAI3g, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_gradNBPtrop: - description: Grading precalculations - variables: - - {name: nbp, ref_model: JMA-TRANSCOM, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - - DIAG_portraittrop: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_collect.ncl} - -# GRADING NH ########################################################################################################### - - DIAG_gradtasNH: - description: Grading precalculations - variables: - - {name: tas, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradprNH: - description: Grading precalculations - variables: - - {name: pr, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradGPPNH: - description: Grading precalculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradMTENH: - description: Grading calculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradLAINH: - description: Grading precalculations - variables: - - {name: lai, ref_model: LAI3g, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_gradNBPNH: - description: Grading precalculations - variables: - - {name: nbp, ref_model: JMA-TRANSCOM, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_NH.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - - DIAG_portraitNH: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_collect.ncl} - -# GRADING SH ########################################################################################################### - - DIAG_gradtasSH: - description: Grading precalculations - variables: - - {name: tas, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradprSH: - description: Grading precalculations - variables: - - {name: pr, ref_model: CRU, mip: Amon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CRU, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/CRU/} - - - DIAG_gradGPPSH: - description: Grading precalculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradMTESH: - description: Grading calculations - variables: - - {name: gpp, ref_model: MTE, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MTE, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/MTE/} - - - DIAG_gradLAISH: - description: Grading precalculations - variables: - - {name: lai, ref_model: LAI3g, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: LAI3g, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier2/LAI3g/} - - - DIAG_gradNBPSH: - description: Grading precalculations - variables: - - {name: nbp, ref_model: JMA-TRANSCOM, mip: Lmon, field: T2Ms} - preprocess: - target_grid: ref_model - regrid_scheme: linear - mask_fillvalue: True - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_RMSD_SH.ncl} - additional_models: - - {name: BNU-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: JMA-TRANSCOM, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/JMA-TRANSCOM/} - - - DIAG_portraitSH: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_anav13jclim/cfg_perfmetrics_grading_collect.ncl} diff --git a/esmvaltool/namelists/tobeported/namelist_clouds_bias.yml b/esmvaltool/namelists/tobeported/namelist_clouds_bias.yml deleted file mode 100644 index 2eda073af6..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_clouds_bias.yml +++ /dev/null @@ -1,108 +0,0 @@ -############################################################################### -# namelist_clouds_bias.xml -# -# Description -# Diagnostics of clouds and hydrological cycle -# -# Author -# Axel Lauer (DLR, Germany) -# -# Project -# EMBRACE -# -# References -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: ACCESS1-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CanCM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# BROKEN - {name: CESM1-CAM5-1-FV2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CMS, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# - {name: CNRM-CM5-2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# Time dimension broken for ensemble r1i1p1 of EC-EARTH -> using ensemble r6i1p1 instead - - {name: EC-EARTH, project: CMIP5, mip: Amon, exp: historical, ensemble: r6i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM2p1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H-CC, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R-CC, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: HadCM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# NO FILES - {name: HadGEM2-A0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# BROKEN - {name: HadGEM2-CC, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} -# BROKEN - {name: HadGEM2-ES, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: ref_model - regrid_scheme: linear - mask_fillvalues: None - mask_landocean: None - multimodel_mean: True - - -DIAGNOSTICS: - -# multi model mean and multi model mean bias - - DIAG_pr: - description: IPCC AR5 Ch. 9, Fig. 9.4 (precipitation) - variables: - - {name: pr-mmday, field: T2Ms} - scripts: - - {script: cloud_bias.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_bias.ncl} - additional_models: - - {name: GPCP-SG, project: obs4mips, level: L3, version: C5, start: 2001, end: 2012, path: /obspath/Tier1/} - - DIAG_tas: - description: IPCC AR5 Ch. 9, Fig. 9.2 (2-m temperature) - variables: - - {name: tas-degC, field: T2Ms} - scripts: - - {script: cloud_bias.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_bias.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2005, path: /obspath/Tier3/ERA-Interim/} diff --git a/esmvaltool/namelists/tobeported/namelist_dummy_python.yml b/esmvaltool/namelists/tobeported/namelist_dummy_python.yml deleted file mode 100644 index f22541f9c2..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_dummy_python.yml +++ /dev/null @@ -1,55 +0,0 @@ -############################################################################### -# namelist_dummy_python.xml -# -# Description -# -# Author -# Alexander Loew (LMU, Germany) -# -# Project -# ESA CCI CMUG -# -# References -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, experiment: historical, ensemble: r1i1p1, start: 2000, end: 2004, path: /modelpath/CMIP5} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG1: - description: some minimum example using python for diagnostic from a direct script - variables: - - {name: ta, field: T3M} - scripts: - - {script: dummy_python.py, cfg_file: none_yet.py} - # MR: do we need launcher arguments here? - - - DIAG2: - description: another example using python just by calling an external python script - variables: - - {name: ta, field: T3M} - settings: - - {script: dummy_python_external.py, cfg_file: none_yet.py} - # MR: do we need launcher arguments here? diff --git a/esmvaltool/namelists/tobeported/namelist_eyring13jgr.yml b/esmvaltool/namelists/tobeported/namelist_eyring13jgr.yml deleted file mode 100644 index 357ad80467..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_eyring13jgr.yml +++ /dev/null @@ -1,735 +0,0 @@ -############################################################################### -# namelist_eyring13jgr.xml -# -# Description -# This namelist produces figures 1, 2, 4, 6, 7, 10, and 11 of Eyring et al. -# (2013). The diagnostic script for producing figure 6 could not be tested - -# use with caution. -# Please report problems and bugs to the ESMValTool core development team. -# http://www.esmvaltool.org -# -# Authors -# Irene Cionni (ENEA, Italy) -# Veronika Eyring (DLR, Germany) -# -# Project -# ESMVal -# -# References -# Eyring, V., et al., Long-term ozone changes and associated climate -# impacts in CMIP5 simulations,J. Geophys. Res. Atmos., 118, -# doi:10.1002/jgrd.50316 (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: -# Models and observations are given below within each diag-block - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_Fig1: - description: Figure 1 (total column ozone annual cycle) - variables: - - {name: toz, field: T2Ms} - scripts: - - {script: eyring13jgr_fig01.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig01.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1986, end: 2005, path: /modelpath/CMIP5/} - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1986, end: 2005, path: /obspath/Tier3/NIWA} - - - DIAG_Fig2: - description: Figure 2 (total column ozone timeseries) - variables: - - {name: toz, field: T2Ms} - scripts: - - {script: eyring13jgr_fig02.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig02.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1980, end: 2010, path: /obspath/Tier3/NIWA/} - - - DIAG_Fig4: - description: Figure 4 (tropospheric column ozone maps) - variables: - - {name: tropoz, field: T2Ms} - scripts: - - {script: eyring13jgr_fig04.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig04.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: AURA-MLS-OMI, project: OBS, type: sat, version: 1, start: 2005, end: 2012, path: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_Fig6: # NOT YET TESTED: USE WITH CAUTION! - description: Figure 6 (total column ozone timeseries TSAM) - variables: - - {name: toz, field: T2Ms} - scripts: - - {script: eyring13jgr_fig06.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig06.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig7: - description: Figure 7 (vertical profile ozone differences) - variables: - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig07.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig07.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2090, path: /modelpath/CMIP5/} - - - DIAG_Fig10a: - description: Figure 10a - variables: - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10a.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig10b: - description: Figure 10b - variables: - - {name: ta, field: T3M} - scripts: - - {script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10b.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig10c: - description: Figure 10c - variables: - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10c.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig10d: - description: Figure 10d - variables: - - {name: tro3, field: T3M} - scripts: - - {script: script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10d.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig10e: - description: Figure 10e - variables: - - {name: ua, field: T3M} - scripts: - - {script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10e.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_Fig10f: - description: Figure 10f - variables: - - {name: ta, field: T3M} - scripts: - - {script: eyring13jgr_fig10.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig10f.ncl} - additional_models: - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2099, path: /modelpath/CMIP5/} - - - DIAG_diag11a: - description: Figure 11a (trend scatter plots between two variables) - variables: - - {name: ta, field: T3M} - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig11.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig11a.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r2i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - - DIAG_11b: - description: Figure 11b (trend scatter plots between two variables) - variables: - - {name: ta, field: T3M} - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig11.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig11b.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r2i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - - DIAG_11c: - description: Figure 11c (trend scatter plots between two variables) - variables: - - {name: ua, field: T3M} - - {name: tro3, field: T3M} - scripts: - - {script: eyring13jgr_fig11.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig11c.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r2i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - - DIAG_11d: - description: Figure 11d (trend scatter plots between two variables) - variables: - - {name: ua, field: T3M} - - {name: ta, field: T3M} - scripts: - - {script: eyring13jgr_fig11.ncl, cfg_file: ./nml/cfg_eyring13jgr/cfg_eyring13jgr_fig11d.ncl} - additional_models: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r3i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p3, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1979, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp26, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r2i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp45, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp60, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: FIO-ESM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p2, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p3, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: rcp85, ensemble: r1i1p1, start: 2006, end: 2050, path: /modelpath/CMIP5/} diff --git a/esmvaltool/namelists/tobeported/namelist_lauer13jclim.yml b/esmvaltool/namelists/tobeported/namelist_lauer13jclim.yml deleted file mode 100644 index 003ecac5fb..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_lauer13jclim.yml +++ /dev/null @@ -1,292 +0,0 @@ -############################################################################### -# namelist_lauer13jclim.xml -# -# Description -# Diagnostics of clouds and hydrological cycle reproducing selected figures -# from Lauer and Hamilton (2013) -# -# Author -# Axel Lauer (DLR, Germany) -# -# Project -# DLR ESMVal -# -# Reference -# Lauer, A., and Hamilton, K., J. Climate, 26, 3823-3845, -# doi:10.1175/JCLI-D-12-00451.1 (2013) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: ACCESS1-0, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: ACCESS1-3, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: CESM1-CAM5-1-FV2, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-CAM5, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CMCC-CESM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: CMCC-CM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: CMCC-CMS, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: CNRM-CM5-2, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: FGOALS-g2, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H-CC, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-H, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R-CC, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: HadGEM2-CC, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: HadGEM2-ES, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: inmcm4, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-CGCM3, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-M, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, Amon, exp: historical, ensemble: r1i1p1, start: 1996, end: 2005, path: /modelpath/CMIP5/} - # - {name: RC1-base-07, project: EMAC, ensemble: 1, start: 1986, end: 2005, path: /modelpath/EMAC/} - - {name: RC1SD-base-07, project: EMAC, ensemble: 1, start: 1986, end: 2005, path: /modelpath/EMAC/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - -# Lauer and Hamilton (2013) - Figure 1 -# Geographical distribution of multi-year annual/seasonal means (panel plot) - - DIAG_Fig1lwp: - description: Cloud diagnostics - variables: - - {name: lwp, field: T2Ms} - scripts: - - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - additional_models: - - {name: UWisc, project: OBS, type: sat, version: v2, start: 1988, end: 2007, path: /obspath/Tier3/UWisc} - - - DIAG_Fig1clt: - description: Cloud diagnostics - variables: - - {name: clt, field: T2Ms} - scripts: - - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - additional_models: - - {name: MODIS, project: obs4mips, level: L3, version: C5, start: 2001, end: 2010, path: /obspath/Tier1/} - - - DIAG_Fig1pr: - description: Cloud diagnostics - variables: - - {name: pr-mmday, field: T2Ms} - scripts: - - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - additional_models: - - {name: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start: 1986, end: 2005, path: /obspath/Tier1/} - - - # DIAG_Fig1clivi: - # description: Cloud diagnostics - # variables: - # - {name: clivi, field: T2Ms} - # scripts: - # - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - # model: {name: MODIS-CFMIP, project: OBS, type: sat, version: v2, start: 2003, end: 2014, path: /obspath/Tier2/MODIS-CFMIP} - - - DIAG_Fig1swcre: - description: Cloud diagnostics - variables: - - {name: SW_CRE, field: T2Ms} - scripts: - cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl - script: clouds.ncl - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_Fig1lwcre: - description: Cloud diagnostics - variables: - - {name: LW_CRE, field: T2Ms} - scripts: - - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - DIAG_Fig1netcre: - description: Cloud diagnostics - variables: {name: NET_CRE, field: T2Ms} - scripts: - - {script: clouds.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - -# Lauer and Hamilton (2013) - Figure 3 -# Taylor plots of multi-year annual mean quantities - - DIAG_Fig3clt: - description: Cloud diagnostics - variables: - - {name: clt, field: T2Ms} - scripts: - - {script: clouds_taylor.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl} - additional_models: - - {name: MODIS, project: obs4mips, level: L3, version: C5, start: 2001, end: 2010, path: /obspath/Tier1/} - - - DIAG_Fig3lwp: - description: Cloud diagnostics - variables: - - {name: lwp, field: T2Ms} - scripts: - - {script: clouds_taylor.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl} - additional_models: - - {name: UWisc, project: OBS, type: sat, version: v2, start: 1988, end: 2007, path: /obspath/Tier3/UWisc} - - - DIAG_Fig3swcre: - description: Cloud diagnostics - variables: - - {name: SW_CRE, field: T2Ms} - scripts: - - {script: clouds_taylor.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_Fig3lwcre: - description: Cloud diagnostics - variables: - - {name: LW_CRE, field: T2Ms} - scripts: - - {script: clouds_taylor.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - # DIAG_Fig3clivi: - # description: Cloud diagnostics - # variables: - # - {name: clivi, field: T2Ms} - # scripts: - # cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl - # script: clouds_taylor.ncl - # model: {name: MODIS-CFMIP, project: OBS, type: sat, version: v2, start: 2003, end: 2014, path: /obspath/Tier2/MODIS-CFMIP} - - - DIAG_Fig3pr: - description: Cloud diagnostics - variables: - - {name: pr-mmday, field: T2Ms} - scripts: - - {script: clouds_taylor.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_taylor.ncl} - additional_models: - - {name: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start: 1986, end: 2005, path: /obspath/Tier1/} - - -# Lauer and Hamilton (2013) - Equation 2, part of Figure 8 -# Interannual variability: relative temporal standard deviation calculated from -# monthly mean anomalies after subtracting the climatological mean seasonal cycle - - DIAG_Fig8lwp: - description: Cloud diagnostics - variables: - - {name: lwp, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: UWisc, project: OBS, type: sat, version: v2, start: 1988, end: 2007, path: /obspath/Tier3/UWisc} - - - DIAG_Fig8clt: - description: Cloud diagnostics - variables: - - {name: clt, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: MODIS, project: obs4mips, level: L3, version: C5, start: 2001, end: 2010, path: /obspath/Tier1/} - - - DIAG_Fig8swcre: - description: Cloud diagnostics - variables: - - {name: SW_CRE, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_Fig8lwcre: - description: Cloud diagnostics - variables: - - {name: LW_CRE, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - DIAG_Fig8netcre: - description: Cloud diagnostics - variables: - - {name: NET_CRE, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - - # DIAG_Fig8clivi: - # description: Cloud diagnostics - # variables: - # - {name: clivi, field: T2Ms} - # scripts: - # cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl - # script: clouds_interannual.ncl - # model: {name: MODIS-CFMIP, project: OBS, type: sat, version: v2, start: 2003, end: 2014, path: /obspath/Tier2/MODIS-CFMIP} - - - DIAG_Fig8pr: - description: Cloud diagnostics - variables: - - {name: pr-mmday, field: T2Ms} - scripts: - - {script: clouds_interannual.ncl, cfg_file: ./nml/cfg_clouds/cfg_clouds_interannual.ncl} - additional_models: - - {name: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start: 1986, end: 2005, path: /obspath/Tier1/} diff --git a/esmvaltool/namelists/tobeported/namelist_mjo_daily.yml b/esmvaltool/namelists/tobeported/namelist_mjo_daily.yml deleted file mode 100644 index 3175ee23ee..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_mjo_daily.yml +++ /dev/null @@ -1,140 +0,0 @@ -############################################################################### -# namelist_mjo_daily.xml - -# Description -# The MJO diagnostics are developed by the US CLIVAR MJO Working Group -# The majority of scripts are based on example scripts -# at http://ncl.ucar.edu/Applications/mjoclivar.shtml -# This namelist is configured for monthly diagnostics -# -# Authors -# Shiyu Wang (SMHI, Sweden) -# -# Contributors -# Martin Evaldsson (SMHI, Sweden) -# -# Project -# EMBRACE -# -# References -# CLIVAR Madden-Julian Oscillation Working Group, J. Climate, 22, 3006–3030, -# doi: https://doi.org/10.1175/2008JCLI2731.1 (2009) -# -# Kim, D. et al., J. Climate, 22, 6413–6436, doi:10.1175/2009JCLI3063.1 (2009) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - show_debuginfo: True - read_from_vault: False - - -MODELS: - - {name: MPI-ESM-LR, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_prEOF: - description: EOF analysis for precipitation/olr/u850/u200 on daily basis - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, field: T2Ds} - scripts: - - {script: mjo_univariate_eof.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: GFDL-ESM2M, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2008, path: /obspath/Tier1/GPCP-1DD/} - - - DIAG_prWAVE: - description: Wave Spectra analysis for precip or olr or u850 or u200 on daily basis - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, field: T2Ds} - scripts: - - {script: mjo_wave_freq.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_wave_freq.ncl} - additional_models: - - {name: GFDL-ESM2M, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2008, path: /obspath/Tier1/GPCP-1DD/} - - - DIAG_prLAG: - description: Lead/lag correlation bet. precip and u850 or u200 on daily resolution - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, exclude_model: NCEP, field: T2Ds} - - {name: ua-850, ref_model: NCEP, exclude_model: GPCP-1DD, field: T2Ds} - scripts: - - {script: mjo_precip_u850-200_propagation.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: GFDL-ESM2M, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2008, path: /obspath/Tier1/GPCP-1DD/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NCEP/} - - - DIAG_prua: - description: 20-100day bandpass filtered variance for precip and u850 or u200 on daily resolution - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, exclude_model: NCEP, field: T2Ds} - - {name: ua-850, ref_model: NCEP, exclude_model: GPCP-1DD, field: T2Ds} - scripts: - - {script: mjo_precip_uwnd_variance.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: GFDL-ESM2M, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: day, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2008, path: /obspath/Tier1/GPCP-1DD/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NCEP/} - - - DIAG_rlutuaSPECTRA: - description: coherence-squared and phase relationships in wavenumber-frequency space for precip or olr and u850 or u200 on daily resolution - variables: - - {name: rlut, ref_model: NOAA-PSD-Interp, exclude_model: NCEP, field: T2Ds} - - {name: ua-850, ref_model: NCEP, exclude_model: NOAA-PSD-Interp, field: T2Ds} - scripts: - - {script: mjo_olr_u850-200_cross_spectra.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: NOAA-PSD-Interp, project: OBS, type: ground, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NOAA-PSD-Interp} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NCEP/} - - - DIAG_rlutua_CEOF: - description: multi vari CEOF for precip or olr and u850, U200 on daily resolution - variables: - - {name: rlut, ref_model: NOAA-PSD-Interp, exclude_model: NCEP, field: T2Ds} - - {name: ua-850-200, ref_model: NCEP, exclude_model: NOAA-PSD-Interp, field: T2Ds} - scripts: - - {script: mjo_olr_u850_200_ceof.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: NOAA-PSD-Interp, project: OBS, type: ground, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NOAA-PSD-Interp} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NCEP/} - - - DIAG_rlutuava: - description: MJO life cycle based CEOF PC index (dependency: must be run after 'mjo_olr_u850_200_ceof.ncl') - variables: - - {name: rlut, ref_model: NOAA-PSD-Interp, exclude_model: NCEP, field: T2Ds} - - {name: ua-850, ref_model: NCEP, exclude_model: NOAA-PSD-Interp, field: T2Ds} - - {name: va-850, ref_model: NCEP, exclude_model: NOAA-PSD-Interp, field: T2Ds} - scripts: - - {script: mjo_olr_uv850_ceof_life_cycle.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_daily_propagation.ncl} - additional_models: - - {name: NOAA-PSD-Interp, project: OBS, type: ground, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NOAA-PSD-Interp} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 2001, end: 2008, path: /obspath/Tier2/NCEP/} diff --git a/esmvaltool/namelists/tobeported/namelist_mjo_mean_state.yml b/esmvaltool/namelists/tobeported/namelist_mjo_mean_state.yml deleted file mode 100644 index 5189521283..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_mjo_mean_state.yml +++ /dev/null @@ -1,52 +0,0 @@ -############################################################################### -# namelist_mjo_mean_state.xml -# -# Description -# The MJO diagnostics are developed by the US CLIVAR MJO Working Group -# The majority of scripts are based on example scripts -# at http://ncl.ucar.edu/Applications/mjoclivar.shtml -# This namelist is configured for monthly diagnostics -# -# Authors -# Shiyu Wang (SMHI, Sweden) -# Martin Evaldsson (SMHI, Sweden) -# -# Project -# EMBRACE -# -# References -# CLIVAR Madden-Julian Oscillation Working Group, J. Climate, 22, 3006–3030, -# doi: https://doi.org/10.1175/2008JCLI2731.1 (2009) -# -# Kim, D. et al., J. Climate, 22, 6413–6436, doi:10.1175/2009JCLI3063.1 (2009) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - debuginfo: False - - -MODELS: - - {name: HadGEM2-ES, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - {name: EC-EARTH, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1980, end: 2004, path: /modelpath/CMIP5/} - - -DIAGNOSTICS: - description: Seasonal mean state for pr and u850 - variables: - - {name: pr-mmday, ref_model: GPCP-1DD, exclude_model: ERA-Interim, field: T2Ms} - - {name: ua-850, ref_model: ERA-Interim, exclude_model: GPCP-1DD, field: T2Ms} - scripts: - - {script: mjo_precip_u850_basic_month.ncl, cfg_file: ./nml/cfg_mjo/cfg_mjo_precip_u850.ncl} - additional_models: - - {name: GPCP-1DD, project: obs4mips, level: L3, version: v1.2, start: 2001, end: 2008, path: /obspath/Tier1/GPCP-1DD/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1980, end: 2004, path. /obspath/Tier3/ERA-Interim/} diff --git a/esmvaltool/namelists/tobeported/namelist_reformat.yml b/esmvaltool/namelists/tobeported/namelist_reformat.yml deleted file mode 100644 index d403f11881..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_reformat.yml +++ /dev/null @@ -1,66 +0,0 @@ -############################################################################### -# namelist_reformat.xml -# -# Description -# Test namelist for the reformat routines -# -# Author -# Mattia Righi (DLR, Germany) -# -# Project -# DLR ESMVal -# -# Reference -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: -# Each block below is used for testing the project classes in projects.py - - # CMIP5 - - {name: ACCESS1-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 1998, end: 2004, path: /modelpath/CMIP5/} - - # EMAC -# - {name: EVAL2, project: EMAC, ensemble: 1, start: 1999, end: 2008, path: /modelpath/EMAC/EVAL2/} - - # GFDL -# - {name: CM4i_c96L48_am4a1r1_2000climo, project: GFDL, realm: atmos, ensemble: 1, start: 1980, end: 1983, shift: 1979, path: /modelpath/GFDL/CM4i_c96L48_am4a1r1_2000climo/} - - # CCMVal -# - {name: AMTRAC, project: CCMVal, exp: REF-1, ensemble: 1, start: 1960, end: 2004, path: /modelpath/CCMVal/CCMVal1-Data/} -# - {name: AMTRAC, project: CCMVal, exp: REF-2, ensemble: 1, start: 2050, end: 2099, path: /modelpath/CCMVal/CCMVal1-Data/} -# - {name: AMTRAC3, project: CCMVal, exp: REF-B1, ensemble: 1, start: 1951, end: 2007, path: /modelpath/CCMVal/CCMVal2-Data/} - - # OBS -# - {name: ESACCI-AEROSOL, project: OBS, type: sat, version: SU-v4.21, start: 1997, end: 2011, path: /obspath/Tier2/ESACCI-AEROSOL} - - # obs4mips -# - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/Tier1/} - - # ana4mips -# - {name: IFS-Cy31r2, project: ana4mips, mip: Amon, type: reanalyses, start: 1984, end: 2005, path: /obspath/Tier1/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - -- diag: - description: Empty diagnostic - variable: {name: tas, field: T2Ms} diff --git a/esmvaltool/namelists/tobeported/namelist_righi15gmd_ECVs.yml b/esmvaltool/namelists/tobeported/namelist_righi15gmd_ECVs.yml deleted file mode 100644 index 4c0ac5eb40..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_righi15gmd_ECVs.yml +++ /dev/null @@ -1,1206 +0,0 @@ -############################################################################### -# namelist_righi15gmd_ECVs.xml -# -# Description -# This namelist produces figures 1 to 9, and S2 to S12 of Righi et al. (2015) -# -# Authors -# Franziska Frank (DLR, Germany) -# Mattia Righi (DLR, Germany) -# Veronika Eyring (DLR, Germany) -# -# Project -# DLR ESMVal -# -# References -# Righi et al., Geosci. Model Dev., 8, 733-768 10.5194/gmd-8-733-2015 (2015) -# Gleckler et al., J. Geophys. Res., 113, D06104, doi: 10.1029/2007JD008972 -# (2008) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: EVAL2, project: EMAC, ensemble: 1, start: 1999, end: 2009, path: /modelpath/} - - {name: QCTM, project: EMAC, ensemble: 1, start: 1999, end: 2007, path: /modelpath/} - - {name: TS2000, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: True - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - -# ANNUAL CYCLE PLOTS (Figs. 1, 8, S4, S6, S8) ########################################################################## - - DIAG_tacycle: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_glob.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_NHExt.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - - DIAG_uacycle: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_glob.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_NHExt.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - - DIAG_vacycle: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_glob.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_NHExt.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - - DIAG_zgcycle: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_glob.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_NHExt.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - - DIAG_huscycle: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_glob.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_NHExt.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - -# ADDITIONAL DIAGNOSTICS FOR TEMPERATURE AND STRATOSPHERIC WATER VAPOUR (Figs. 3, 4) ################################### - - DIAG_ta100: - description: Temperature - variable: {name: ta, ref_model: ERA-Interim, field: T3M} - preprocess: - select_level: 100 - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - - DIAG_h2o: - description: Water vapour - variable: {name: vmrh2o, ref_model: HALOE, field: T3M} - preprocess: - - {select_level: 100} - - {select_level: 200} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_trop.ncl} - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_cycle_monthlyclim_SHExt.ncl} - additional_models: - - {name: HALOE, project: OBS, type: sat, version: 1, start: 1991, end: 2002, path: /obspath/} - - -# ZONAL MEAN PLOTS (Figs. 2, 9, S2, S3, S5, S7, S9) #################################################################### - - DIAG_tazonal: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_annualclim_all_glob.ncl} - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_DJF_all_glob.ncl} - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_MAM_all_glob.ncl} - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_JJA_all_glob.ncl} - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_SON_all_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uazonal: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_DJF_all_glob.ncl} - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_JJA_all_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_vazonal: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_annualclim_all_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgzonal: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_annualclim_all_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_huszonal: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_zonal_annualclim_all_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - -# LAT-LON PLOTS (Figs. S10, S11, S12) ################################################################################## - - DIAG_rlutcslatlon: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_latlon_annualclim_all_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutlatlon: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_latlon_annualclim_all_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutlatlon: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_latlon_annualclim_all_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_coverlatlon: - description: Total cloud cover - variable: {name: clt, ref_model: MODIS, field: T2Ms} - scripts: - - {script: perfmetrics_main, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_latlon_annualclim_all_glob.ncl} - additional_models: - - {name: MODIS, project: obs4mips, level: L3, version: C5, start: 2001, end: 2010, path: /modelpath/Tier1} - - -# RMSD GRADING (GLOBAL) (Figs. 5a, 7a, 7e) ############################################################################# - - DIAG_tarmsdglob: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_tataylorglob: - description: Temperature - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_uarmsdglob: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uataylorglob: - description: Eastward wind - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_varmsdglob: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgrmsdglob: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husrmsdglob: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsrmsdglob: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutrmsdglob: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutrmsdglob: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rmsdglob: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_glob.ncl} - - -# RMSD GRADING (TROPICS) (Figs. 5b, 7b, 7f) ############################################################################ - - DIAG_tarmsdtrop: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_tataylortrop: - description: Temperature - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_uarmsdtrop: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uataylortrop: - description: Eastward wind - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_varmsdtrop: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgrmsdtrop: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husrmsdtrop: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsrmsdtrop: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutrmsdtrop: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutrmsdtrop: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rmsdtrop: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_trop.ncl} - - -# RMSD GRADING (NH EXTRATROPICS) (Figs. 5c, 7c, 7g) #################################################################### - - DIAG_tarmsdNHExt: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_tataylorNHExt: - description: Temperature - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_uarmsdNHExt: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uataylorNHExt: - description: Eastward wind - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_varmsdNHExt: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgrmsdNHExt: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husrmsdNHExt: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsrmsdNHExt: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutrmsdNHExt: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutrmsdNHExt: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rmsdNHExt: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_NHExt.ncl} - - -# RMSD GRADING (SH EXTRATROPICS) (Figs. 5d, 7d, 7h) #################################################################### - - DIAG_tarmsdSHExt: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_tataylorSHExt: - description: Temperature - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_uarmsdSHExt: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uataylorSHExt: - description: Eastward wind - scripts: - - {script: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_varmsdSHExt: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgrmsdSHExt: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husrmsdSHExt: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsrmsdSHExt: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutrmsdSHExt: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutrmsdSHExt: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rmsdSHExt: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_RMSD_SHExt.ncl} - - -# BIAS GRADING (GLOBAL) (Fig. 6a) ###################################################################################### - - DIAG_tabiasglob: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uabiasglob: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_vabiasglob: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgbiasglob: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husbiasglob: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsbiasglob: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutbiasglob: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutbiasglob: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_biasglob: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - -# BIAS GRADING (TROPICS) (Fig. 6b) ##################################################################################### - - DIAG_tabiastrop: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uabiastrop: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_vabiastrop: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgbiastrop: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husbiastrop: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsbiastrop: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutbiastrop: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutbiastrop: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_biastrop: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - -# BIAS GRADING (NH EXTRATROPICS) (Fig. 6c) ############################################################################# - - DIAG_tabiasNHExt: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uabiasNHExt: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_vabiasNHExt: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgbiasNHExt: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husbiasNHExt: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsbiasNHExt: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutbiasNHExt: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutbiasNHExt: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_biasNHExt: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - -# BIAS GRADING (SH EXTRATROPICS) (Fig. 6d) ############################################################################# - - DIAG_tabiasSHExt: - description: Temperature - variable: {name: ta, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_uabiasSHExt: - description: Eastward wind - variable: {name: ua, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_vabiasSHExt: - description: Northward wind - variable: {name: va, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 200} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_zgbiasSHExt: - description: Geopotential height - variable: {name: zg, ref_model: [ERA-Interim,NCEP], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 500} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_husbiasSHExt: - description: Specific humidity - variable: {name: hus, ref_model: [AIRS,ERA-Interim], field: T3M} - preprocess: - - {select_level: 850} - - {select_level: 400} - - {select_level: 30} - - {select_level: 5} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start: 2003, end: 2010, path: /obspath/} - - {name: ERA-Interim, project: OBS, type: reanaly, version: 1, start: 1996, end: 2005, path: /obspath/} - - DIAG_rlutcsbiasSHExt: - description: Outgoing LW radiation (clearsky) - variable: {name: rlutcs, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rlutbiasSHExt: - description: Outgoing LW radiation (allsky) - variable: {name: rlut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_rsutbiasSHExt: - description: Reflected SW radiation (allsky) - variable: {name: rsut, ref_model: [SRB,CERES-EBAF], field: T2Ms} - scripts: - - {script: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - - {script: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} - additional_models: - - {name: SRB, project: OBS, type: sat, version: 1, start: 1995, end: 2005, path: /obspath/} - - {name: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start: 2001, end: 2012, path: /obspath/} - - DIAG_biasSHExt: - description: Portrait diagram - scripts: - - {script: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/ECVs/cfg_perfmetrics_grading_BIAS_glob.ncl} diff --git a/esmvaltool/namelists/tobeported/namelist_righi15gmd_Emmons.yml b/esmvaltool/namelists/tobeported/namelist_righi15gmd_Emmons.yml deleted file mode 100644 index b76ee6ca89..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_righi15gmd_Emmons.yml +++ /dev/null @@ -1,117 +0,0 @@ -############################################################################### -# namelist_righi15gmd_Emmons.xml -# -# Description -# This namelist produces figures 16, 17, 19, S15, S16, S17, S18, S19 of -# Righi et al. (2015) -# -# Author -# Klaus-Dirk Gottschaldt (DLR, Germany) -# -# Project -# DLR ESMVal -# -# References -# Righi et al., Geosci. Model Dev., 8, 733-768 10.5194/gmd-8-733-2015 (2015) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: EVAL2, project: EMAC, ensemble: 1, start: 1999, end: 2009, path: /modelpath/} - - {name: QCTM, project: EMAC, ensemble: 1, start: 1999, end: 2007, path: /modelpath/} - - {name: TS2000, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP-S1, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP-S2, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: True - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_Fig16: - description: Emmons profiles: fig 16 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, tro3, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig16_0.ncl} - - - DIAG_Fig17: - description: Emmons profiles: fig 17 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrnox, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig17_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig17_1.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig17_2.ncl} - - - DIAG_Fig19: - description: Emmons profiles: fig 19 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrco, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig19_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_fig19_1.ncl} - - - DIAG_FigS15: - description: Emmons profiles: fig S15 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrc2h4, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS15_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS15_1.ncl} - - - DIAG_FigS16: - description: Emmons profiles: fig S16 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrc2h6, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS16_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS16_1.ncl} - - - DIAG_FigS17: - description: Emmons profiles: fig S17 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrc3h6, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS17_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS17_1.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS17_2.ncl} - - - DIAG_FigS18: - description: Emmons profiles: fig S18 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrc3h8, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS18_0.ncl} - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS18_1.ncl} - - - DIAG_FigS19: - description: Emmons profiles: fig S19 of Righi et al., 2014 - variables: - - {name: Emmons.ncl, vmrch3coch3, field: T3M} - scripts: - - {name: Emmons.ncl, cfg_file: ./nml/cfg_righi15gmd/Emmons/cfg_righi15gmd_figS19_0.ncl} diff --git a/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_CMIP5.yml b/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_CMIP5.yml deleted file mode 100644 index ad28d19a98..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_CMIP5.yml +++ /dev/null @@ -1,228 +0,0 @@ -############################################################################### -# namelist_righi15gmd_tropo3.xml -# -# Description -# This namelist produces figures 9, 11-15, 18 of Righi et al. (2015) -# -# Author -# Klaus-Dirk Gottschaldt (DLR, Germany) -# -# Contributors -# Franziska Frank (DLR, Germany) -# Mattia Righi (DLR, Germany) -# Veronika Eyring (DLR, Germany) -# -# Project -# DLR ESMVal -# -# References -# Righi et al., Geosci. Model Dev., 8, 733-768 10.5194/gmd-8-733-2015 (2015) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: bcc-csm1-1-m, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: BNU-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CanESM2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CCSM4, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-FASTCHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CNRM-CM5-2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: CSIRO-Mk3-6-0, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: FGOALS-g2, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5B-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC4h, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-P, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - {name: MRI-ESM1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start: 2000, end: 2005, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: True - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - -# Fig. 10, 13, 14 ###################################################################################################### - - DIAG_tropozmap: - description: Fig 13 and 14: tropospheric column ozone plots - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: ancyc_lat.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig14.ncl} - - {name: lat_lon.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig13.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, version: 1, start: 2005, end: 2012, path: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozmap: - description: Fig 9: total column ozone plot - variables: - - {name: toz, field: T2Ms} - scripts: - - {name: ancyc_lat, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig10.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA/} - - {name: GTO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV/} - - -# Fig. 11 (top-left) and Fig 12 (top- and bottom-left) ################################################################# - - DIAG_tropozrmsd: - description: RMSD grading for portrait plot and Taylor plot for tropoz - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, ensemble: 1, start: 2005, end: 2012, obs: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tropoztalorcollect: - description: Taylor plot collect - scripts: - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - - DIAG_tozrmsd: - description: RMSD grading for portrait plot and Taylor plot for toz - variables: - - {name: toz, ref_model: [NIWA,GTO-ECV], field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA} - - {name: GWO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV} - - - DIAG_tozrmsdcollect: - description: RMSD grading and Taylor plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_collect_O3.ncl} - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - -# Fig. 11 (bottom left) ################################################################################################ - - DIAG_tropozmap: - description: Fig 13 and 14: tropospheric column ozone plots - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: ancyc_lat.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig14.ncl} - - {name: lat_lon.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig13.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, version: 1, start: 2005, end: 2012, path: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozmap: - description: fig 9: total column ozone plot - variables: - - {name: toz, field: T2Ms} - scripts: - - {name: ancyc_lat, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig10.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA/} - - {name: GTO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV/} - - -# Fig. 11 (top-left) and Fig 12 (top- and bottom-left) ################################################################# - - DIAG_tropozbias: - description: BIAS grading for portrait plot for tropoz - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, ensemble: 1, start: 2005, end: 2012, obs: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozbias: - description: BIAS grading for portrait plot and Taylor plot for toz - variables: - - {name: toz, ref_model: [NIWA,GTO-ECV], field: T2Ms} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA} - - {name: GWO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV} - - - DIAG_biascollect: - description: BIAS grading plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_collect_O3.ncl} diff --git a/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_EMAC.yml b/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_EMAC.yml deleted file mode 100644 index ca16e224ac..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_righi15gmd_tropo3_EMAC.yml +++ /dev/null @@ -1,557 +0,0 @@ -############################################################################### -# namelist_righi15gmd_tropo3.xml -# -# Description -# This namelist produces figures 9, 11-15, 18 of Righi et al. (2015) -# -# Author -# Klaus-Dirk Gottschaldt (DLR, Germany) -# -# Contributors -# Franziska Frank (DLR, Germany) -# Mattia Righi (DLR, Germany) -# Veronika Eyring (DLR, Germany) -# -# Project -# DLR ESMVal -# -# References -# Righi et al., Geosci. Model Dev., 8, 733-768 10.5194/gmd-8-733-2015 (2015) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: EVAL2, project: EMAC, ensemble: 1, start: 1999, end: 2009, path: /modelpath/} - - {name: QCTM, project: EMAC, ensemble: 1, start: 1999, end: 2007, path: /modelpath/} - - {name: TS2000, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP-S1, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - {name: ACCMIP-S2, project: EMAC, ensemble: 1, start: 2001, end: 2010, path: /modelpath/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: True - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - -# Fig. 10, 13, 14 ###################################################################################################### - - DIAG_tropozmap: - description: Fig 13 and 14: tropospheric column ozone plots - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: ancyc_lat.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig14.ncl} - - {name: lat_lon.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig13.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, version: 1, start: 2005, end: 2012, path: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozmap: - description: Fig 9: total column ozone plot - variables: - - {name: toz, field: T2Ms} - scripts: - - {name: ancyc_lat, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig10.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA/} - - {name: GTO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV/} - - -# Fig. 11 (top-left) and Fig 12 (top- and bottom-left) ################################################################# - - DIAG_tropozrmsd: - description: RMSD grading for portrait plot and Taylor plot for tropoz - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, ensemble: 1, start: 2005, end: 2012, obs: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tropoztalorcollect: - description: Taylor plot collect - scripts: - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - - DIAG_tozrmsd: - description: RMSD grading for portrait plot and Taylor plot for toz - variables: - - {name: toz, ref_model: [NIWA,GTO-ECV], field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_NH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_all_glob.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA} - - {name: GWO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV} - - - DIAG_tozrmsdcollect: - description: RMSD grading and Taylor plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_collect_O3.ncl} - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - -# Fig. 11 (bottom left) ################################################################################################ - - DIAG_tropozmap: - description: Fig 13 and 14: tropospheric column ozone plots - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: ancyc_lat.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig14.ncl} - - {name: lat_lon.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig13.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, version: 1, start: 2005, end: 2012, path: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozmap: - description: fig 9: total column ozone plot - variables: - - {name: toz, field: T2Ms} - scripts: - - {name: ancyc_lat, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_righi15gmd_fig10.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA/} - - {name: GTO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV/} - - -# Fig. 11 (top-left) and Fig 12 (top- and bottom-left) ################################################################# - - DIAG_tropozbias: - description: BIAS grading for portrait plot for tropoz - variables: - - {name: tropoz, ref_model: AURA-MLS-OMI, field: T2Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - additional_models: - - {name: AURA-MLS-OMI, project: OBS, type: sat, ensemble: 1, start: 2005, end: 2012, obs: /obspath/Tier2/AURA-MLS-OMI/} - - - DIAG_tozbias: - description: BIAS grading for portrait plot and Taylor plot for toz - variables: - - {name: toz, ref_model: [NIWA,GTO-ECV], field: T2Ms} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Polar.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Polar.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_SH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_NH_Midlat.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_trop.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_all_glob.ncl} - additional_models: - - {name: NIWA, project: OBS, type: reanaly, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/NIWA} - - {name: GWO-ECV, project: OBS, type: sat, version: 1, start: 1998, end: 2010, path: /obspath/Tier3/GTO-ECV} - - - DIAG_biascollect: - description: BIAS grading plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_collect_O3.ncl} - -# Fig. 11 (top-right), Fig. 12 (top- and bottom-right), and Fig. 18 #################################################### - - DIAG_cormsdazr: - description: CO RMSD grading and Taylor plot: azr (NHmidlat) - variables: - - {name: vmrco_azr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_azr_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_azr_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_azr_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: azr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdhpb: - description: CO RMSD grading and Taylor plot: hpb (NHmidlat) - variables: - - {name: vmrco_hpb, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_hpb_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_hpb_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_hpb_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: hpb-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdlef: - description: CO RMSD grading and Taylor plot: lef (NHmidlat) - variables: - - {name: vmrco_lef, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_lef_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_lef_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_lef_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: lef-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdnwr: - description: CO RMSD grading and Taylor plot: nwr (NHmidlat) - variables: - - {name: vmrco_nwr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_nwr_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_nwr_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_nwr_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: nwr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdeic: - description: CO RMSD grading and Taylor plot: eic (SHmidlat) - variables: - - {name: vmrco_eic, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_eic_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_eic_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_eic_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: eic-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cotaylorcollect: - dscription: Taylor plot collect - scripts: - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - DIAG_cormsdalt: - description: CO RMSD grading and Taylor plot: alt (NHpolar) - variables: - - {name: vmrco_alt, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_alt_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_alt_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_alt_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: alt-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdchr: - description: CO RMSD grading and Taylor plot: chr (Trop) - variables: - - {name: vmrco_chr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_chr_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_chr_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_chr_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: chr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdgmi: - description: CO RMSD grading and Taylor plot: gmi (Trop) - variables: - - {name: vmrco_gmi, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_gmi_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_gmi_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_gmi_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: gmi-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdmlo: - description: CO RMSD grading and Taylor plot: mlo (Trop) - variables: - - {name: vmrco_mlo, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_mlo_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_mlo_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_mlo_RMSD.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: mlo-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cormsdcollect: - description: RMSD grading and Taylor plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_collect_CO.ncl} - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - -# Fig 11 (bottom-right) ################################################################################################ - - DIAG_cobiasazr: - description: CO BIAS grading plot: azr (NHmidlat) - variables: - - {name: vmrco_azr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_azr_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_azr_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: azr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiashpb: - description: CO BIAS grading plot: hpb (NHmidlat) - variables: - - {name: vmrco_hpb, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_hpb_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_hpb_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: hpb-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiaslef: - description: CO BIAS grading plot: lef (NHmidlat) - variables: - - {name: vmrco_lef, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_lef_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_lef_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: lef-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiasnwr: - description: CO BIAS grading plot: nwr (NHmidlat) - variables: - - {name: vmrco_nwr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_nwr_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_nwr_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: nwr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiaseic: - description: CO BIAS grading plot: eic (SHmidlat) - variables: - - {name: vmrco_eic, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_eic_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_eic_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: eic-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiasalt: - description: CO BIAS grading plot: alt (NHpolar) - variables: - - {name: vmrco_alt, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_alt_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_alt_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: alt-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiaschr: - description: CO BIAS grading plot: chr (Trop) - variables: - - {name: vmrco_chr, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_chr_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_chr_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: chr-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiasgmi: - description: CO BIAS grading plot: gmi (Trop) - variables: - - {name: vmrco_gmi, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_gmi_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_gmi_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: gmi-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiasmlo: - description: CO BIAS grading plot: mlo (Trop) - variables: - - {name: vmrco_mlo, ref_model: GLOBALVIEW, field: T0Ms} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_mlo_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T0Ms_mlo_BIAS.ncl} - additional_models: - - {name: GLOBALVIEW, project: OBS, type: ground, version: mlo-01D0, start: 1999, end: 2008, path: /obspath/Tier2/GLOBALVIEW/} - - - DIAG_cobiascollect: - description: BIAS grading plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_collect_CO.ncl} - - -# Fig. 11 (top-middle), Fig. 12 (top- and bottom-middle) and Fig. 15 ################################################### - - DIAG_tro3rmsdNHext: - description: RMSD grading and Taylor plot for Tilmes ozonesonde data: NHext region - variables: - - {name: tro3_NHext, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_NHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_NHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_NHext_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_NHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_NHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_NHext_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_NHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_NHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_NHext_RMSD.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: NHext, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - - DIAG_tro3rmsdSHext: - description: RMSD grading and Taylor plot for Tilmes ozonesonde data: SHext region - variables: - - {name: tro3_SHext, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_SHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_SHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_SHext_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_SHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_SHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_SHext_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_SHext_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_SHext_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_SHext_RMSD.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: SHext, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - DIAG_tro3taylorcollect: - description: Taylor plot collect - scripts: - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - - DIAG_tro3rmsdTrop: - description: RMSD grading and Taylor plot for Tilmes ozonesonde data: Trop region - variables: - - {name: tro3_Trop, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_Trop_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_Trop_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_Trop_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_Trop_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_Trop_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_Trop_RMSD.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_Trop_RMSD.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_Trop_RMSD.ncl} - - {name: perfmetrics_taylor.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_Trop_RMSD.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: Trop, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - - DIAG_tro3rmsdcollect: - description: Grading and Taylor plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_RMSD_collect_Tilmes.ncl} - - {name: perfmetrics_taylor_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_taylor_collect.ncl} - - -# Fig. 11 (bottom-middle) ############################################################################################## - - DIAG_tro3biasNHext: - description: BIAS grading plot for Tilmes ozonesonde data: NHext region - variables: - - {name: tro3_NHext, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_NHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_NHext_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_NHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_NHext_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_NHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_NHext_BIAS.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: NHext, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - - DIAG_tro3biasSHext: - description: BIAS grading plot for Tilmes ozonesonde data: SHext region - variables: - - {name: tro3_SHext, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_SHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_SHext_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_SHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_SHext_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_SHext_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_SHext_BIAS.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: SHext, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - - DIAG_tro3biasTrop: - description: BIAS grading plot for Tilmes ozonesonde data: Trop region - variables: - - {name: tro3_Trop, ref_model: Tilmes, field: T1M} - scripts: - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_Trop_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_250_Trop_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_Trop_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_500_Trop_BIAS.ncl} - - {name: perfmetrics_main.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_Trop_BIAS.ncl} - - {name: perfmetrics_grading.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_cycle_monthlyclim_T1M_700_Trop_BIAS.ncl} - additional_models: - - {name: Tilmes, project: OBS, type: insitu, version: Trop, start: 2000, end: 2000, path: /obspath/Tier2/Tilmes/} - - - DIAG_tro3biascollect: - description: BIAS grading plot collect - scripts: - - {name: perfmetrics_grading_collect.ncl, cfg_file: ./nml/cfg_righi15gmd/tropo3/cfg_perfmetrics_grading_BIAS_collect_Tilmes.ncl} - diff --git a/esmvaltool/namelists/tobeported/namelist_runoff_et.yml b/esmvaltool/namelists/tobeported/namelist_runoff_et.yml deleted file mode 100644 index 08367f5644..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_runoff_et.yml +++ /dev/null @@ -1,64 +0,0 @@ -############################################################################### -# namelist_runoff_et.xml -# -# Description -# Namelist for the runoff and ET diagnostics. The diagnostics calculates water -# balance components for different catchments and compares the results against -# observations -# -# Authors -# Stefan Hagemann (MPI, Germany) -# Alexander Loew (LMU, Germany) -# -# Project -# EMBRACE -# -# References -# Duemenil Gates et al., Observed historical discharge data from major rivers -# for climate model validation. Max Planck Institute for Meteorology Report -# 307, Hamburg, Germany (2000) -# Hagemann, S. et al.,J. Adv. Model. Earth Syst., 5, 259-286, -# doi:10.1029/2012MS000173 (2013) -# Weedon, G. P. et al., Water Resour. Res., 50, 7505–7514, -# doi:10.1002/2014WR015638 (2014) -# -# This namelist is part of the ESMValTool -############################################################################### - - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - # - {name: GFDL-ESM2M, project: CMIP5, mip: *, exp: rcp85, ensemble: r2i1p1, start: 2006, end: 2020, path: /modelpath/CMIP5/} - # - {name: MPI-ESM-LR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, project: CMIP5, mip: *, exp: amip, ensemble: r1i1p1, start: 1980, end: 2005, path: /modelpath/CMIP5/} - # - {name: MPI-ESM-LR, project: CMIP5, mip: *, exp: historical, ensemble: r1i1p1, start: 2000, end: 2004, path: /modelpath/CMIP5/} - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: False - mask_landocean: None - multimodel_mean: False - multimodel_median: False - - -DIAGNOSTICS: - - DIAG: - description: EMBRACE runoff and land surface evaporation diagnostic - variables: - - {name: evspsbl, mip: Lmon, field: T2Ms} - - {name: mrro, mip: Lmon, field: T2Ms} - - {name: pr, mip: Amon, field: T2Ms} - scripts: -# - {name: runoff_et.py, cfg_file: none_yet.py} - - {name: catchment_analysis_val.py, cfg_file: none_yet.py} diff --git a/esmvaltool/namelists/tobeported/namelist_sm_pr.yml b/esmvaltool/namelists/tobeported/namelist_sm_pr.yml deleted file mode 100644 index e178774ba2..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_sm_pr.yml +++ /dev/null @@ -1,56 +0,0 @@ -############################################################################### -# namelist_sm_pr.xml -# -# Description -# Diagnostic preference for afternoon precipitation over soil moisture -# anomalies -# -# Author(s) -# Belen Gallego-Elvira (CEH, UK) -# Chris Taylor (CEH, UK) -# -# Contributor(s) -# Luis Garcia-Carreras (University of Leeds, UK) -# -# Project(s) -# EMBRACE -# -# Reference(s) -# Taylor et al., Nature, 489, 423-426, doi:10.1038/nature11377 (2012) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: - - {name: IPSL-CM5A-MR, project: CMIP5, mip: 3hr, exp: historical, ensemble: r2i1p1, start: 1996, end: 2001, path: /modelpath/CMIP5} - - {name: HadGEM2-ES, project: CMIP5, mip: 3hr, exp: historical, ensemble: r2i1p1, start: 1996, end: 2001, path: /modelpath/CMIP5} - - {name: INMCM4, project: CMIP5, mip: 3hr, exp: historical, ensemble: r1i1p1, start: 1996, end: 2001, path: /modelpath/CMIP5} -# fx file: diag_scripts/aux/PR-SM/topo_var_5x5.gra !? - - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG: - description: Preference for afternoon precipitation over soil moisture - variables: - - {name: pr, field: T2Is} - - {name: mrsos, field: T2Is} - scripts: - - {name: sm_pr_diag_nml.py, cfg_file: ./nml/cfg_sm_pr/cfg_sm_pr.conf} diff --git a/esmvaltool/namelists/tobeported/namelist_wenzel14jgr.yml b/esmvaltool/namelists/tobeported/namelist_wenzel14jgr.yml deleted file mode 100644 index 37a47e4298..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_wenzel14jgr.yml +++ /dev/null @@ -1,280 +0,0 @@ -############################################################################# -# namelist_wenzel14jgr.xml -# -# Description -# This namelist analyzes models carbon cycle response to climate change and -# creates an emergent constraint accross the model ensemble, reproducing -# Figure 5 of Wenzel et al. (2014) -# -# Author -# Sabrina Wenzel (DLR, Germany) -# -# Project -# EMBRACE -# -# Reference -# Wenzel, S. et al. J. Geophys. Res. Biogeosci., 119, 794–807, -# doi:10.1002/2013JG002591 (2014) -# -# This namelist is part of the ESMValTool -############################################################################# - - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: -# Models defined within each diagnostic -# NOTE1: in diag_scripts/create_co2flux.ncl: please adjust fx-filepath (lines: 154, 158, 188, 193) to your local file path !!! -# NOTE2: reading dignostic carbon_corr_2var.ncl requires changing the model file path according to your climo_dir !!! - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - -## CHECK AGAIN TIME RANGES BELOW! -## ADD LAND MASK FILTERING TO LAND VARIABLES (previously in variable_defs) - - -# Fig. 01: Quantities used to diagnose GAMMA_LT ######################################################################## - - DIAG_Fig1a: - description: Fig. 1a - variables: - - {name: cumnbp, field: T2Ms} - scripts: - - {name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line.ncl} - additional_models: - - {name: CanESM2, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1861, end: 1989, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1860, end: 1989, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - - DIAG_Fig1b: - description: Fig. 1b - variables: - - {name: cumnbp, field: T2Ms} - scripts: - - {name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line.ncl} - additional_models: - - {name: CanESM2, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1861, end: 1989, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1860, end: 1989, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - - DIAG_Fig1c: - description: Fig. 1c - variables: - - {name: tas, field: T2Ms} - scripts: - - {name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line.ncl} - additional_models: - - {name: CanESM2, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1861, end: 1989, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1860, end: 1989, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} - - -# Fig. 2: Quantities used to diagnose GAMMA_IAV ######################################################################## - - DIAG_Fig2a: - description: Fig. 2a - variables: - - {name: nbp, field: T2Ms} - scripts: - - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} - additional_models: - - {name: CanESM2, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Lmon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - - DIAG_Fig2b: - description: Fig. 2b - variables: - - {name: nbp, field: T2Ms} - scripts: - - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} - additional_models: - - {name: CanESM2, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Lmon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - -# DIAG_Fig2c: -# description: Fig. 2c -# variables: -# - {name: fgco2, field: T2Ms} -# scripts: -# - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} -# additional_models: -# - {name: CanESM2, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: CESM1-BGC, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1850, end: 1989, path: /modelpath/CMIP5/} ### 1850 correct??? -# - {name: GFDL-ESM2M, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: HadGEM2-ES, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5A-LR, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: MIROC-ESM, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: MPI-ESM-LR, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} -# - {name: NorESM1-ME, mip: Omon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - -# DIAG_Fig2d: -# description: Fig. 2d -# variables: -# - {name: fgco2, field: T2Ms} -# scripts: -# - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} -# additional_models: -# - {name: CanESM2, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: CESM1-BGC, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: GFDL-ESM2M, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: HadGEM2-ES, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5A-LR, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: MIROC-ESM, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: MPI-ESM-LR, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} -# - {name: NorESM1-ME, mip: Omon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - DIAG_Fig2e: - description: Fig. 2e - variables: - - {name: tas, field: T2Ms} - scripts: - - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} - additional_models: - - {name: CanESM2, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Amon, exp: 1pctCO2, ensemble: r1i1p1, start: 1890, end: 1989, path: /modelpath/CMIP5/} - - - DIAG_Fig2f: - description: Fig. 2f: integrated NBP in the idealized coupled simulation - variables: - - {name: tas, field: T2Ms} - scripts: - - {name: name: tsline.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_line_h.ncl} - additional_models: - - {name: CanESM2, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - -# Wenzel et al. 2014, Fig. 3/04: Diagnose GAMMA_IAV from each model #################################################### - - DIAG_preproc: - description: preprocess and save co2flux and tas in climo_dir - variables: - - {name: nbp, mip: Lmon, field: T2Ms} - - {name: fgco2, mip: Omon, field: T2Ms} - - {name: tas, mip: Amon, field: T2Ms} - scripts: - - {name: create_co2flux.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_G_IAV.ncl} - additional_models: - - {name: CanESM2, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: *, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - - DIAG_corr: - description: Fig. 3/04: correlate to variables and saves in output - variables: - - {name: co2flux, ref_model: GCP, exclude_model: NCEP, field: T0M} - - {name: tas, ref_model: NCEP, exclude_model: GCP, field: T2Ms} - scripts: - - {name: carbon_corr_2var.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_G_IAV.ncl} - additional_models: - - {name: CanESM2, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2004, path: /modelpath/CMIP5/} ## 2004 correct?? - - {name: IPSL-CM5A-LR, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Amon, exp: esmHistorical, ensemble: r1i1p1, start: 1960, end: 2005, path: /modelpath/CMIP5/} - - {name: GCP, project: OBS, type: reanaly, version: 1, start: 1959, end: 2005, path: /obspath/Tier2/GCP} - - {name: NCEP, project: OBS, type: reanaly, version: 1, start: 1959, end: 2005, path: /obspath/Tier2/NCEP} - - -# Wenzel et al. 2014, Fig. 5: Diagnose GAMMA_LT and create Emergent Constraint ######################################### - - DIAG_dummy: - description: Dummy diagnostic to preprocess NBP for carbon_constraint.ncl - variables: - - {name: nbp, field: T2Ms} - scripts: - - {name: carbon_dummy.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_G_LT.ncl} - additional_models: - - {name: CanESM2, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: Lmon, exp: esmFixClim1, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - - DIAG_fig5: - description: Fig. 5: correlate to variables and calculated PDF - variables: - - {name: nbp, mip: Lmon, field: T2Ms} - - {name: tas, mip: Amon, field: T2Ms} - scripts: - - {name: carbon_constraint.ncl, cfg_file: ./nml/cfg_carbon/cfg_carbon_G_LT.ncl} - additional_models: - - {name: CanESM2, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: CESM1-BGC, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: GFDL-ESM2M, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: HadGEM2-ES, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: IPSL-CM5A-LR, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: MIROC-ESM, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} - - {name: NorESM1-ME, mip: *, exp: 1pctCO2, ensemble: r1i1p1, start: 1880, end: 1960, path: /modelpath/CMIP5/} diff --git a/esmvaltool/namelists/tobeported/namelist_williams09climdyn_CREM.yml b/esmvaltool/namelists/tobeported/namelist_williams09climdyn_CREM.yml deleted file mode 100644 index f95e43157d..0000000000 --- a/esmvaltool/namelists/tobeported/namelist_williams09climdyn_CREM.yml +++ /dev/null @@ -1,74 +0,0 @@ -############################################################################### -# namelist_williams09climdyn_CREM.xml -# -# Description -# Namelist for the cloud regime error metric -# -# Author -# Keith Williams (MetOffice, UK) -# -# Contributor -# Axel Lauer (DLR, Germany) -# -# Project -# ESA CCI CMUG -# -# Reference -# Williams, K. and Webb, M., Clim. Dynam., 33, 141-157, -# doi:10.1007/s00382-008-0443-1 (2009) -# -# This namelist is part of the ESMValTool -############################################################################### - -GLOBAL: - write_plots: True - write_netcdf: True - verbosity: 1 - exit_on_warning: False - output_file_type: ps - - -MODELS: -# - {name: CanAM4, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: CNRM-CM5, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5A-LR, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5B-LR, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: MIROC5, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: HadGEM2-A, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: MRI-CGCM3, mip: cfDay, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: CanAM4, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: CNRM-CM5, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5A-LR, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: IPSL-CM5B-LR, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: MIROC5, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: HadGEM2-A, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} -# - {name: MRI-CGCM3, mip: day, exp: amip, ensemble: r1i1p1, start: 1985, end: 1990, path: /modelpath/CMIP5/} - - {name: MIROC5 mip: *, exp: amip, ensemble: r1i1p1, start: 1985, end: 1987, path: /modelpath/CMIP5/} - - {name: MPI-ESM-LR mip: *, exp: amip, ensemble: r1i1p1, start: 1985, end: 1987, path: /modelpath/CMIP5/} - -PREPROCESS: - select_level: None - target_grid: None - regrid_scheme: None - mask_fillvalues: None - mask_landocean: None - multimodel_mean: False - - -DIAGNOSTICS: - - DIAG_CREM: - description: Cloud Regime Error Metrics (CREM) - variables: - - {name: albisccp, mip: cfDay, field: T2Ds} - - {name: pctisccp, mip: cfDay, field: T2Ds} - - {name: cltisccp, mip: cfDay, field: T2Ds} - - {name: rsut, mip: cfDay, field: T2Ds} - - {name: rlut, mip: cfDay, field: T2Ds} - - {name: rsutcs, mip: cfDay, field: T2Ds} - - {name: rlutcs, mip: cfDay, field: T2Ds} - - {name: snc, mip: day, field: T2Ds} - - {name: snw, mip: day, field: T2Ds} - - {name: sic, mip: day, field: T2Ds} - scripts: - - {name: ww09_ESMValTool.py, cfg_file: ./nml/cfg_ww09_CREM/ww09_CREM.conf} diff --git a/esmvaltool/preprocessor/__init__.py b/esmvaltool/preprocessor/__init__.py index f04c35931f..9609f324e7 100644 --- a/esmvaltool/preprocessor/__init__.py +++ b/esmvaltool/preprocessor/__init__.py @@ -5,19 +5,26 @@ from iris.cube import Cube from .._task import AbstractTask +from ._area_pp import area_average as average_region +from ._area_pp import area_slice as extract_region +from ._area_pp import zonal_means from ._derive import derive from ._download import download -from ._io import cleanup, extract_metadata, load_cubes, save_cubes, concatenate -from ._mask import mask_fillvalues, mask_landocean +from ._io import cleanup, concatenate, extract_metadata, load_cubes, save +from ._mask import (mask_fillvalues, mask_landsea, mask_above_threshold, + mask_below_threshold, mask_inside_range, + mask_outside_range) from ._multimodel import multi_model_statistics -from ._reformat import fix_data, fix_file, fix_metadata, cmor_check_data, \ - cmor_check_metadata -from ._regrid import vinterp as extract_levels +from ._reformat import (cmor_check_data, cmor_check_metadata, fix_data, + fix_file, fix_metadata) from ._regrid import regrid -from ._time_area import area_average as average_region -from ._time_area import area_slice as extract_region +from ._regrid import vinterp as extract_levels +from ._volume_pp import depth_integration, extract_trajectory, extract_transect +from ._volume_pp import volume_average as average_volume +from ._volume_pp import volume_slice as extract_volume from ._time_area import time_slice as extract_time -from ._time_area import seasonal_mean +from ._time_area import (extract_month, extract_season, seasonal_mean, + time_average) logger = logging.getLogger(__name__) @@ -36,29 +43,43 @@ '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', # Regridding 'regrid', - # Masking - 'mask_landocean', + # Masking missing values 'mask_fillvalues', + 'mask_above_threshold', + 'mask_below_threshold', + 'mask_inside_range', + 'mask_outside_range', # Region selection 'extract_region', - # Grid-point operations - 'average_region', + 'extract_volume', + 'extract_trajectory', + 'extract_transect', # 'average_zone': average_zone, # 'cross_section': cross_section, # Time operations # 'annual_cycle': annual_cycle, # 'diurnal_cycle': diurnal_cycle, - 'seasonal_mean', 'multi_model_statistics', + # Grid-point operations + 'depth_integration', + 'average_region', + 'average_volume', + 'zonal_means', + 'seasonal_mean', + 'time_average', 'cmor_check_data', # Save to file - 'save_cubes', + 'save', 'cleanup', 'extract_metadata', ] @@ -66,6 +87,9 @@ DEFAULT_ORDER = tuple(__all__) assert set(DEFAULT_ORDER).issubset(set(globals())) +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', @@ -79,7 +103,7 @@ 'load_cubes', 'concatenate', 'derive', - 'save_cubes', + 'save', 'cleanup', } assert _LIST_INPUT_FUNCTIONS.issubset(set(DEFAULT_ORDER)) @@ -88,16 +112,16 @@ _LIST_OUTPUT_FUNCTIONS = MULTI_MODEL_FUNCTIONS | { 'download', 'load_cubes', - 'save_cubes', + 'save', 'cleanup', } assert _LIST_OUTPUT_FUNCTIONS.issubset(set(DEFAULT_ORDER)) -def split_settings(settings, step): +def split_settings(settings, step, order=DEFAULT_ORDER): """Split settings, using step as a separator.""" before = {} - for _step in DEFAULT_ORDER: + for _step in order: if _step == step: break if _step in settings: @@ -114,6 +138,7 @@ def _get_multi_model_settings(all_settings, step): for settings in all_settings.values(): if step in settings: return {step: settings[step]} + return None def _group_input(in_files, out_files): @@ -176,7 +201,7 @@ def preprocess_multi_model(input_files, all_settings, order, debug=False): # Run single model steps for name in all_settings: settings, all_settings[name] = split_settings( - all_settings[name], step) + all_settings[name], step, order) all_items[name] = preprocess(all_items[name], settings, order, debug) if step is not dummy_step: @@ -225,7 +250,7 @@ def preprocess(items, settings, order, debug=False): if debug: logger.debug("Result %s", items) cubes = [item for item in items if isinstance(item, Cube)] - save_cubes(cubes, debug=debug, step=step) + save(cubes, debug=debug, step=step) return items @@ -266,7 +291,9 @@ def __str__(self): txt = "{}:\norder: {}\n{}".format( self.__class__.__name__, - self.order, + tuple( + step for step in self.order + if any(step in settings for settings in settings.values())), super(PreprocessingTask, self).str(), ) diff --git a/esmvaltool/preprocessor/_area_pp.py b/esmvaltool/preprocessor/_area_pp.py new file mode 100644 index 0000000000..3b706b3c74 --- /dev/null +++ b/esmvaltool/preprocessor/_area_pp.py @@ -0,0 +1,163 @@ +""" +Area operations on data cubes + +Allows for selecting data subsets using certain latitude and longitude bounds; +selecting geographical regions; constructing area averages; etc. +""" +import iris + + +# slice cube over a restricted area (box) +def area_slice(cube, start_longitude, end_longitude, start_latitude, + end_latitude): + """ + Subset a cube on area + + 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) + + 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 + + +# get zonal means +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 + 'stdev' -> 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 + """ + if mean_type == 'mean': + result = cube.collapsed(coordinate, iris.analysis.MEAN) + elif mean_type == 'stdev': + result = cube.collapsed(coordinate, iris.analysis.STD_DEV) + elif mean_type == 'variance': + result = cube.collapsed(coordinate, iris.analysis.VARIANCE) + elif mean_type.lower() in ['minimum', 'min']: + result = cube.collapsed(coordinate, iris.analysis.MIN) + elif mean_type.lower() in ['maximum', 'max']: + result = cube.collapsed(coordinate, iris.analysis.MAX) + return result + + +# get the area average +def area_average(cube, coord1, coord2): + """ + Determine the area average. + + Can be used with coord1 and coord2 (strings, + usually 'longitude' and 'latitude' but depends on the cube); + + Arguments + --------- + cube: iris.cube.Cube + input cube. + + coord1: str + name of first coordinate + + coord2: str + name of second coordinate + + Returns + ------- + iris.cube.Cube + collapsed cube. + """ + # check for bounds just in case + for coord in (coord1, coord2): + if not cube.coord(coord).has_bounds(): + cube.coord(coord).guess_bounds() + grid_areas = iris.analysis.cartography.area_weights(cube) + result = cube.collapsed( + [coord1, coord2], iris.analysis.MEAN, weights=grid_areas) + return result + + +# operate along a trajectory line +def trajectory_cube(cube, long1, long2, lat1, lat2, plong1, plong2, plat1, + plat2, samplecounts): + """ + Build a trajectory + + Function that subsets a cube on a box (long1,long2,lat1,lat2) + then creates a trajectory with waypoints (plong1,plong2,plat1, plat2), + populates it with samplecounts number of points + and subsets the cube along the trajectory + """ + from iris.analysis import trajectory + sublon = iris.Constraint( + longitude=lambda cell: float(long1) <= cell <= float(long2)) + sublat = iris.Constraint( + latitude=lambda cell: float(lat1) <= cell <= float(lat2)) + wspd_subset = cube.extract(sublon & sublat) + pnts = [{ + 'longitude': float(plong1), + 'latitude': float(plat1) + }, { + 'longitude': float(plong2), + 'latitude': float(plat2) + }] + traj = trajectory.Trajectory(pnts, sample_count=int(samplecounts)) + lon = [d['longitude'] for d in traj.sampled_points] + lat = [d['latitude'] for d in traj.sampled_points] + sampled_points = [('longitude', lon), ('latitude', lat)] + section = trajectory.interpolate(wspd_subset, sampled_points) + lon = wspd_subset.coord('longitude').points + lat = wspd_subset.coord('latitude').points + return section, lon, lat diff --git a/esmvaltool/preprocessor/_derive.py b/esmvaltool/preprocessor/_derive.py index 4402869f7f..9238470229 100644 --- a/esmvaltool/preprocessor/_derive.py +++ b/esmvaltool/preprocessor/_derive.py @@ -43,6 +43,27 @@ def get_required(short_name, field=None): ('tro3', 'T3' + frequency), ('ps', 'T2' + frequency + 's'), ], + 'rtnt': [('rsdt', 'T2' + frequency + 's'), + ('rsut', 'T2' + frequency + 's'), ('rlut', + 'T2' + frequency + 's')], + 'rsnt': [ + ('rsdt', 'T2' + frequency + 's'), + ('rsut', 'T2' + frequency + 's'), + ], + 'rsns': [ + ('rsds', 'T2' + frequency + 's'), + ('rsus', 'T2' + frequency + 's'), + ], + 'rlns': [ + ('rlds', 'T2' + frequency + 's'), + ('rlus', 'T2' + frequency + 's'), + ], + 'cllmtisccp': [('clisccp', 'T4' + frequency)], + 'clltkisccp': [('clisccp', 'T4' + frequency)], + 'clmmtisccp': [('clisccp', 'T4' + frequency)], + 'clmtkisccp': [('clisccp', 'T4' + frequency)], + 'clhmtisccp': [('clisccp', 'T4' + frequency)], + 'clhtkisccp': [('clisccp', 'T4' + frequency)] } if short_name in required: @@ -64,6 +85,16 @@ def derive(cubes, variable): 'lwp': calc_lwp, 'swcre': calc_swcre, 'toz': calc_toz, + 'rtnt': calc_rtnt, + 'rsnt': calc_rsnt, + 'rsns': calc_rsns, + 'rlns': calc_rlns, + 'cllmtisccp': calc_cllmtisccp, + 'clltkisccp': calc_clltkisccp, + 'clmmtisccp': calc_clmmtisccp, + 'clmtkisccp': calc_clmtkisccp, + 'clhmtisccp': calc_clhmtisccp, + 'clhtkisccp': calc_clhtkisccp } if short_name not in functions: @@ -119,7 +150,7 @@ def calc_lwp(cubes): Liquid water path is calculated by subtracting clivi (ice water) from clwvi (condensed water path). - Note: Some models output the variable "clwvi" which only contains lwp. In + Note: Some datasets output the variable "clwvi" which only contains lwp. In these cases, the input clwvi cube is just returned. Arguments @@ -136,20 +167,21 @@ def calc_lwp(cubes): clivi_cube = cubes.extract_strict( Constraint(name='atmosphere_cloud_ice_content')) - model = clwvi_cube.attributes.get('model_id') + dataset = clwvi_cube.attributes.get('model_id') project = clwvi_cube.attributes.get('project_id') - # Should we check that the model/project_id are the same on both cubes? + # Should we check that the model_id/project_id are the same on both cubes? - bad_models = [ + 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 model in bad_models) - or (project == 'OBS' and model == 'UWisc')): - logger.info("Assuming that variable clwvi from %s model %s " - "contains only liquid water", project, model) + if ((project in ["CMIP5", "CMIP5_ETHZ"] and dataset in bad_datasets) + or (project == 'OBS' and dataset == 'UWisc')): + 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 @@ -159,6 +191,7 @@ def calc_lwp(cubes): def calc_swcre(cubes): """Compute shortwave cloud radiative effect from all-sky and clear-sky + flux. Arguments @@ -177,7 +210,6 @@ def calc_swcre(cubes): Constraint(name='toa_outgoing_shortwave_flux_assuming_clear_sky')) swcre = rsutcs_cube - rsut_cube - swcre.units = rsut_cube.units return swcre @@ -216,6 +248,345 @@ def calc_toz(cubes): return toz +def calc_rtnt(cubes): + """Compute rtnt: TOA Net downward Total Radiation. + + Arguments + ---- + cubes: cubelist containing rsut (toa_outgoing_shortwave_flux) and + rsdt (toa_incoming_shortwave_flux) and + rlut (toa_outgoing_longwave_flux). + + Returns + ------- + Cube containing TOA Net downward Total Radiation. + Units: W m-2 + + """ + 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 = (rsdt - rsut) - rlut + rtnt = rsdt_cube - rsut_cube - rlut_cube + + return rtnt + + +def calc_rsnt(cubes): + """Compute rsnt: TOA Net downward Shortwave Radiation. + + Arguments + ---- + cubes: cubelist containing rsut (toa_outgoing_shortwave_flux) and + rsdt (toa_incoming_shortwave_flux). + + Returns + ------- + Cube containing TOA Net downward Shortwave Radiation. + Units: W m-2 + + """ + rsdt_cube = cubes.extract_strict( + Constraint(name='toa_incoming_shortwave_flux')) + rsut_cube = cubes.extract_strict( + Constraint(name='toa_outgoing_shortwave_flux')) + + # rsnt = rsdt - rsut + rsnt = rsdt_cube - rsut_cube + + return rsnt + + +def calc_rsns(cubes): + """Compute rsns: Surface Net downward Shortwave Radiation. + + Arguments + ---- + cubes: cubelist containing + rsus (surface_upwelling_shortwave_flux_in_air) and + rsds (surface_downwelling_shortwave_flux_in_air). + + Returns + ------- + Cube containing Surface Net downward Shortwave Radiation. + Units: W m-2 + + """ + 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 = rsds - rsus + rsns = rsds_cube - rsus_cube + + return rsns + + +def calc_rlns(cubes): + """Compute rlns: Surface Net downward Longwave Radiation. + + Arguments + ---- + cubes: cubelist containing + rlds (surface_downwelling_longwave_flux_in_air) and + rlus (surface_upwelling_longwave_flux_in_air). + + Returns + ------- + Cube containing Surface Net downward Longwave Radiation. + Units: W m-2 + + """ + 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 = rlds - rlus + rlns = rlds_cube - rlus_cube + + return rlns + + +def calc_cllmtisccp(cubes): + """Compute cllmtisccp: + + long name: ISCCP Low Level Medium-Thickness Cloud Area Fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP Low Level Medium-Thickness Cloud Area Fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) + plev = iris.Constraint(air_pressure=lambda p: p > 68000.) + cllmtisccp_cube = clisccp_cube + cllmtisccp_cube = cllmtisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in cllmtisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + cllmtisccp_cube = cllmtisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + cllmtisccp_cube = cllmtisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return cllmtisccp_cube + + +def calc_clltkisccp(cubes): + """Compute clltkisccp: + + long name: ISCCP low level thick cloud area fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP low level thick cloud area fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) + plev = iris.Constraint(air_pressure=lambda p: p > 68000.) + clltkisccp_cube = clisccp_cube + clltkisccp_cube = clltkisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in clltkisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + clltkisccp_cube = clltkisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + clltkisccp_cube = clltkisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return clltkisccp_cube + + +def calc_clmmtisccp(cubes): + """Compute clmmtisccp: + + long name: ISCCP Middle Level Medium-Thickness Cloud Area Fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP Middle Level Medium-Thickness Cloud Area Fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) + plev = iris.Constraint(air_pressure=lambda p: 44000. < p <= 68000.) + clmmtisccp_cube = clisccp_cube + clmmtisccp_cube = clmmtisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in clmmtisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + clmmtisccp_cube = clmmtisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + clmmtisccp_cube = clmmtisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return clmmtisccp_cube + + +def calc_clmtkisccp(cubes): + """Compute clmtkisccp: + + long name: ISCCP Middle Level Thick Cloud Area Fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP Middle Level Thick Cloud Area Fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) + plev = iris.Constraint(air_pressure=lambda p: 44000. < p <= 68000.) + clmtkisccp_cube = clisccp_cube + clmtkisccp_cube = clmtkisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in clmtkisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + clmtkisccp_cube = clmtkisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + clmtkisccp_cube = clmtkisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return clmtkisccp_cube + + +def calc_clhmtisccp(cubes): + """Compute clhmtisccp: + + long name: ISCCP High Level Medium-Thickness Cloud Area Fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP High Level Medium-Thickness Cloud Area Fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: 3.6 < t <= 23.) + plev = iris.Constraint(air_pressure=lambda p: p <= 44000.) + clhmtisccp_cube = clisccp_cube + clhmtisccp_cube = clhmtisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in clhmtisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + clhmtisccp_cube = clhmtisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + clhmtisccp_cube = clhmtisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return clhmtisccp_cube + + +def calc_clhtkisccp(cubes): + """Compute clhtkisccp: + + long name: ISCCP high level thick cloud area fraction + short name: same + + Arguments + ---- + cubes: cubelist containing + clisccp(isccp_cloud_area_fraction) + + Returns + ------- + Cube: ISCCP high level thick cloud area fraction. + Units: % + + """ + clisccp_cube = cubes.extract_strict( + Constraint(name='isccp_cloud_area_fraction')) + + tau = iris.Constraint( + atmosphere_optical_thickness_due_to_cloud=lambda t: t > 23.) + plev = iris.Constraint(air_pressure=lambda p: p <= 44000.) + clhtkisccp_cube = clisccp_cube + clhtkisccp_cube = clhtkisccp_cube.extract(tau & plev) + coord_names = [ + coord.standard_name for coord in clhtkisccp_cube.coords() + if len(coord.points) > 1 + ] + if 'atmosphere_optical_thickness_due_to_cloud' in coord_names: + clhtkisccp_cube = clhtkisccp_cube.collapsed( + 'atmosphere_optical_thickness_due_to_cloud', iris.analysis.SUM) + if 'air_pressure' in coord_names: + clhtkisccp_cube = clhtkisccp_cube.collapsed('air_pressure', + iris.analysis.SUM) + + return clhtkisccp_cube + + def _pressure_level_widths(tro3_cube, ps_cube, top_limit=100): """Create a cube with pressure level widths. diff --git a/esmvaltool/preprocessor/_download.py b/esmvaltool/preprocessor/_download.py index d5fb9d3a5a..8bc18e5df5 100644 --- a/esmvaltool/preprocessor/_download.py +++ b/esmvaltool/preprocessor/_download.py @@ -11,7 +11,7 @@ def synda_search(variable): """Search files using synda.""" query = { - 'model': variable.get('model'), + 'dataset': variable.get('dataset'), 'project': variable.get('project'), 'cmor_table': variable.get('mip'), 'ensemble': variable.get('ensemble'), diff --git a/esmvaltool/preprocessor/_io.py b/esmvaltool/preprocessor/_io.py index a56c623144..45d30df5f4 100644 --- a/esmvaltool/preprocessor/_io.py +++ b/esmvaltool/preprocessor/_io.py @@ -14,12 +14,12 @@ GLOBAL_FILL_VALUE = 1e+20 -MODEL_KEYS = { +DATASET_KEYS = { 'mip', } VARIABLE_KEYS = { - 'reference_model', - 'alternative_model', + 'reference_dataset', + 'alternative_dataset', } @@ -83,6 +83,7 @@ def concatenate(cubes): def _save_cubes(cubes, **args): """Save iris cube to file.""" filename = args['target'] + optimize_accesss = args.pop('optimize_access') dirname = os.path.dirname(filename) if not os.path.exists(dirname): @@ -94,13 +95,64 @@ def _save_cubes(cubes, **args): "The cube is probably unchanged.", cubes, filename) else: logger.debug("Saving cubes %s to %s", cubes, filename) + if optimize_accesss: + cube = cubes[0] + if optimize_accesss == 'map': + dims = set(cube.coord_dims('latitude') + + cube.coord_dims('longitude')) + elif optimize_accesss == 'timeseries': + dims = set(cube.coord_dims('time')) + else: + dims = tuple() + for coord_dims in (cube.coord_dims(dimension) for dimension + in optimize_accesss.split(' ')): + dims += coord_dims + dims = set(dims) + + args['chunksizes'] = tuple(length if index in dims else 1 + for index, length + in enumerate(cube.shape)) iris.save(cubes, **args) return filename -def save_cubes(cubes, debug=False, step=None): - """Save iris cubes to the file specified in the _filename attribute.""" +def save(cubes, optimize_access=None, + compress=False, debug=False, step=None): + """ + Save iris cubes to file + + Path is taken from the _filename attributte in the code. + + Parameters + ---------- + cubes: iterable of iris.cube.Cube + Data cubes to be saved + + 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. + + debug: bool, optional + Inform the function if this save is an intermediate save + + step: int, optional + Number of the preprocessor step. + + Only used if debug is True + + Returns + ------- + + """ paths = {} for cube in cubes: if '_filename' not in cube.attributes: @@ -122,7 +174,8 @@ def save_cubes(cubes, debug=False, step=None): for filename in paths: # _save_cubes(cubes=paths[filename], target=filename, # fill_value=GLOBAL_FILL_VALUE) - _save_cubes(cubes=paths[filename], target=filename) + _save_cubes(cubes=paths[filename], target=filename, zlib=compress, + optimize_access=optimize_access) return list(paths) @@ -170,19 +223,28 @@ def _write_ncl_metadata(output_dir, metadata): # dicts, so convert to dict of lists. keys = sorted({k for v in variables for k in v}) input_file_info = {k: [v.get(k) for v in variables] for k in keys} + fx_file_list = input_file_info.pop('fx_files', None) + if fx_file_list: + for fx_files in fx_file_list: + for key in fx_files: + if key not in input_file_info: + input_file_info[key] = [] + input_file_info[key].append(fx_files[key]) + info = { 'input_file_info': input_file_info, - 'model_info': {}, + 'dataset_info': {}, 'variable_info': {} } - # Split input_file_info into model and variable properties - # model keys and keys with non-identical values will be stored - # in model_info, the rest in variable_info + # 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 for key, values in input_file_info.items(): - model_specific = any(values[0] != v for v in values) - if (model_specific or key in MODEL_KEYS) and key not in VARIABLE_KEYS: - info['model_info'][key] = values + dataset_specific = any(values[0] != v for v in values) + if (dataset_specific or key in DATASET_KEYS) and \ + key not in VARIABLE_KEYS: + info['dataset_info'][key] = values else: # Select a value that is filled attribute_value = None diff --git a/esmvaltool/preprocessor/_mask.py b/esmvaltool/preprocessor/_mask.py index 06c6202400..4d65a75cde 100644 --- a/esmvaltool/preprocessor/_mask.py +++ b/esmvaltool/preprocessor/_mask.py @@ -7,6 +7,7 @@ from __future__ import print_function +import os import logging import iris @@ -17,20 +18,118 @@ logger = logging.getLogger(__name__) -def mask_landocean(cube, land_mask=None, ocean_mask=None): - """Mask land or ocean""" - if land_mask or ocean_mask: - raise NotImplementedError - +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 + + 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): + """Apply a land/sea mask""" + # mask_out: is either 'land' or 'sea' + # 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") -def fx_mask(mycube, fx): - """Reweighting function""" - masked_cube = mycube.copy() - masked_cube.data = mycube.data * fx.data / 100. - return masked_cube + return cube -def masked_cube_simple(mycube, slicevar, v1, v2, threshold): +def masked_cube_simple(mycube, slicevar, v_min, v_max, threshold): """ Mask function 1 -- simple cube cropping @@ -44,26 +143,24 @@ def masked_cube_simple(mycube, slicevar, v1, v2, threshold): coord = mycube.coord(slicevar) print('Masking on variable: %s' % coord.standard_name) cubeslice = mycube.extract( - iris.Constraint( - coord_values={ - coord.standard_name: lambda cell: v1 <= cell.point <= v2 - })) + iris.Constraint(coord_values={ + coord.standard_name: + lambda cell: v_min <= cell.point <= v_max + })) if cubeslice is not None: masked_cubeslice = cubeslice.copy() masked_cubeslice.data = ma.masked_greater(cubeslice.data, threshold) - print('Masking cube keeping only what is in between %f and %f' % - (v1, v2)) return masked_cubeslice else: - print('NOT masking the cube') + logger.info('NOT masking the cube') return mycube else: - print('Variable is not a cube dimension, leaving cube untouched') + logger.info('Var is not a cube dimension, leaving cube untouched') return mycube -def masked_cube_lonlat(mycube, lon1, lon2, lat1, lat2, threshold): +def masked_cube_lonlat(mycube, lonlat_list, threshold): """ Mask function 2 -- simple cube cropping on (min,max) lon,lat @@ -72,6 +169,7 @@ def masked_cube_lonlat(mycube, lon1, lon2, lat1, lat2, threshold): """ import numpy.ma as ma + lon1, lon2, lat1, lat2 = lonlat_list cubeslice = mycube.extract( iris.Constraint( longitude=lambda v: lon1 <= v.point <= lon2, @@ -86,61 +184,57 @@ def masked_cube_lonlat(mycube, lon1, lon2, lat1, lat2, threshold): return mycube -def cube_shape(mycube): - """Function that converts a cube into a shapely MultiPoint geometry""" - import shapely.geometry as sg - lon = mycube.coord('longitude') - lat = mycube.coord('latitude') - region = sg.MultiPoint(list(zip(lon.points.flat, lat.points.flat))) - return region - - -def maskgeometry(shapefilename, att, argv): - """ - Mask for a specific geometry - - This function takes in a shapefile shapefilename - and creates a specific geometry based on a set of conditions - on contour attributes att is argv e.g. - contour.attributes['name'] == 'land_mass' - """ +def _get_geometry_from_shp(shapefilename): + """Get the mask geometry out from a shapefile""" import cartopy.io.shapereader as shpreader reader = shpreader.Reader(shapefilename) - contours = reader.records() - contour_polygons, = [ - contour.geometry for contour in contours - if contour.attributes[att] == argv - ] - main_geom = sorted(contour_polygons.geoms, key=lambda geom: geom.area)[-1] + # Index 0 grabs the lowest resolution mask (no zoom) + main_geom = [contour for contour in reader.geometries()][0] return main_geom -def mask_2d(mycube, geom): - """ - Mask any 2D geometry +def _mask_with_shp(cube, shapefilename): + """Apply a Natural Earth land/sea mask""" + import shapely.vectorized as shp_vect - This function masks off any given 2D geometry geom - and keeps only the values that fall in geom, nulling - everything else in mycube - WARNING: as of now this function works with cubes that have time as coord - it is adusted to save time and loop over only lon-lat points - """ - from shapely.geometry import Point - ccube = mycube.collapsed('time', iris.analysis.MEAN) - mask = np.ones(ccube.data.shape) - p = -1 - for i in np.ndindex(ccube.data.shape): - if i[0] != p: - print(i[0], end=' ') - p = i[0] - this_cube = ccube[i] - this_lat = this_cube.coord('latitude').points[0] - this_lon = this_cube.coord('longitude').points[0] - 360 - this_point = Point(this_lon, this_lat) - mask[i] = this_point.within(geom) - - mycube.data = mycube.data * mask - return mycube + # 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 def polygon_shape(xlist, ylist): @@ -152,8 +246,8 @@ def polygon_shape(xlist, ylist): """ from shapely.geometry import Polygon poly = Polygon(xlist, ylist) - x, y = poly.exterior.coords.xy - return poly, x, y + x_p, y_p = poly.exterior.coords.xy + return poly, x_p, y_p """ @@ -249,11 +343,11 @@ def window_counts(mycube, value_threshold, window_size, pctile): # if one wants to print the whole array # np.set_printoptions(threshold=np.nan) - r = counts_windowed_cube.data.flatten() - meanr = np.mean(r) - stdr = np.std(r) - prcr = np.percentile(r, pctile) - return r, meanr, stdr, prcr + 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): @@ -281,18 +375,48 @@ def mask_cube_counts(mycube, value_threshold, counts_threshold, window_size): return counts_windowed_cube, newmask, masked_cube -def mask_threshold(mycube, threshold): +def mask_above_threshold(mycube, threshold): """ - Mask with threshold + Mask above a specific threshold value. - Takes a MINIMUM value `threshold' - and removes by masking off anything that's below it in the cube data + Takes a value `threshold' and masks off anything that is above + it in the cube data. Values equal to the threshold are not masked. """ - import numpy.ma as ma - mcube = mycube.copy() - # apply masking for threshold of MINIMUM value threshold - mcube.data = ma.masked_less(mycube.data, threshold) - return mcube + mycube.data = np.ma.masked_where(mycube.data > threshold, mycube.data) + return mycube + + +def mask_below_threshold(mycube, 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. + """ + mycube.data = np.ma.masked_where(mycube.data < threshold, mycube.data) + return mycube + + +def mask_inside_range(mycube, 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. + """ + mycube.data = np.ma.masked_inside(mycube.data, minimum, maximum) + return mycube + + +def mask_outside_range(mycube, 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. + """ + mycube.data = np.ma.masked_outside(mycube.data, minimum, maximum) + return mycube def mask_fillvalues(cubes, threshold_fraction, min_value=-1.e10, @@ -304,7 +428,7 @@ def mask_fillvalues(cubes, threshold_fraction, min_value=-1.e10, for cube in cubes: cube.data = np.ma.fix_invalid(cube.data, copy=False) - # Get the fillvalue masks from all models + # Get the fillvalue masks from all datasets masks = (_get_fillvalues_mask(cube, threshold_fraction, min_value, time_window) for cube in cubes) diff --git a/esmvaltool/preprocessor/_multimodel.py b/esmvaltool/preprocessor/_multimodel.py index fee2085403..35584ce95e 100644 --- a/esmvaltool/preprocessor/_multimodel.py +++ b/esmvaltool/preprocessor/_multimodel.py @@ -7,8 +7,8 @@ dimensions; and obviously consistent units. It operates on different (time) spans: -- full: computes stats on full model time; -- overlap: computes common time overlap between models; +- full: computes stats on full dataset time; +- overlap: computes common time overlap between datasets; """ @@ -21,7 +21,7 @@ import numpy as np import yaml -from ._io import save_cubes +from ._io import save logger = logging.getLogger(__name__) @@ -73,7 +73,10 @@ def _compute_statistic(datas, name): # get all NOT fully masked data - u_data # datas is per time point # so we can safely NOT compute stats for single points - u_datas = [data for data in datas if not np.all(data.mask)] + 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: @@ -88,7 +91,7 @@ def _compute_statistic(datas, name): if fixed_data is not None: plev_check.append(fixed_data) - # check for nr models + # check for nr datasets if len(plev_check) > 1: plev_check = np.ma.array(plev_check) statistic[j] = statistic_function(plev_check, axis=0) @@ -119,6 +122,13 @@ def _put_in_cube(template_cube, cube_data, stat_name, 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) @@ -131,7 +141,7 @@ def _put_in_cube(template_cube, cube_data, stat_name, stats_cube.add_aux_coord(template_cube.coord('air_pressure')) stats_cube.attributes['_filename'] = file_name - metadata = {'model': 'MultiModel' + stat_name.title(), + metadata = {'dataset': 'MultiModel' + stat_name.title(), 'filename': file_name} metadata_template = yaml.safe_load(template_cube.attributes['metadata']) for attr in ('short_name', 'standard_name', 'long_name', 'units', 'field', @@ -313,7 +323,7 @@ def multi_model_statistics(cubes, span, filenames, exclude, statistics): ] if len(selection) < 2: - logger.info("Single model in list: will not compute statistics.") + logger.info("Single dataset in list: will not compute statistics.") return cubes # unify units @@ -323,7 +333,7 @@ def multi_model_statistics(cubes, span, filenames, exclude, statistics): interval = _get_overlap(selection) if interval is None: logger.info("Time overlap between cubes is none or a single point.") - logger.info("check models: will not compute statistics.") + logger.info("check datasets: will not compute statistics.") return cubes time_unit = selection[0].coord('time').units.name @@ -332,7 +342,7 @@ def multi_model_statistics(cubes, span, filenames, exclude, statistics): files = [] if span == 'overlap': logger.debug("Using common time overlap between " - "models to compute statistics.") + "datasets to compute statistics.") # assemble data for stat_name in statistics: @@ -345,7 +355,7 @@ def multi_model_statistics(cubes, span, filenames, exclude, statistics): time_bounds) cube_of_stats.data = np.ma.array(cube_of_stats.data, dtype=np.dtype('float32')) - save_cubes([cube_of_stats]) + save([cube_of_stats]) files.append(filename) elif span == 'full': @@ -362,7 +372,7 @@ def multi_model_statistics(cubes, span, filenames, exclude, statistics): time_bounds) cube_of_stats.data = np.ma.array(cube_of_stats.data, dtype=np.dtype('float32')) - save_cubes([cube_of_stats]) + save([cube_of_stats]) files.append(filename) cubes.extend(files) diff --git a/esmvaltool/preprocessor/_regrid.py b/esmvaltool/preprocessor/_regrid.py index 86b72b840c..b5055ec9ba 100644 --- a/esmvaltool/preprocessor/_regrid.py +++ b/esmvaltool/preprocessor/_regrid.py @@ -12,8 +12,6 @@ import os import re from copy import deepcopy -import six -from ..cmor.table import CMOR_TABLES import iris import iris.exceptions @@ -23,6 +21,8 @@ from iris.analysis import AreaWeighted, Linear, Nearest, UnstructuredNearest from numpy import ma +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* @@ -53,7 +53,9 @@ unstructured_nearest=UnstructuredNearest()) # Supported vertical interpolation schemes. -vertical_schemes = ['linear', 'nearest'] +vertical_schemes = ['linear', 'nearest', + 'linear_horizontal_extrapolate_vertical', + 'nearest_horizontal_extrapolate_vertical'] def _stock_cube(spec): @@ -102,15 +104,13 @@ def _stock_cube(spec): # Construct the latitude coordinate, with bounds. ydata = np.linspace(_LAT_MIN + mid_dy, _LAT_MAX - mid_dy, _LAT_RANGE / dy) lats = iris.coords.DimCoord( - ydata, standard_name='latitude', units='degrees_north', - var_name='lat') + ydata, standard_name='latitude', units='degrees_north', var_name='lat') lats.guess_bounds() # Construct the longitude coordinate, with bounds. xdata = np.linspace(_LON_MIN + mid_dx, _LON_MAX - mid_dx, _LON_RANGE / dx) lons = iris.coords.DimCoord( - xdata, standard_name='longitude', units='degrees_east', - var_name='lon') + xdata, standard_name='longitude', units='degrees_east', var_name='lon') lons.guess_bounds() # Construct the resultant stock cube, with dummy data. @@ -322,8 +322,19 @@ def vinterp(src_cube, levels, scheme): raise ValueError(emsg) if scheme not in vertical_schemes: - emsg = 'Unknown vertical interpolation scheme, got {!r}.' - raise ValueError(emsg.format(scheme)) + emsg = 'Unknown vertical interpolation scheme, got {!r}. ' + emsg += 'Possible schemes: {!r}' + raise ValueError(emsg.format(scheme, list(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) @@ -373,7 +384,7 @@ def vinterp(src_cube, levels, scheme): src_cube.data, axis=z_axis, interpolation=scheme, - extrapolation='nan') + extrapolation=extrap_scheme) # Calculate the mask based on the any # NaN values in the interpolated data. @@ -446,7 +457,7 @@ def get_reference_levels(filename, coordinate='air_pressure'): Raises ------ ValueError: - If the model is not defined, the coordinate does not specify any + If the dataset is not defined, the coordinate does not specify any levels or the string is badly formatted. """ diff --git a/esmvaltool/preprocessor/_time_area.py b/esmvaltool/preprocessor/_time_area.py index 276c057f79..acfd34a0c8 100644 --- a/esmvaltool/preprocessor/_time_area.py +++ b/esmvaltool/preprocessor/_time_area.py @@ -7,6 +7,8 @@ """ from datetime import timedelta import iris +import iris.coord_categorisation +import numpy as np # slice cube over a restricted time period @@ -43,28 +45,68 @@ def time_slice(mycube, yr1, mo1, d1, yr2, mo2, d2): return cube_slice -# slice cube over a restricted area (box) -def area_slice(mycube, long1, long2, lat1, lat2): +def extract_season(cube, season): """ - Subset a cube on area + Slice cube to get only the data belonging to a specific season - Function that subsets a cube on a box (long1,long2,lat1,lat2) - This function is a restriction of masked_cube_lonlat(); - Returns a cube + Parameters + ---------- + cube: iris.cube.Cube + Original data + season: str + Season to extract. Available: DJF, MAM, JJA, SON """ - sublon = iris.Constraint( - longitude=lambda cell: float(long1) <= cell <= float(long2)) - sublat = iris.Constraint( - latitude=lambda cell: float(lat1) <= cell <= float(lat2)) - region_subset = mycube.extract(sublon & sublat) - return region_subset + iris.coord_categorisation.add_season(cube, 'time', name='clim_season') + season_cube = cube.extract(iris.Constraint(clim_season=season.lower())) + return season_cube + + +def extract_month(mycube, 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 + """ + season_cube = mycube.extract(iris.Constraint(month_number=month)) + return season_cube # get the time average -def time_average(mycube): - """Get the time average over MEAN; returns a cube""" - var_mean = mycube.collapsed('time', iris.analysis.MEAN) - return var_mean +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. + + Arguments + --------- + cube: iris.cube.Cube + input cube. + + Returns + ------- + iris.cube.Cube + time averaged cube. + """ + 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 cube.collapsed('time', iris.analysis.MEAN, + weights=time_weights) # get the probability a value is greater than a threshold @@ -82,59 +124,28 @@ def proportion_greater(mycube, coord1, threshold): return result -# get zonal means -def zonal_means(mycube, coord1, mean_type): - """ - Get zonal means - - Function that returns zonal means along a coordinate coord1; - the type of mean is controlled by mean_type variable (string): - 'mean' -> MEAN - 'stdev' -> STD_DEV - 'variance' -> VARIANCE - Returns a cube - """ - if mean_type == 'mean': - result = mycube.collapsed(coord1, iris.analysis.MEAN) - elif mean_type == 'stdev': - result = mycube.collapsed(coord1, iris.analysis.STD_DEV) - elif mean_type == 'variance': - result = mycube.collapsed(coord1, iris.analysis.VARIANCE) - return result - - -# get the area average -def area_average(mycube, coord1, coord2): - """ - Determine the area average. - - Can be used with coord1 and coord2 (strings, - usually 'longitude' and 'latitude' but depends on the cube); - Returns a cube - """ - import iris.analysis.cartography - mycube.coord(coord1).guess_bounds() - mycube.coord(coord2).guess_bounds() - grid_areas = iris.analysis.cartography.area_weights(mycube) - result = mycube.collapsed( - [coord1, coord2], iris.analysis.MEAN, weights=grid_areas) - return result - - # get the seasonal mean -def seasonal_mean(mycube): +def seasonal_mean(cube): """ Function to compute seasonal means with MEAN Chunks time in 3-month periods and computes means over them; - Returns a cube + + Arguments + --------- + cube: iris.cube.Cube + input cube. + + Returns + ------- + iris.cube.Cube + Seasonal mean cube """ - import iris.coord_categorisation - iris.coord_categorisation.add_season(mycube, 'time', name='clim_season') + iris.coord_categorisation.add_season(cube, 'time', name='clim_season') iris.coord_categorisation.add_season_year( - mycube, 'time', name='season_year') - annual_seasonal_mean = mycube.aggregated_by(['clim_season', 'season_year'], - iris.analysis.MEAN) + cube, 'time', name='season_year') + annual_seasonal_mean = cube.aggregated_by(['clim_season', 'season_year'], + iris.analysis.MEAN) def spans_three_months(time): """Check for three months""" @@ -144,40 +155,6 @@ def spans_three_months(time): return annual_seasonal_mean.extract(three_months_bound) -# operate along a trajectory line -def trajectory_cube(mycube, long1, long2, lat1, lat2, plong1, plong2, plat1, - plat2, samplecounts): - """ - Build a trajectory - - Function that subsets a cube on a box (long1,long2,lat1,lat2) - then creates a trajectory with waypoints (plong1,plong2,plat1, plat2), - populates it with samplecounts number of points - and subsets the cube along the trajectory - """ - from iris.analysis import trajectory - sublon = iris.Constraint( - longitude=lambda cell: float(long1) <= cell <= float(long2)) - sublat = iris.Constraint( - latitude=lambda cell: float(lat1) <= cell <= float(lat2)) - wspd_subset = mycube.extract(sublon & sublat) - pnts = [{ - 'longitude': float(plong1), - 'latitude': float(plat1) - }, { - 'longitude': float(plong2), - 'latitude': float(plat2) - }] - traj = trajectory.Trajectory(pnts, sample_count=int(samplecounts)) - lon = [d['longitude'] for d in traj.sampled_points] - lat = [d['latitude'] for d in traj.sampled_points] - sampled_points = [('longitude', lon), ('latitude', lat)] - section = trajectory.interpolate(wspd_subset, sampled_points) - lon = wspd_subset.coord('longitude').points - lat = wspd_subset.coord('latitude').points - return section, lon, lat - - # set of time axis checks # funcs that perform checks on the time axis # of data cubes and validates the type of data: diff --git a/esmvaltool/preprocessor/_volume_pp.py b/esmvaltool/preprocessor/_volume_pp.py new file mode 100644 index 0000000000..bc08837b44 --- /dev/null +++ b/esmvaltool/preprocessor/_volume_pp.py @@ -0,0 +1,288 @@ +""" +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; +""" +import iris +import numpy as np + + +# slice cube over a restricted area (box) +def volume_slice(cube, z_min, z_max): + """ + Subset a cube on volume + + 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 depth range to be the same sign + as the iris cube. ie, if the cube has depth 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 = z_min + zmin = z_max + else: + zmax = z_max + zmin = z_min + + subz = iris.Constraint( + depth=lambda cell: float(zmin) <= cell <= float(zmax)) + + region_subset = cube.extract(subz) + return region_subset + + +def volume_average(cube, coordz, coord1, coord2): + """ + Determine the volume average. + + 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. + + coordz: str + name of depth coordinate + + coord1: str + name of first coordinate + + coord2: str + name of second coordinate + + Returns + ------- + iris.cube.Cube + collapsed cube. + """ + # CMOR ised data should already have bounds? + # cube.coord(coord1).guess_bounds() + # cube.coord(coord2).guess_bounds() + depth = cube.coord(coordz) + thickness = depth.bounds[..., 1] - depth.bounds[..., 0] + + area = iris.analysis.cartography.area_weights(cube) + + if depth.ndim == 1: + slices = [None for i in cube.shape] + coord_dim = cube.coord_dims(coordz)[0] + slices[coord_dim] = slice(None) + thickness = np.abs(thickness[tuple(slices)]) + + grid_volume = area * thickness + + result = cube.collapsed( + [coordz, coord1, coord2], iris.analysis.MEAN, weights=grid_volume) + + return result + + +# get the depth integration +def depth_integration(cube, coordz): + """ + Determine the total sum over the vertical component. + + Requires a 3D cube, and the name of the z coordinate. The depth + 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. + + coordz: str + name of depth coordinate + + Returns + ------- + iris.cube.Cube + collapsed cube. + """ + #### + depth = cube.coord(coordz) + thickness = depth.bounds[..., 1] - depth.bounds[..., 0] + + if depth.ndim == 1: + slices = [None for i in cube.shape] + coord_dim = cube.coord_dims(coordz)[0] + slices[coord_dim] = slice(None) + thickness = np.abs(thickness[tuple(slices)]) + + ones = np.ones_like(cube.data) + + weights = thickness * ones + + result = cube.collapsed(coordz, 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. + + ie: + extract_transect(cube, longitude=-28) + will produce a transect along 28 West. + + 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!') + + 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 = lats.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)] + + +# extract along a trajectory +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 new file mode 100644 index 0000000000..30acb5f815 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_land.README.html @@ -0,0 +1,403 @@ + + + + + + + + +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 new file mode 100644 index 0000000000..5dbaad6dd1 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_land.VERSION.txt @@ -0,0 +1 @@ +4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg b/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg new file mode 100644 index 0000000000..3ad133c048 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_land.cpg @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..fca59dc8fc Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_land.dbf differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj b/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj new file mode 100644 index 0000000000..f45cbadf00 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_land.prj @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..44f9d4e5a6 Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_land.shp differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx b/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx new file mode 100644 index 0000000000..fcc1badd3d Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_land.shx differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html new file mode 100644 index 0000000000..880d47d731 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.README.html @@ -0,0 +1,402 @@ + + + + + + + + +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 new file mode 100644 index 0000000000..5dbaad6dd1 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.VERSION.txt @@ -0,0 +1 @@ +4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg new file mode 100644 index 0000000000..3ad133c048 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.cpg @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..6437fc75c7 Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.dbf differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj new file mode 100644 index 0000000000..f45cbadf00 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.prj @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..28b746bcd1 Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shp differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx new file mode 100644 index 0000000000..83663ce64a Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_10m_ocean.shx differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html new file mode 100644 index 0000000000..9f9b1de533 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.README.html @@ -0,0 +1,395 @@ + + + + + + + + +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 new file mode 100644 index 0000000000..5dbaad6dd1 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.VERSION.txt @@ -0,0 +1 @@ +4.1.0 diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg new file mode 100644 index 0000000000..3ad133c048 --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.cpg @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..3c93d9d7f7 Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.dbf differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj new file mode 100644 index 0000000000..a30c00a55d --- /dev/null +++ b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.prj @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000..964c3dfa9d Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shp differ diff --git a/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx new file mode 100644 index 0000000000..32f350f8f5 Binary files /dev/null and b/esmvaltool/preprocessor/ne_masks/ne_50m_ocean.shx differ diff --git a/esmvaltool/recipe_schema.yml b/esmvaltool/recipe_schema.yml new file mode 100644 index 0000000000..292053f3ba --- /dev/null +++ b/esmvaltool/recipe_schema.yml @@ -0,0 +1,43 @@ +# Generic recipe Yamale schema definition. +# See https://github.com/23andMe/Yamale for help. + +--- +# Recipe schema +datasets: list(include('dataset'), required=False) +preprocessors: map(map(), required=False) +diagnostics: map(include('diagnostic'), required=False) + +--- +# Recipe item definitions +dataset: + dataset: str() + project: str(required=False) + start_year: int(min=0000, max=4000) + end_year: int(min=0000, max=4000) + ensemble: str(required=False) + exp: 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: + field: str() + preprocessor: str(required=False) + reference_dataset: str(required=False) + alternative_dataset: str(required=False) + mip: 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) + variables: map(include('variable'), required=False) + +script: + script: str() diff --git a/esmvaltool/recipes/examples/recipe_TestMaskThreshold.yml b/esmvaltool/recipes/examples/recipe_TestMaskThreshold.yml new file mode 100644 index 0000000000..c206e74a70 --- /dev/null +++ b/esmvaltool/recipes/examples/recipe_TestMaskThreshold.yml @@ -0,0 +1,144 @@ +############################################################################### +# recipe_OceanPhysics.yml +--- +documentation: + description: | + Recipe to demonstrate several simple plots based on the monthly ocean + temperature. Please use this file as a template for adding additional + fields into the ocean. This work based on the BGC-val toolkit GMD-2018-103. + Written by Lee de Mora, Plymouth Marine Laboratory + + authors: + - ledm + + references: + - BGC-val:gmd-2018-103 + + projects: + - ukesm + + +datasets: + # working datasets + - {dataset: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: GISS-E2-H, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadGEM2-AO, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadCM3, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: CanCM4, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + # Problem with latitude > 90. + - {dataset: HadGEM2-CC, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadGEM2-ES, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + ##### + # Data with Errors right now -June 2018 + ### + # Problem with times +# - {dataset: MIROC-ESM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: MIROC-ESM-CHEM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + # Unstructured grids +# - {dataset: MPI-ESM-LR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} +# - {dataset: MPI-ESM-MR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: ACCESS1-0, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: ACCESS1-3, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + +# TODO: All multi-model statistics are turned off until the preprocessor order is fixed. + +preprocessors: + # -------------------------------------------------- + # Time series preprocessors + # -------------------------------------------------- + prep_timeseries_1: # For 2D fields + custom_order: true + mask_above_threshold: + threshold: 280. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_2: # For 2D fields + custom_order: true + mask_below_threshold: + threshold: 280. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_3: # For 2D fields + custom_order: true + mask_inside_range: + minimum: 280. + maximum: 285. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_4: # For 2D fields + custom_order: true + mask_outside_range: + minimum: 280. + maximum: 285. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + + +diagnostics: + # -------------------------------------------------- + # Time series diagnostics + # -------------------------------------------------- + diag_timeseries_1: + description: Global Ocean Surface mean timeseries + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_1 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_timeseries: &Global_Ocean_Surface_mean_timeseries1 + script: ocean/diagnostic_timeseries.py + + diag_timeseries_2: + description: Global Ocean Surface mean timeseries + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_2 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_timeseries: &Global_Ocean_Surface_mean_timeseries2 + script: ocean/diagnostic_timeseries.py + + diag_timeseries_3: + description: Global Ocean Surface mean timeseries + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_3 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_timeseries: &Global_Ocean_Surface_mean_timeseries3 + script: ocean/diagnostic_timeseries.py + + diag_timeseries_4: + description: Global Ocean Surface mean timeseries + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_4 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_timeseries: &Global_Ocean_Surface_mean_timeseries4 + script: ocean/diagnostic_timeseries.py + diff --git a/esmvaltool/recipes/examples/recipe_ncl.yml b/esmvaltool/recipes/examples/recipe_ncl.yml new file mode 100644 index 0000000000..f9c442f59e --- /dev/null +++ b/esmvaltool/recipes/examples/recipe_ncl.yml @@ -0,0 +1,48 @@ +--- + +datasets: + - {dataset: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + +preprocessors: + preprocessor_1: + extract_levels: + levels: 85000 + scheme: nearest + regrid: false + mask_landocean: false + multi_model_statistics: false + +diagnostics: + ta_diagnostics: + description: Air temperature tutorial diagnostics. + variables: + ta: + preprocessor: preprocessor_1 + field: T3M + fx_files: [sftlf] + additional_datasets: + - {dataset: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + scripts: + test_ta: &settings + script: examples/diagnostic_ta.ncl + projection: Mollweide + styleset: CMIP5 + colormap: WhiteBlueGreenYellowRed + ncdf: default + test_ta_no2: + <<: *settings + script: examples/diagnostic_ta.ncl + + pr_diagnostic: + description: Precipitation tutorial diagnostic. + variables: + pr: + field: T2Ms + additional_datasets: [] + scripts: + test_pr: + <<: *settings + script: examples/diagnostic_pr.ncl diff --git a/esmvaltool/recipes/examples/recipe_preprocessor_derive_test.yml b/esmvaltool/recipes/examples/recipe_preprocessor_derive_test.yml new file mode 100644 index 0000000000..1265a79e52 --- /dev/null +++ b/esmvaltool/recipes/examples/recipe_preprocessor_derive_test.yml @@ -0,0 +1,28 @@ +--- + +datasets: +# - {dataset: CESM1-WACCM, project: CMIP5, mip: Amon, exp: historical, ensemble: r2i1p1, start_year: 1997, end_year: 2005} +# - {dataset: CNRM-CM5, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} + - {dataset: GFDL-CM3, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} + - {dataset: GISS-E2-H, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start_year: 1997, end_year: 2005} + - {dataset: GISS-E2-R, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p2, start_year: 1997, end_year: 2005} +# - {dataset: MIROC-ESM-CHEM, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 1997, end_year: 2005} + - {dataset: ESACCI-OZONE, project: OBS, tier: 2, type: sat, version: L3, start_year: 1997, end_year: 2005} +# - {dataset: NIWA, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 1997, end_year: 2005} + +preprocessors: + + preprocessor: {} + +diagnostics: + + derive_diagnostic: + description: Test variable derivation + variables: + toz: + preprocessor: preprocessor + field: T2Ms + derive: true + force_derivation: false + additional_datasets: [] + scripts: null diff --git a/esmvaltool/namelists/namelist_preprocessor_test.yml b/esmvaltool/recipes/examples/recipe_preprocessor_test.yml similarity index 60% rename from esmvaltool/namelists/namelist_preprocessor_test.yml rename to esmvaltool/recipes/examples/recipe_preprocessor_test.yml index ae79906d23..2eb85be39a 100644 --- a/esmvaltool/namelists/namelist_preprocessor_test.yml +++ b/esmvaltool/recipes/examples/recipe_preprocessor_test.yml @@ -1,10 +1,10 @@ --- -models: - - {model: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} - - {model: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} +datasets: + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} preprocessors: @@ -12,8 +12,10 @@ preprocessors: extract_levels: levels: ERA-Interim # This also works, but allows specifying the pressure coordinate name - # levels: {model: ERA-Interim, coordinate: air_pressure} + # levels: {dataset: ERA-Interim, coordinate: air_pressure} scheme: linear + mask_landsea: + mask_out: land #if land, will mask land out; if sea, will mask seas and oceans out regrid: target_grid: ERA-Interim scheme: linear @@ -22,15 +24,16 @@ preprocessors: multi_model_statistics: span: overlap statistics: [mean, median] - exclude: [NCEP] + exclude: [NCEP] preprocessor_2: - extract_levels: - levels: {cmor_table: CMIP6, coordinate: plev10} - scheme: nearest + custom_order: true regrid: target_grid: 1x1 scheme: nearest + extract_levels: + levels: {cmor_table: CMIP6, coordinate: plev10} + scheme: nearest mask_fillvalues: false multi_model_statistics: span: full @@ -58,8 +61,9 @@ diagnostics: ta: preprocessor: preprocessor_1 field: T3M - additional_models: - - {model: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + fx_files: [orog, sftlf] + additional_datasets: + - {dataset: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} scripts: null diagnostic_2: @@ -68,6 +72,7 @@ diagnostics: ta: preprocessor: preprocessor_2 field: T3M + scripts: null diagnostic_3_and_4: description: Preprocessor test diagnostic. diff --git a/esmvaltool/recipes/examples/recipe_python.yml b/esmvaltool/recipes/examples/recipe_python.yml new file mode 100644 index 0000000000..3bce502271 --- /dev/null +++ b/esmvaltool/recipes/examples/recipe_python.yml @@ -0,0 +1,40 @@ +--- + +datasets: + - {dataset: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + +preprocessors: + + preprocessor1: + extract_levels: + levels: 85000 + scheme: nearest + regrid: + target_grid: reference_dataset + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean, median] + +diagnostics: + + diagnostic1: + description: Air temperature and precipitation Python tutorial diagnostic. + variables: + ta: + preprocessor: preprocessor1 + field: T3M + reference_dataset: ERA-Interim + additional_datasets: + - {dataset: NCEP, project: OBS, tier: 2, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + pr: + field: T2Ms + reference_dataset: ERA-Interim + scripts: + script1: + script: examples/diagnostic.py + quickplot: + plot_type: pcolormesh diff --git a/esmvaltool/recipes/examples/recipe_python_object_oriented.yml b/esmvaltool/recipes/examples/recipe_python_object_oriented.yml new file mode 100644 index 0000000000..a5a8d5f169 --- /dev/null +++ b/esmvaltool/recipes/examples/recipe_python_object_oriented.yml @@ -0,0 +1,66 @@ +--- + +datasets: + - {dataset: GFDL-ESM2G, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, tier: 3, type: reanaly, version: 1, start_year: 2000, end_year: 2002} + +preprocessors: + + preprocessor1: + extract_levels: + levels: 85000 + scheme: nearest + regrid: + target_grid: reference_dataset + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean, median] + + preprocessor2: + regrid: + target_grid: reference_dataset + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean, median] + +diagnostics: + + diagnostic1: + description: Air temperature and precipitation Python tutorial diagnostic. + variables: + ta: + preprocessor: preprocessor1 + field: T3M + reference_dataset: ERA-Interim + pr: + preprocessor: preprocessor2 + field: T2Ms + reference_dataset: ERA-Interim + scripts: + script1a: + script: examples/diagnostic_object_oriented.py + quickplot: + plot_type: pcolormesh + script1b: + script: examples/diagnostic_object_oriented.py + ancestors: ['script1a'] + quickplot: + plot_type: contour + + diagnostic2: + description: Another Python tutorial diagnostic. + variables: + tas: + preprocessor: preprocessor2 + field: T2Ms + additional_datasets: + - {dataset: bcc-csm1-1, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + reference_dataset: MPI-ESM-LR + scripts: + script2: + script: examples/diagnostic_object_oriented.py + quickplot: + plot_type: contourf diff --git a/esmvaltool/recipes/recipe_OceanBGC.yml b/esmvaltool/recipes/recipe_OceanBGC.yml new file mode 100644 index 0000000000..ed359e243e --- /dev/null +++ b/esmvaltool/recipes/recipe_OceanBGC.yml @@ -0,0 +1,113 @@ +############################################################################### +# recipe_OceanBGC.yml +--- +documentation: + description: | + Recipe to demonstrate a couple simple plots based on the annual ocean + biogeochemistry. Please use this file as a template for adding additional + fields into the ocean. This work based on the BGC-val toolkit GMD-2018-103. + Written by Lee de Mora, Plymouth Marine Laboratory + + authors: + - ledm + + references: + - BGC-val:gmd-2018-103 + + projects: + - ukesm + + +datasets: +# working datasets + - {dataset: CanESM2, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: GISS-E2-H, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: HadGEM2-AO, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: HadCM3, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: CanCM4, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: CSIRO-Mk3-6-0, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} + +##### +# datasets with Errors (right now): + +# Problem with latitude > 90. +# - {dataset: HadGEM2-CC, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: HadGEM2-ES, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} + + +### +# Problem with times +# - {dataset: MIROC-ESM, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: MIROC-ESM-CHEM, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} + +# Unstructured grids +# - {dataset: MPI-ESM-LR, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2003} +# - {dataset: MPI-ESM-MR, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: ACCESS1-0, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} +# - {dataset: ACCESS1-3, project: CMIP5, mip: Oyr, exp: historical, ensemble: r1i1p1, start_year: 1990, end_year: 2004} + + + +preprocessors: + # -------------------------------------------------- + # Depth-profile preprocessors + # -------------------------------------------------- + prep_depth_integration_1: # For a 2D map global profile + depth_integration: + coordz: depth +# new_units: kg m-2 # need to specify in advance, as cf_units has strange behaviour. + time_average: + + + + # -------------------------------------------------- + # map preprocessors + # -------------------------------------------------- + prep_surface_map_1: # For a 2D global surface map + extract_levels: + levels: [0., ] + scheme: linear_horizontal_extrapolate_vertical + time_average: + +diagnostics: + # -------------------------------------------------- + # Depth integrated diagnostics + # -------------------------------------------------- + diag_depthInt_1: + description: Global Ocean Depth Integrated mean timeseries + variables: + chl: + preprocessor: prep_depth_integration_1 + field: TO3Y + no3: + preprocessor: prep_depth_integration_1 + field: TO3Y + scripts: + Global_Ocean_DepthIntegration_map: &Global_Ocean_DepthIntegration_map + script: ocean/diagnostic_maps.py + + # -------------------------------------------------- + # Map diagnostics + # -------------------------------------------------- + diag_map_1: + description: Global Ocean Surface mean timeseries + variables: + chl: + preprocessor: prep_surface_map_1 + field: TO3Y + no3: + preprocessor: prep_surface_map_1 + field: TO3Y + + scripts: + Global_Ocean_surface_map: &Global_Ocean_surface_map + script: ocean/diagnostic_maps.py + + + + + + + + + diff --git a/esmvaltool/recipes/recipe_OceanPhysics.yml b/esmvaltool/recipes/recipe_OceanPhysics.yml new file mode 100644 index 0000000000..21dad10f95 --- /dev/null +++ b/esmvaltool/recipes/recipe_OceanPhysics.yml @@ -0,0 +1,460 @@ +############################################################################### +# recipe_OceanPhysics.yml +--- +documentation: + description: | + Recipe to demonstrate several simple plots based on the monthly ocean + temperature. Please use this file as a template for adding additional + fields into the ocean. This work based on the BGC-val toolkit GMD-2018-103. + Written by Lee de Mora, Plymouth Marine Laboratory + + authors: + - ledm + + references: + - BGC-val:gmd-2018-103 + + projects: + - ukesm + + +datasets: + # working datasets + - {dataset: CanESM2, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: GISS-E2-H, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadGEM2-AO, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadCM3, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: CanCM4, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + # Problem with latitude > 90. + - {dataset: HadGEM2-CC, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + - {dataset: HadGEM2-ES, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + ##### + # Data with Errors right now -June 2018 + ### + # Problem with times +# - {dataset: MIROC-ESM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: MIROC-ESM-CHEM, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + + # Unstructured grids +# - {dataset: MPI-ESM-LR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} +# - {dataset: MPI-ESM-MR, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: ACCESS1-0, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} +# - {dataset: ACCESS1-3, project: CMIP5, mip: Omon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2004} + +# TODO: All multi-model statistics are turned off until the preprocessor order is fixed. + +preprocessors: + # -------------------------------------------------- + # Time series preprocessors + # -------------------------------------------------- + prep_timeseries_1: # For 2D fields + custom_order: true + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_2: # For specific levels of 3D fields + custom_order: true + extract_levels: + levels: [0., 10., 100., 1000.] + scheme: linear_horizontal_extrapolate_vertical + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_3: # For regional fields + custom_order: true + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_4: # For regional fields at depth + custom_order: true + extract_levels: + levels: [0., 10., 100., 1000.] + scheme: linear_horizontal_extrapolate_vertical + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + average_region: + coord1: longitude + coord2: latitude + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_5: # For Global Volume Averaged + custom_order: true + average_volume: + coord1: longitude + coord2: latitude + coordz: depth + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_6: # For regional volume averaged + custom_order: true + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + average_volume: + coord1: longitude + coord2: latitude + coordz: depth + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_timeseries_7: # For regional volume averaged (at the surface) + custom_order: true + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + extract_volume: + z_min: 0. + z_max: 100. + average_volume: + coord1: longitude + coord2: latitude + coordz: depth + multi_model_statistics: + span: overlap + statistics: [mean ] + + + # -------------------------------------------------- + # Map preprocessors - 2D fields + # -------------------------------------------------- + prep_map_1: # For Global 2D fields + time_average: + + prep_map_2: # For Global 2D fields with regridding + custom_order: true + regrid: + target_grid: 1x1 + scheme: linear + time_average: + multi_model_statistics: + span: overlap + statistics: [mean ] + + + prep_map_3: # For specific levels of 3D fields with regrid + custom_order: true + extract_levels: + levels: [0., 10., 100., 1000.,] + scheme: linear_horizontal_extrapolate_vertical + time_average: + regrid: + target_grid: 1x1 + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_map_4: # For a specific region with regrid + custom_order: true + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + time_average: + regrid: + target_grid: 1x1 + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean ] + + prep_map_5: # For a specific region at depth levels, + custom_order: true + extract_levels: + levels: [0., 10., 100., 1000.,] + scheme: linear_horizontal_extrapolate_vertical + time_average: + extract_region: + start_longitude: -80. + end_longitude: 30. + start_latitude: -80. + end_latitude: 80. + regrid: + target_grid: 1x1 + scheme: linear + multi_model_statistics: + span: overlap + statistics: [mean ] + + # -------------------------------------------------- + # Transects preprocessors + # -------------------------------------------------- + prep_transect_1: # For extracting along a trajectory + time_average: + extract_trajectory: + latitudes: [-5., 5.,] + longitudes: [332.,332.] + number_points: 4 # VERY SLOW with high numbers! + + prep_transect_2: # For extracting a transect + time_average: + extract_transect: # Pacific Equator + latitude: 0. + longitude: [120., 300.] + + prep_transect_3: # For extracting a transect + time_average: + extract_transect: # Atlantic Meridional Transect + latitude: [-50.,50.] + longitude: 332. + + # -------------------------------------------------- + # Depth-profile preprocessors + # -------------------------------------------------- + prep_profile_1: # For a global profile + average_region: + coord1: longitude + coord2: latitude + + prep_profile_2: # For a regional profile + extract_region: + start_longitude: 0. + end_longitude: 20. + start_latitude: -30. + end_latitude: 30. + extract_volume: + z_min: 0. + z_max: 100. + average_region: + coord1: longitude + coord2: latitude + + # -------------------------------------------------- + # Depth-profile preprocessors + # -------------------------------------------------- + prep_depth_integration_1: # For a 2D map global profile + depth_integration: + coordz: depth + time_average: + + +diagnostics: + # -------------------------------------------------- + # Depth integrated diagnostics + # -------------------------------------------------- + diag_depthInt_1: + description: Global Ocean Surface mean timeseries + variables: + thetao: # Temperature ocean + preprocessor: prep_depth_integration_1 + field: TO3M + scripts: + Global_Ocean_DepthIntegration_map: + script: ocean/diagnostic_maps.py + + # -------------------------------------------------- + # Time series diagnostics + # -------------------------------------------------- + diag_timeseries_1: + description: Global Ocean Surface mean timeseries + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_1 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_timeseries: &Global_Ocean_Surface_mean_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_2: + description: Global Ocean Depth Layers mean timeseries + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_timeseries_2 + field: TO3M + scripts: + Global_Ocean_DepthLayers_mean_timeseries: &Global_Ocean_DepthLayers_mean_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_3: + description: Regional scale surface diagnostics + variables: + tos: # Temperature ocean surface + preprocessor: prep_timeseries_3 + field: TO2Ms + scripts: + Regional_Ocean_Surface_mean_timeseries: &Regional_Ocean_Surface_mean_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_4: + description: Regional scale diagnostics + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_timeseries_4 + field: TO3M + scripts: + Regional_Ocean_DepthLayers_mean_timeseries: &Regional_Ocean_DepthLayers_mean_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_5: + description: Global Volume average diagnostics + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_timeseries_5 + field: TO3M + scripts: + Global_VolumeAverage_Ocean_Physics_timeseries: &Global_VolumeAverage_Ocean_Physics_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_6: + description: Regional Volume average diagnostics + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_timeseries_6 + field: TO3M + scripts: + Regional_VolumeAverage_Ocean_Physics_timeseries: &Regional_VolumeAverage_Ocean_Physics_timeseries + script: ocean/diagnostic_timeseries.py + + diag_timeseries_7: + description: Regional Volume to 100m depth average diagnostics + variables: + thetao: # Temperature ocean 3D averaged over top 100m + preprocessor: prep_timeseries_7 + field: TO3M + scripts: + Regional_Volume100mAverage_Ocean_Physics_timeseries: &Regional_Volume100mAverage_Ocean_Physics_timeseries + script: ocean/diagnostic_timeseries.py + + # -------------------------------------------------- + # Map diagnostics + # -------------------------------------------------- + diag_map_1: + description: Global Ocean Surface map + variables: + tos: # Temperature ocean surface + preprocessor: prep_map_1 + field: TO2Ms + scripts: + Global_Ocean_Surface_mean_map: &Global_Ocean_Surface_mean_map + script: ocean/diagnostic_maps.py + + diag_map_2: + description: Global Ocean Surface regridded map + variables: + tos: # Temperature ocean surface + preprocessor: prep_map_2 + field: TO2Ms + scripts: + Global_Ocean_Surface_regrid_map: &Global_Ocean_Surface_regrid_map + script: ocean/diagnostic_maps.py + + diag_map_3: + description: Global Ocean Depth Layers regridded map + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_map_3 + field: TO3M + scripts: + Global_Ocean_DepthLayers_regrid_map: &Global_Ocean_DepthLayers_regrid_map + script: ocean/diagnostic_maps.py + + diag_map_4: + description: Regional scale surface regridded map + variables: + tos: # Temperature ocean surface + preprocessor: prep_map_4 + field: TO2Ms + scripts: + Regional_Ocean_Surface_regrid_map: &Regional_Ocean_Surface_regrid_map + script: ocean/diagnostic_maps.py + + diag_map_5: + description: Regional scale depth layers regridded map + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_map_5 + field: TO3M + scripts: + Regional_Ocean_DepthLayers_mean_map: &Regional_Ocean_DepthLayers_mean_map + script: ocean/diagnostic_maps.py + + # -------------------------------------------------- + # Transects diagnostics + # -------------------------------------------------- + diag_transect_1: + description: Extracting along a trajectory + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_transect_1 + field: TO3M + scripts: + Regional_Ocean_DepthLayers_regrid_transect: &Regional_Ocean_DepthLayers_regrid_transect + script: ocean/diagnostic_transects.py + + + diag_transect_2: + description: Extracting along a line with regridding and multimodle mean + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_transect_2 + field: TO3M + scripts: + Regional_Ocean_DepthLayers_slice_regrid_mmmean_transect: &Regional_Ocean_DepthLayers_slice_regrid_mmmean_transect + script: ocean/diagnostic_transects.py + + diag_transect_3: + description: Extracting along a line with regridding and multimodel mean + variables: + thetao: # Temperature ocean 3D + preprocessor: prep_transect_3 + field: TO3M + scripts: + Regional_Ocean_DepthLayers_AMTslice_regrid_mmmean_transect: &Regional_Ocean_DepthLayers_AMTslice_regrid_mmmean_transect + script: ocean/diagnostic_transects.py + + + # -------------------------------------------------- + # Depth-profile diagnostics + # -------------------------------------------------- + diag_profile_1: + description: Global Ocean mean profile + variables: + thetao: # Temperature ocean surface + preprocessor: prep_profile_1 + field: TO3M + scripts: + Global_Ocean_mean_profile: &Global_Ocean_mean_profile + script: ocean/diagnostic_profiles.py + + diag_profile_2: + description: Regional Ocean mean profile + variables: + thetao: # Temperature ocean surface + preprocessor: prep_profile_2 + field: TO3M + scripts: + Regional_Ocean_mean_profile: &Regional_Ocean_mean_profile + script: ocean/diagnostic_profiles.py diff --git a/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_all.yml b/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_all.yml new file mode 100644 index 0000000000..80d7ecefce --- /dev/null +++ b/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_all.yml @@ -0,0 +1,155 @@ +#### summary +#recipe_autoassess_radiation_rms_Amon_all.yml +# +#Description +#Diagnostics of spatial RMS errors of radiation and clouds +# +#Author +#Yoko Tsushima (Met Office, United Kingdom - yoko.tsushima@metoffice.gov.uk) +# +#Contributor +#Simon Read (University of Reading, United Kingdom) +# +#Author version2 +#Valeriu Predoi: VP (University of Reading, UK) +# +#Project +#CMUG +# +#Port to ESMValTool v2: July 2018 +# Final version of recipe: July 2018 +# +#References +#Technical report or a paper will be written in the future. +# +#This recipe is part of the ESMValTool +########################################################################################################### +--- + +datasets: + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2005} + - {dataset: NorESM1-M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2005} + +preprocessors: + pp_rad: + regrid: + target_grid: 1x1 + scheme: linear + pp_rad_derive_var: + # use this not to overwrite variables that are used both + # for derivation and as standalone diag vars + regrid: + target_grid: 1x1 + scheme: linear + +diagnostics: + radiation_Amon_all_CERES-EBAF: + description: "CMIP5 vs CERES-EBAF" + variables: + rtnt: # TOA TOT net + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsnt: # TOA SW net + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + swcre: # TOA SW Cloud Radiative Effect + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + lwcre: # TOA LW Cloud Radiative Effect + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsns: # obs: ceres; name: Surf SW net all sky + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rlns: # Surf LW net all sky + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsut: # TOA SW up all sky + preprocessor: pp_rad + field: T2Ms + rlut: # TOA LW up all sky + preprocessor: pp_rad + field: T2Ms + rsutcs: # TOA SW up clear sky + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2012, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_all: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. CERES-EBAF)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['CERES-EBAF'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_all_JRA-55: + description: "CMIP5 vs JRA-55" + variables: + rlutcs: # TOA LW up clear sky + preprocessor: pp_rad + field: T2Ms + rldscs: # Surf LW down clear sky + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: JRA-55, project: ana4mips, type: reanalysis, start_year: 2001, end_year: 2005, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_all: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. JRA-55)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['JRA-55'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_all_SSMI-MERIS: + description: "CMIP5 vs SSMI-MERIS" + variables: + prw: # Column Water vapour + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: SSMI-MERIS, project: obs4mips, level: L3, version: v1-00, start_year: 2003, end_year: 2008, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_all: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. SSMI-MERIS)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['SSMI-MERIS'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_all_GPCP-SG: + description: "CMIP5 vs GPCP-SG" + variables: + pr: # Precipitation + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start_year: 2001, end_year: 2009, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_all: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. GPCP-SG)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['GPCP-SG'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc diff --git a/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_obs.yml b/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_obs.yml new file mode 100644 index 0000000000..79f12fd1bf --- /dev/null +++ b/esmvaltool/recipes/recipe_autoassess_radiation_rms_Amon_obs.yml @@ -0,0 +1,160 @@ +#### summary +#recipe_autoassess_radiation_rms_Amon_all.yml +# +#Description +#Diagnostics of spatial RMS errors of radiation and clouds +# +#Author +#Yoko Tsushima (Met Office, United Kingdom - yoko.tsushima@metoffice.gov.uk) +# +#Contributor +#Simon Read (University of Reading, United Kingdom) +# +#Author version2 +#Valeriu Predoi: VP (University of Reading, UK) +# +#Project +#CMUG +# +#Port to ESMValTool v2: July 2018 +# Final version of recipe: July 2018 +# +#References +#Technical report or a paper will be written in the future. +# +#This recipe is part of the ESMValTool +########################################################################################################### +--- + +datasets: + # ESMValTool v1 has no specific models here; it says use whatever you want but no more than what Amon_all uses + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2005} + - {dataset: NorESM1-M, project: CMIP5, mip: Amon, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2005} + +preprocessors: + pp_rad: + regrid: + target_grid: 1x1 + scheme: linear + pp_rad_derive_var: + # use this not to overwrite variables that are used both + # for derivation and as standalone diag vars + regrid: + target_grid: 1x1 + scheme: linear + +diagnostics: + radiation_Amon_obs_CERES-EBAF: + description: "CMIP5 vs CERES-EBAF" + variables: + rtnt: # TOA TOT net + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsnt: # TOA SW net + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + swcre: # TOA SW Cloud Radiative Effect + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + lwcre: # TOA LW Cloud Radiative Effect + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsns: # Surf SW net all sky + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rlns: # Surf LW net all sky + preprocessor: pp_rad_derive_var + field: T2Ms + derive: true + force_derivation: false + rsut: # TOA SW up all sky + preprocessor: pp_rad + field: T2Ms + rlut: # TOA LW up all sky + preprocessor: pp_rad + field: T2Ms + rsutcs: # TOA SW up clear sky + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2012, tier: 1} + - {dataset: CERES-SYN1deg, project: OBS, type: comp, version: Ed3A, start_year: 2001, end_year: 2015, tier: 2} + scripts: + autoassess_Radiation_rms_Amon_obs: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. CERES-EBAF)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['CERES-EBAF', 'CERES-SYN1deg'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_obs_JRA-55: + description: "CMIP5 vs JRA-55" + variables: + rlutcs: # TOA LW up clear sky + preprocessor: pp_rad + field: T2Ms + rldscs: # Surf LW down clear sky + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: JRA-55, project: ana4mips, type: reanalysis, start_year: 2001, end_year: 2005, tier: 1} + - {dataset: CERES-SYN1deg, project: OBS, type: comp, version: Ed3A, start_year: 2001, end_year: 2015, tier: 2} + scripts: + autoassess_Radiation_rms_Amon_obs: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. JRA-55)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['JRA-55', 'CERES-SYN1deg'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_obs_SSMI-MERIS: + description: "CMIP5 vs SSMI-MERIS" + variables: + prw: # Column Water vapour + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: SSMI-MERIS, project: obs4mips, level: L3, version: v1-00, start_year: 2003, end_year: 2008, tier: 1} + - {dataset: SSMI, project: obs4mips, level: L3, version: RSSv07r00, start_year: 1988, end_year: 2006, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_obs: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. SSMI-MERIS)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['SSMI-MERIS', 'SSMI'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + + radiation_Amon_obs_GPCP-SG: + description: "CMIP5 vs GPCP-SG" + variables: + pr: # Precipitation + preprocessor: pp_rad + field: T2Ms + additional_datasets: + - {dataset: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start_year: 2001, end_year: 2009, tier: 1} + - {dataset: TRMM-L3, project: obs4mips, level: v7, version: 7A, start_year: 1998, end_year: 2013, tier: 1} + scripts: + autoassess_Radiation_rms_Amon_obs: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. GPCP-SG)" + control_model: MPI-ESM-LR + exper_model: NorESM1-M + observational_datasets: ['GPCP-SG', 'TRMM-L3'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc diff --git a/esmvaltool/recipes/recipe_autoassess_radiation_rms_cfMon_all.yml b/esmvaltool/recipes/recipe_autoassess_radiation_rms_cfMon_all.yml new file mode 100644 index 0000000000..d4b63a460a --- /dev/null +++ b/esmvaltool/recipes/recipe_autoassess_radiation_rms_cfMon_all.yml @@ -0,0 +1,84 @@ +#### summary +#recipe_autoassess_radiation_rms_Amon_all.yml +# +#Description +#Diagnostics of spatial RMS errors of radiation and clouds +# +#Author +#Yoko Tsushima (Met Office, United Kingdom - yoko.tsushima@metoffice.gov.uk) +# +#Contributor +#Simon Read (University of Reading, United Kingdom) +# +#Author version2 +#Valeriu Predoi: VP (University of Reading, UK) +# +#Project +#CMUG +# +#Port to ESMValTool v2: July 2018 +# Final version of recipe: July 2018 +# +#References +#Technical report or a paper will be written in the future. +# +#This recipe is part of the ESMValTool +########################################################################################################### +--- + +datasets: + - {dataset: MRI-CGCM3, project: CMIP5, mip: cfMon, exp: amip, ensemble: r1i1p1, start_year: 1985, end_year: 1988} + - {dataset: HadGEM2-A, project: CMIP5, mip: cfMon, exp: amip, ensemble: r1i1p1, start_year: 1985, end_year: 1988} + +preprocessors: + pp_rad_derive_var: + regrid: + target_grid: 1x1 + scheme: linear + +diagnostics: + radiation_cfMon_all_ISCCP: + description: "CMIP5 vs ISCCP Clouds" + variables: + cllmtisccp: # Low-intermediate Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + clltkisccp: # Low-thick Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + clmmtisccp: # Middle-intermediate Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + clmtkisccp: # Middle-thick Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + clhmtisccp: # High-intermediate Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + clhtkisccp: # High-thick Cloud + preprocessor: pp_rad_derive_var + field: T4M + derive: true + force_derivation: false + additional_datasets: + - {dataset: ISCCP, project: obs4mips, level: L3, version: V1.0, start_year: 1985, end_year: 1988, tier: 1} + scripts: + autoassess_Radiation_rms_cfMon_all: + script: autoassess/autoassess_radiation_rms.py + title: "Autoassess Radiation RMS Amon All (vs. CERES-EBAF)" + control_model: MRI-CGCM3 + exper_model: HadGEM2-A + observational_datasets: ['ISCCP'] # list of at least one element; if no OBS wanted comment out + analysis_type: lat_lon # use any of: lat_lon, zonal_mean, vertical_mean + landsea_mask: landsea.nc + diff --git a/esmvaltool/namelists/namelist_autoassess_stratosphere.yml b/esmvaltool/recipes/recipe_autoassess_stratosphere.yml similarity index 77% rename from esmvaltool/namelists/namelist_autoassess_stratosphere.yml rename to esmvaltool/recipes/recipe_autoassess_stratosphere.yml index f36529db44..925775d3cf 100644 --- a/esmvaltool/namelists/namelist_autoassess_stratosphere.yml +++ b/esmvaltool/recipes/recipe_autoassess_stratosphere.yml @@ -1,16 +1,16 @@ #### summary -#### namelist that runs the Autoassess Stratorsphere assessment area diagnostic +#### recipe that runs the Autoassess Stratorsphere assessment area diagnostic #### Version: 1 June 2018 ################# #### Description: ################# #The original stratospehre diagnostic from autoassess accepts two input UM suites; this has now been -#changed for ESMValTool to two models; the namelist can accomodate as many pairs of models to be compared as the +#changed for ESMValTool to two datasets; the recipe can accomodate as many pairs of datasets to be compared as the #user needs; this is handled in the diagnostics/aa_strato/scripts: while the script is the same #(autoassess_stratosphere.py), the (control_model, exp_model) pair may vary accoding to the user's #needs. Different (start, end) dates can also be specified (in autoassess format) per run, as long as the -#time data is within the (start_year, end_year) specified in models: section. Preprocessing is basic and just -#extracts levels and regrids onto the reference ERA-Interim model; this is done once. +#time data is within the (start_year, end_year) specified in datasets: section. Preprocessing is basic and just +#extracts levels and regrids onto the reference ERA-Interim dataset; this is done once. ################# #### CAVEATS ################# @@ -19,10 +19,10 @@ ########################################################################################################### --- -models: - - {model: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} - - {model: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} - - {model: inmcm4, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} +datasets: + - {dataset: MPI-ESM-LR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, mip: Amon, exp: amip, ensemble: r1i1p1, start_year: 1992, end_year: 2002} preprocessors: pp_aa_area: @@ -49,8 +49,8 @@ diagnostics: preprocessor: pp_aa_area mip: Amon field: T3M - additional_models: - - {model: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + additional_datasets: + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} scripts: autoassess_strato_test_1: &autoassess_strato_test_1_settings script: autoassess/autoassess_stratosphere.py diff --git a/esmvaltool/recipes/recipe_flato13ipcc.yml b/esmvaltool/recipes/recipe_flato13ipcc.yml new file mode 100644 index 0000000000..008d77384e --- /dev/null +++ b/esmvaltool/recipes/recipe_flato13ipcc.yml @@ -0,0 +1,148 @@ +# recipe_flato13ipcc.yml +--- +documentation: + + description: | + Reproducing selected figures from IPCC AR5, chap. 9 (Flato et al., 2013) + 9.42a + + authors: + - schl_ma + + references: + - flato13ipcc + + projects: + - esmval + - crescendo + + +preprocessors: + + spatial_mean: + average_region: + coord1: latitude + coord2: longitude + + +diagnostics: + + ecs: + description: Calculate ECS. + variables: + tas: &spatial_mean_cmip5_r1i1p1_amon_t2ms + preprocessor: spatial_mean + project: CMIP5 + ensemble: r1i1p1 + mip: Amon + field: T2Ms + rtmt: + <<: *spatial_mean_cmip5_r1i1p1_amon_t2ms + 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} + - {dataset: bcc-csm1-1-m, exp: piControl, start_year: 240, end_year: 389} + - {dataset: bcc-csm1-1-m, exp: abrupt4xCO2, start_year: 240, end_year: 389} + - {dataset: CanESM2, exp: piControl, start_year: 2015, end_year: 2164} + - {dataset: CanESM2, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + - {dataset: CCSM4, exp: piControl, start_year: 800, end_year: 949} + - {dataset: CCSM4, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + - {dataset: CNRM-CM5, exp: piControl, start_year: 1850, end_year: 1999} + - {dataset: CNRM-CM5, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + - {dataset: CSIRO-Mk3-6-0, exp: piControl, start_year: 1, end_year: 150} + - {dataset: CSIRO-Mk3-6-0, exp: abrupt4xCO2, start_year: 1, end_year: 150} + - {dataset: GFDL-CM3, exp: piControl, start_year: 1, end_year: 150} + - {dataset: GFDL-CM3, exp: abrupt4xCO2, start_year: 1, end_year: 150} + - {dataset: GISS-E2-H, exp: piControl, start_year: 1200, end_year: 1349} + - {dataset: GISS-E2-H, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + - {dataset: GISS-E2-R, exp: piControl, start_year: 3331, end_year: 3480} + - {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} + - {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} + - {dataset: MIROC5, exp: abrupt4xCO2, start_year: 2100, end_year: 2249} + - {dataset: MPI-ESM-LR, exp: piControl, start_year: 2015, end_year: 2164} + - {dataset: MPI-ESM-LR, exp: abrupt4xCO2, start_year: 1850, end_year: 1999} + # Day is out of range for month (wait for iris > 2.0) + # - {dataset: ACCESS1-0, exp: piControl, start_year: 300, end_year: 449} + # - {dataset: ACCESS1-0, exp: abrupt4xCO2, start_year: 300, end_year: 449} + # Because of issues in the date format, these models raise an + # AttributeError: 'NoneType' object has no attribute 'units' + # Can be solved by removing lines 104-106 of ESMValTool/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py, + # but leads to failing tests + # - {dataset: MIROC-ESM, exp: piControl, start_year: 1800, end_year: 1949} + # - {dataset: MIROC-ESM, exp: abrupt4xCO2, start_year: 1, end_year: 150} + scripts: + ecs: + script: climate_metrics/ecs.py + plot_ecs_regression: 'True' + output_name: 'ecs' + + fig09-42a: + description: Plot ECS vs. GMSAT. + variables: + tas: + <<: *spatial_mean_cmip5_r1i1p1_amon_t2ms + additional_datasets: + - {dataset: bcc-csm1-1, exp: piControl, start_year: 160, end_year: 309} + - {dataset: bcc-csm1-1, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: bcc-csm1-1-m, exp: piControl, start_year: 240, end_year: 389} + - {dataset: bcc-csm1-1-m, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: CanESM2, exp: piControl, start_year: 2015, end_year: 2164} + - {dataset: CanESM2, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: CCSM4, exp: piControl, start_year: 800, end_year: 949} + - {dataset: CCSM4, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: CNRM-CM5, exp: piControl, start_year: 1850, end_year: 1999} + - {dataset: CNRM-CM5, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: CSIRO-Mk3-6-0, exp: piControl, start_year: 1, end_year: 150} + - {dataset: CSIRO-Mk3-6-0, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: GFDL-CM3, exp: piControl, start_year: 1, end_year: 150} + - {dataset: GFDL-CM3, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: GISS-E2-H, exp: piControl, start_year: 1200, end_year: 1349} + - {dataset: GISS-E2-H, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: GISS-E2-R, exp: piControl, start_year: 3331, end_year: 3480} + - {dataset: GISS-E2-R, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: inmcm4, exp: piControl, start_year: 2090, end_year: 2239} + - {dataset: inmcm4, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: IPSL-CM5A-LR, exp: piControl, start_year: 1850, end_year: 1999} + - {dataset: IPSL-CM5A-LR, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: IPSL-CM5B-LR, exp: piControl, start_year: 1850, end_year: 1999} + - {dataset: IPSL-CM5B-LR, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: MIROC5, exp: piControl, start_year: 2100, end_year: 2249} + - {dataset: MIROC5, exp: historical, start_year: 1961, end_year: 1990} + - {dataset: MPI-ESM-LR, exp: piControl, start_year: 2015, end_year: 2164} + - {dataset: MPI-ESM-LR, exp: historical, start_year: 1961, end_year: 1990} + # Day is out of range for month (wait for iris > 2.0) + # - {dataset: ACCESS1-0, exp: piControl, start_year: 300, end_year: 449} + # - {dataset: ACCESS1-0, exp: historical, start_year: 1961, end_year: 1990} + # Because of issues in the date format, these models raise an + # AttributeError: 'NoneType' object has no attribute 'units' + # Can be solved by removing lines 104-106 of ESMValTool/esmvaltool/cmor/_fixes/CMIP5/MIROC_ESM.py, + # but leads to failing tests + # - {dataset: MIROC-ESM, exp: piControl, start_year: 1800, end_year: 1949} + # - {dataset: MIROC-ESM, exp: historical, start_year: 1961, end_year: 1990} + scripts: + fig09-42a: + script: ipcc_ar5/ch09_fig09_42a.py + ancestors: ['tas', 'ecs/ecs'] + ecs_filename: 'ecs' + output_name: 'ch09_fig09-42a' + tas_units: celsius + save: + bbox_inches: tight + orientation: landscape + axes_functions: + set_title: GMSAT vs. ECS for CMIP5 models + set_xlabel: ECS / °C + set_ylabel: GMSAT / °C + set_xlim: [1.5, 5.0] + legend: + kwargs: + loc: center left + bbox_to_anchor: [1.05, 0.5] + borderaxespad: 0.0 + ncol: 2 diff --git a/esmvaltool/recipes/recipe_perfmetrics_CMIP5.yml b/esmvaltool/recipes/recipe_perfmetrics_CMIP5.yml new file mode 100644 index 0000000000..035364a45a --- /dev/null +++ b/esmvaltool/recipes/recipe_perfmetrics_CMIP5.yml @@ -0,0 +1,1483 @@ +# recipe_perfmetrics_CMIP5.xml +--- +documentation: + description: | + Recipe for plotting the performance metrics for the CMIP5 datasets, + including the "standard" ECVs as in Gleckler et al., plus some additional + variables (like ozone, sea-ice, aerosol...) + + authors: + - fran_fr + - righ_ma + - eyri_ve + + references: + - gleckler08jgr + + projects: + - esmval + - embrace + - crescendo + - c3s-magic + - cmug + +preprocessors: + pp850: + extract_levels: + levels: 85000 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + pp500: + extract_levels: + levels: 50000 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + pp400: + extract_levels: + levels: 40000 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + pp200: + extract_levels: + levels: 20000 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + pp30: + extract_levels: + levels: 3000 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + pp5: + extract_levels: + levels: 500 + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + ppNOLEV1: + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset] + + ppNOLEV2: + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + ppNOLEV1x1: + regrid: + target_grid: 1x1 + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + ppALL: + extract_levels: + levels: reference_dataset + scheme: linear + regrid: + target_grid: reference_dataset + scheme: linear + mask_fillvalues: + threshold_fraction: 0.95 + multi_model_statistics: + span: overlap + statistics: [mean, median] + exclude: [reference_dataset, alternative_dataset] + + +diagnostics: + + ### ta: AIR TEMPERATURE ############################################################################################################################## + + ta850: + description: Air temperature at 850 hPa global. + themes: + - phys + realms: + - atmos + variables: + ta: + preprocessor: pp850 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + cycle: &cycle_settings + script: perfmetrics/main.ncl + plot_type: cycle # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) + time_avg: monthlyclim # Time average ('opt' argument of time_operations.ncl) + region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') + plot_stddev: ref_model # Plot standard deviation ('all', 'none', 'ref_model' or given dataset name) + legend_outside: true # Plot legend in a separate file + styleset: CMIP5 # Plot style + grading: &grading_settings + <<: *cycle_settings + plot_type: cycle_latlon # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) + draw_plots: false # Do not draw plots + calc_grading: true # Calculate grading + metric: [RMSD, taylor] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median, none] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ta200: + description: Air temperature at 200 hPa global. + variables: + ta: + preprocessor: pp200 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + cycle: + <<: *cycle_settings + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ta30: + description: Air temperature at 30 hPa global. + variables: + ta: + preprocessor: pp30 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + cycle: + <<: *cycle_settings + + + ta5: + description: Air temperature at 5 hPa global. + variables: + ta: + preprocessor: pp5 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + cycle: + <<: *cycle_settings + + + taZONAL: + description: Air temperature zonal mean + variables: + ta: + preprocessor: ppALL + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + zonal: &zonal_settings + script: perfmetrics/main.ncl + plot_type: zonal # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) + time_avg: annualclim # Time average ('opt' argument of time_operations.ncl) + region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') + plot_diff: true # Draw difference plots + t_test: true # Calculate t-test in difference plots + conf_level: 0.95 # Confidence level for the t-test + stippling: true # Mask non-significant values with stippling + abs_levs: [200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300] # Contour levels for absolute plot + diff_levs: [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10] # Contour levels for difference plot + + + ### ua: EASTWARD WIND ################################################################################################################################ + + ua850: + description: Eastward wind at 850 hPa global. + variables: + ua: + preprocessor: pp850 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ua200: + description: Eastward wind at 200 hPa global. + variables: + ua: + preprocessor: pp200 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### va: NORTHWARD WIND ############################################################################################################################### + + va850: + description: Northward wind at 850 hPa global. + variables: + va: + preprocessor: pp850 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + va200: + description: Northward wind at 200 hPa global. + variables: + va: + preprocessor: pp200 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### zg: GEOPOTENTIAL HEIGHT ########################################################################################################################## + + zg500: + description: Geopotential height 500 hPa global. + variables: + zg: + preprocessor: pp500 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### hus: SPECIFIC HUMIDITY ########################################################################################################################### + + hus400: + description: Specific humidity at 400 hPa global. + variables: + hus: + preprocessor: pp400 + reference_dataset: AIRS + alternative_dataset: ERA-Interim + mip: Amon + field: T3M + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2003, end_year: 2004} + - {dataset: AIRS, project: obs4mips, level: L3, version: RetStd-v5, start_year: 2003, end_year: 2004, tier: 1} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2003, end_year: 2004, tier: 3} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### tas: NEAR-SURFACE TEMPERATURE #################################################################################################################### + + tas: + description: Near-surface air temperature + variables: + tas: + preprocessor: ppNOLEV2 + reference_dataset: ERA-Interim + alternative_dataset: NCEP + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ERA-Interim, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 3} + - {dataset: NCEP, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + latlon: &latlon_settings + script: perfmetrics/main.ncl + plot_type: latlon # Plot type ('cycle' [time], 'zonal' [plev, lat], 'latlon' [lat, lon], 'cycle_latlon' [time, lat, lon]) + time_avg: annualclim # Time average ('opt' argument of time_operations.ncl) + region: Global # Selected region ('Global', 'Tropics', 'NH extratropics', 'SH extratropics') + plot_diff: true # Draw difference plots + t_test: true # Calculate t-test in difference plots + conf_level: 0.95 # Confidence level for the t-test + abs_levs: [240, 243, 246, 249, 252, 255, 258, + 261, 264, 267, 270, 273, 276, 279, + 282, 285, 288, 291, 294, 297, 300] # Contour levels for absolute plot + diff_levs: [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] # Contour levels for difference plot + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### ts: SEA-SURFACE (SKIN) TEMPERATURE ############################################################################################################### + + ts: + description: Sea-surface (skin) temperature + variables: + ts: + preprocessor: ppNOLEV1x1 + reference_dataset: ESACCI-SST + alternative_dataset: HadISST + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ESACCI-SST, project: OBS, type: sat, version: L4-GHRSST-SSTdepth-OSTIA-GLOB, start_year: 2000, end_year: 2002, tier: 2} + - {dataset: HadISST, project: OBS, type: reanaly, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### pr: PRECIPITATIONS ############################################################################################################################### + + pr: + description: Precipitations + variables: + pr: + preprocessor: ppNOLEV1 + reference_dataset: GPCP-SG + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-FASTCHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-WACCM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5-2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-P, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-ESM1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GPCP-SG, project: obs4mips, level: L3, version: v2.2, start_year: 2000, end_year: 2002, tier: 1} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### clt: TOTAL CLOUD COVER ########################################################################################################################### + + clt: + description: Total cloud cover + variables: + clt: + preprocessor: ppNOLEV2 + reference_dataset: ESACCI-CLOUD + alternative_dataset: PATMOS + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2000, end_year: 2002} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-H-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2000, end_year: 2002} + - {dataset: GISS-E2-R-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2000, end_year: 2002} + - {dataset: ESACCI-CLOUD, project: OBS, type: sat, version: AVHRR-fv2.0, start_year: 2000, end_year: 2002, tier: 2} + - {dataset: PATMOS, project: OBS, type: sat, version: 1, start_year: 2000, end_year: 2002, tier: 2} + scripts: + latlon: + <<: *latlon_settings + show_global_avg: true + abs_levs: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Contour levels for absolute plot + diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### rlut: ALL-SKY LONGWAVE RADIATION ################################################################################################################# + + rlut: + description: All-sky longwave radiation + variables: + rlut: + preprocessor: ppNOLEV1 + reference_dataset: CERES-EBAF + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CanCM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: EC-EARTH, project: CMIP5, exp: historical, ensemble: r6i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### rsut: ALL-SKY SHORTWAVE RADIATION ################################################################################################################ + + rsut: + description: All-sky shortwave radiation + variables: + rsut: + preprocessor: ppNOLEV1 + reference_dataset: CERES-EBAF + mip: Amon + field: T2Ms + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM2p1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} + scripts: + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + + + ### lwcre: LONGWAVE CLOUD FORCING #################################################################################################################### + lwcre: + description: Longwave cloud radiative effect + variables: + lwcre: + preprocessor: ppNOLEV1 + reference_dataset: CERES-EBAF + mip: Amon + field: T2Ms + derive: true + force_derivation: false + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CMS, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-g2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} + scripts: + latlon: + <<: *latlon_settings + abs_levs: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90 , 100] # Contour levels for absolute plot + diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot + grading: + <<: *grading_settings + + + ### swcre: SHORTWAVE CLOUD FORCING ################################################################################################################### + + swcre: + description: Shortwave cloud radiative effect + variables: + swcre: + preprocessor: ppNOLEV1 + reference_dataset: CERES-EBAF + mip: Amon + field: T2Ms + derive: true + force_derivation: false + additional_datasets: + - {dataset: ACCESS1-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: ACCESS1-3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: bcc-csm1-1-m, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: BNU-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CanESM2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-BGC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CESM1-CAM5-1-FV2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CMCC-CM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CNRM-CM5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CSIRO-Mk3-6-0, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FGOALS-s2, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: FIO-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-CM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2G, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GFDL-ESM2M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-H, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: GISS-E2-R, project: CMIP5, exp: historical, ensemble: r1i1p2, start_year: 2001, end_year: 2003} + - {dataset: HadCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-AO, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-CC, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: HadGEM2-ES, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: inmcm4, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5A-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: IPSL-CM5B-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC4h, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC5, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MIROC-ESM-CHEM, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-LR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MPI-ESM-MR, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: MRI-CGCM3, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1, start_year: 2001, end_year: 2003} + - {dataset: CERES-EBAF, project: obs4mips, level: L3B, version: Ed2-7, start_year: 2001, end_year: 2003, tier: 1} + scripts: + latlon: + <<: *latlon_settings + abs_levs: [-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0] # Contour levels for absolute plot + diff_levs: [-30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30] # Contour levels for difference plot + grading: + <<: *grading_settings + metric: [RMSD] # Metric ('RMSD', 'BIAS', taylor') + normalization: [centered_median] # Normalization ('mean', 'median', 'centered_median', 'none') + +### od550aer: AEROSOL OPTICAL DEPTH AT 550 nm ######################################################################################################## + +### od870aer: AEROSOL OPTICAL DEPTH AT 870 nm ######################################################################################################## + +### od550lt1aer: FINE MODE AEROSOL OPTICAL DEPTH AT 550 nm ########################################################################################### + +### toz: TOTAL COLUMN OZONE ########################################################################################################################## + +### sic: SEA-ICE CONCENTRATION (NH) ################################################################################################################## + +### sic: SEA-ICE CONCENTRATION (SH) ################################################################################################################## + +### dos: SOIL MOISTURE ############################################################################################################################### + + +### COLLECT METRICS ################################################################################################################################## + + collect: + description: Wrapper to collect and plot previously calculated metrics + scripts: + RMSD: + script: perfmetrics/collect.ncl + ancestors: ['*/grading'] + metric: RMSD + label_bounds: [-0.5, 0.5] + label_scale: 0.1 + disp_values: false + cm_interval: [2, 241] + sort: true # Sort dataset in alphabetic order (excluding MMM) + taylor: + script: perfmetrics/collect.ncl + ancestors: ['*/grading'] + metric: taylor diff --git a/esmvaltool/utils/batch-jobs/job_DKRZ-MISTRAL.sh b/esmvaltool/utils/batch-jobs/job_DKRZ-MISTRAL.sh index bb69bf563c..5ed56af479 100644 --- a/esmvaltool/utils/batch-jobs/job_DKRZ-MISTRAL.sh +++ b/esmvaltool/utils/batch-jobs/job_DKRZ-MISTRAL.sh @@ -15,15 +15,15 @@ # Submit job with: sbatch job_DKRZ-MISTRAL.sh # Input arguments -NML=namelist_perfmetrics_CMIP5.yml +RECIPE=recipe_perfmetrics_CMIP5.yml CONFIG=config-user.yml # Set environment -CONDAPATH = # e.g. /home/soft/miniconda3/ -CONDAENV = # e.g. $CONDAPATH/envs/esmvaltool/bin -ESMVALPATH = # e.g. /home/ESMValTool/esmvaltool +CONDAPATH= # e.g. /home/soft/miniconda3/ +CONDAENV= # e.g. $CONDAPATH/envs/esmvaltool/bin +ESMVALPATH= # e.g. /home/ESMValTool/esmvaltool # Changes below this line should not be required export PATH=$PATH:$CONDAPATH/bin/ conda info --envs -$CONDAENV/esmvaltool -c $ESMVALPATH/$CONFIG -n $ESMVALPATH/namelists/$NML +$CONDAENV/esmvaltool $ESMVALPATH/recipes/$RECIPE -c $ESMVALPATH/$CONFIG diff --git a/esmvaltool/utils/batch-jobs/job_PA2-CLUSTER.sh b/esmvaltool/utils/batch-jobs/job_PA2-CLUSTER.sh index 5598531d60..42c2937910 100644 --- a/esmvaltool/utils/batch-jobs/job_PA2-CLUSTER.sh +++ b/esmvaltool/utils/batch-jobs/job_PA2-CLUSTER.sh @@ -24,16 +24,16 @@ # Submit job with: qsub -q job_PA2-CLUSTER.sh # Input arguments -NML=namelist_perfmetrics_CMIP5.yml +RECIPE=recipe_perfmetrics_CMIP5.yml CONFIG=config-user.yml # Set environment -CONDAPATH = # e.g. /home/soft/miniconda3/ -CONDAENV = # e.g. $CONDAPATH/envs/esmvaltool/bin -ESMVALPATH = # e.g. /home/ESMValTool/esmvaltool +CONDAPATH= # e.g. /home/soft/miniconda3/ +CONDAENV= # e.g. $CONDAPATH/envs/esmvaltool/bin +ESMVALPATH= # e.g. /home/ESMValTool/esmvaltool # Changes below this line should not be required export PATH=$PATH:$CONDAPATH/bin/ conda info --envs module load ncl -$CONDAENV/esmvaltool -c $ESMVALPATH/$CONFIG -n $ESMVALPATH/namelists/$NML +$CONDAENV/esmvaltool $ESMVALPATH/recipes/$RECIPE -c $ESMVALPATH/$CONFIG diff --git a/esmvaltool/utils/editor-enhancements/ncl-ESMValTool.el b/esmvaltool/utils/editor-enhancements/ncl-ESMValTool.el index a07b877751..f92d7f5ebd 100644 --- a/esmvaltool/utils/editor-enhancements/ncl-ESMValTool.el +++ b/esmvaltool/utils/editor-enhancements/ncl-ESMValTool.el @@ -235,7 +235,7 @@ ("\\<\\(res_vpUseSegments\\|res_vpWidthF\\|res_vpXF\\|res_vpYF\\|res_wkAntiAlias\\|res_wkBackgroundColor\\|res_wkBackgroundOpacityF\\|res_wkColorMapLen\\|res_wkColorMap\\|res_wkColorModel\\|res_wkColorModel\\|res_wkDashTableLength\\|res_wkDefGraphicStyleId\\|res_wkDeviceLowerX\\|res_wkDeviceLowerX\\|res_wkDeviceLowerX\\|res_wkDeviceLowerY\\|res_wkDeviceLowerY\\|res_wkDeviceLowerY\\|res_wkDeviceUpperX\\|res_wkDeviceUpperX\\|res_wkDeviceUpperX\\|res_wkDeviceUpperY\\|res_wkDeviceUpperY\\|res_wkDeviceUpperY\\|res_wkFileName\\|res_wkFileName\\|res_wkFillTableLength\\|res_wkForegroundColor\\|res_wkFormat\\|res_wkFormat\\|res_wkFullBackground\\|res_wkFullBackground\\|res_wkGksWorkId\\|res_wkHeight\\|res_wkMarkerTableLength\\|res_wkMetaName\\|res_wkOrientation\\|res_wkOrientation\\|res_wkOrientation\\|res_wkPDFFileName\\|res_wkPDFFormat\\|res_wkPDFResolution\\|res_wkPSFileName\\|res_wkPSFormat\\|res_wkPSResolution\\|res_wkPaperHeightF\\|res_wkPaperHeightF\\|res_wkPaperHeightF\\|res_wkPaperSize\\|res_wkPaperSize\\|res_wkPaperSize\\|res_wkPaperWidthF\\|res_wkPaperWidthF\\|res_wkPaperWidthF\\|res_wkTopLevelViews\\|res_wkViews\\|res_wkVisualType\\|res_wkVisualType\\|res_wkWidth\\|res_wsCurrentSize\\|res_wsMaximumSize\\|res_wsThresholdSize\\|res_xyComputeXMax\\|res_xyComputeXMin\\|res_xyComputeYMax\\|res_xyComputeYMin\\|res_xyCoordData\\|res_xyCoordDataSpec\\|res_xyCurveDrawOrder\\|res_xyDashPattern\\|res_xyDashPatterns\\|res_xyExplicitLabels\\|res_xyExplicitLegendLabels\\|res_xyLabelMode\\|res_xyLineColor\\|res_xyLineColors\\|res_xyLineDashSegLenF\\|res_xyLineLabelConstantSpacingF\\|res_xyLineLabelFont\\|res_xyLineLabelFontAspectF\\|res_xyLineLabelFontColor\\|res_xyLineLabelFontColors\\|res_xyLineLabelFontHeightF\\|res_xyLineLabelFontQuality\\|res_xyLineLabelFontThicknessF\\|res_xyLineLabelFuncCode\\|res_xyLineOpacities\\|res_xyLineOpacityF\\|res_xyLineThicknessF\\|res_xyLineThicknesses\\|res_xyMarkLineMode\\|res_xyMarkLineModes\\|res_xyMarker\\|res_xyMarkerColor\\|res_xyMarkerColors\\|res_xyMarkerOpacities\\|res_xyMarkerOpacityF\\|res_xyMarkerSizeF\\|res_xyMarkerSizes\\|res_xyMarkerThicknessF\\|res_xyMarkerThicknesses\\|res_xyMarkers\\|res_xyMonoDashPattern\\|res_xyMonoLineColor\\|res_xyMonoLineLabelFontColor\\|res_xyMonoLineThickness\\|res_xyMonoMarkLineMode\\|res_xyMonoMarker\\|res_xyMonoMarkerColor\\|res_xyMonoMarkerSize\\|res_xyMonoMarkerThickness\\|res_xyXIrrTensionF\\|res_xyXIrregularPoints\\|res_xyXStyle\\|res_xyYIrrTensionF\\|res_xyYIrregularPoints\\|res_xyYStyle\\|\\)\\>" 1 font-lock-constant-face) ;; ESMValTool interface and diag scripts - ("\\<\\(write_header\\|write_diag_header\\|log_info\\|log_debug\\|enter_msg\\|leave_msg\\|error_msg\\|tool_stop\\|exit_if_missing_atts\\|write_filelist\\|write_references\\|inquire_and_save_fileinfo\\|copy_VarCoords_l1\\|check_min_max_models\\|tstep\\|get_ncdf_name\\|get_ncdf_dir\\|ncdf_read\\|ncdf_write\\|ncdf_att\\|ncdf_define\\|att2var_default\\|att2var\\|bname\\|basename\\|extract_years\\|extend_var_at\\|copy_CoordNames_n\\|empty_str\\|write_info\\|remove_index\\|set_default_att\\|filter_attrs\\|write_ignore_warnings\\|get_ref_model_idx\\|read_data\\|get_start_year\\|get_end_year\\|multi_model_stats\\|dim_stddev_wgt_Wrap\\|time_operations\\|calc_season_index\\|extract_season\\|month_to_season_extended\\|coswgt_areaave\\|coswgt_arearmse\\|coswgt_pattern_cor\\|interannual_variability\\|calculate_metric\\|normalize_metric\\|distrib_stats\\|lognormal_dist\\|roi\\|extract_area\\|gridcell_area\\|map_area\\|area_operations\\|select_region\\|make_latlon2D\\|cdo_remapdis\\|find_destination_grid\\|guestimate_average_grid_area\\|get_lower_limits\\|get_upper_limits\\|is_regional\\|esmf_conserve_wrapper\\|rect2rect_interp\\|plev_lat_interp\\|get_model_minus_ref\\|esmf_conserve_wrapper_time\\|regrid_3D_to_rectilinear_grid\\|get_title_suffix\\|remove_attrs\\|plot_two_by_one\\|plot_three_by_one_diff\\|two_by_one\\|three_by_one_diff\\|plot_three_by_one_vector\\|three_by_one_vector\\|plot_multipanel\\|multipanel\\|plot_multipanel_vector\\|multipanel_vector\\|seasonal_plot\\|xy_plot_wrapper\\|ts_line_wrapper\\|get_title_suffix\\|remove_attrs\\|plot_two_by_one\\|plot_three_by_one_diff\\|two_by_one\\|three_by_one_diff\\|plot_three_by_one_vector\\|three_by_one_vector\\|plot_multipanel\\|multipanel\\|plot_multipanel_vector\\|multipanel_vector\\|seasonal_plot\\|xy_plot_wrapper\\|ts_line_wrapper\\|xy_line_overlap\\|unique_labels_min\\|unique_labels_all\\|project_style\\|project_style_GO\\|place_debuginfo\\|place_description\\|gsnColorRange\\|format_units\\|set_log_ticks\\|sort_alphabetically\\|plot_precip_domain\\|precip_domain\\|profile_plev\\|aerosol_profile\\|aerosol_sizedist\\|xy_line\\|timeseries_station\\|cycle_plot\\|errorbar_plot\\|contour_map\\|contour_map_polar\\|contour_map_ce\\|add_markers_to_map\\|taylor_plot\\|legend_lines\\|legend_markers\\|scatterplot\\|scatterplot3D\\|scatterplot_markers\\|month_sel\\|lat_names\\|add_line\\|add_scatt\\|add_legenda\\|calcRegCoeffs\\|genZonalMeans\\|calcMeanAnnCycleMonthly\\|calcMeanAnnCycleAnnual\\|rmMeanAnnCycle\\|apfiltersmooth\\|smoothAnomalies\\|clmMon2clmDayn\\|vector_scalar_map_polar\\|portrait_plot\\|mjo_wave_freq_plot\\|addHorVertLinesCross_extended\\|mjo_cross_spectra_plot\\|mjo_ceof_plot\\|mjo_life_cycle_plot\\|pr_u850_mean_plot\\|mjo_xcor_lag_plot\\|mjo_pr_ua_vari_plot\\|mjo_unvari_eof_plot\\|zonalmean_profile\\|create_legend_lines\\|output_type\\|copy_VarAtt_sel\\|panelling\\|get_plot_dir\\|get_outfile_name\\|get_wks\\|add_markers\\|add_num_markers\\|add_errorbar\\|horizontal_whiskers\\|add_prediction_error\\|contourplot\\|convert_units\\|scalfac\\|scale_units\\|rescale\\|UNIQ\\|union\\|set_inclusive_OR\\|intersection\\|is_array_subset\\|relative_complement\\|set_symmetric_difference\\|\\)\\>" 1 font-lock-type-face) + ("\\<\\(write_header\\|write_diag_header\\|log_info\\|log_debug\\|enter_msg\\|leave_msg\\|error_msg\\|tool_stop\\|exit_if_missing_atts\\|write_filelist\\|write_references\\|inquire_and_save_fileinfo\\|copy_VarCoords_l1\\|check_min_max_datasets\\|tstep\\|get_ncdf_name\\|get_ncdf_dir\\|ncdf_read\\|ncdf_write\\|ncdf_att\\|ncdf_define\\|att2var_default\\|att2var\\|bname\\|basename\\|extract_years\\|extend_var_at\\|copy_CoordNames_n\\|empty_str\\|write_info\\|remove_index\\|set_default_att\\|filter_attrs\\|write_ignore_warnings\\|get_ref_dataset_idx\\|read_data\\|read_fx_data\\|get_start_year\\|get_end_year\\|multi_model_stats\\|dim_stddev_wgt_Wrap\\|time_operations\\|calc_season_index\\|extract_season\\|month_to_season_extended\\|coswgt_areaave\\|coswgt_arearmse\\|coswgt_pattern_cor\\|interannual_variability\\|calculate_metric\\|normalize_metric\\|distrib_stats\\|lognormal_dist\\|roi\\|extract_area\\|gridcell_area\\|map_area\\|area_operations\\|select_region\\|make_latlon2D\\|cdo_remapdis\\|find_destination_grid\\|guestimate_average_grid_area\\|get_lower_limits\\|get_upper_limits\\|is_regional\\|esmf_conserve_wrapper\\|rect2rect_interp\\|plev_lat_interp\\|get_dataset_minus_ref\\|esmf_conserve_wrapper_time\\|regrid_3D_to_rectilinear_grid\\|get_title_suffix\\|remove_attrs\\|plot_two_by_one\\|plot_three_by_one_diff\\|two_by_one\\|three_by_one_diff\\|plot_three_by_one_vector\\|three_by_one_vector\\|plot_multipanel\\|multipanel\\|plot_multipanel_vector\\|multipanel_vector\\|seasonal_plot\\|xy_plot_wrapper\\|ts_line_wrapper\\|get_title_suffix\\|remove_attrs\\|plot_two_by_one\\|plot_three_by_one_diff\\|two_by_one\\|three_by_one_diff\\|plot_three_by_one_vector\\|three_by_one_vector\\|plot_multipanel\\|multipanel\\|plot_multipanel_vector\\|multipanel_vector\\|seasonal_plot\\|xy_plot_wrapper\\|ts_line_wrapper\\|xy_line_overlap\\|unique_labels_min\\|unique_labels_all\\|project_style\\|project_style_GO\\|place_debuginfo\\|place_description\\|gsnColorRange\\|format_units\\|set_log_ticks\\|sort_alphabetically\\|plot_precip_domain\\|precip_domain\\|profile_plev\\|aerosol_profile\\|aerosol_sizedist\\|xy_line\\|timeseries_station\\|cycle_plot\\|errorbar_plot\\|contour_map\\|contour_map_polar\\|contour_map_ce\\|add_markers_to_map\\|taylor_plot\\|legend_lines\\|legend_markers\\|scatterplot\\|scatterplot3D\\|scatterplot_markers\\|month_sel\\|lat_names\\|add_line\\|add_scatt\\|add_legenda\\|calcRegCoeffs\\|genZonalMeans\\|calcMeanAnnCycleMonthly\\|calcMeanAnnCycleAnnual\\|rmMeanAnnCycle\\|apfiltersmooth\\|smoothAnomalies\\|clmMon2clmDayn\\|vector_scalar_map_polar\\|portrait_plot\\|mjo_wave_freq_plot\\|addHorVertLinesCross_extended\\|mjo_cross_spectra_plot\\|mjo_ceof_plot\\|mjo_life_cycle_plot\\|pr_u850_mean_plot\\|mjo_xcor_lag_plot\\|mjo_pr_ua_vari_plot\\|mjo_unvari_eof_plot\\|zonalmean_profile\\|create_legend_lines\\|output_type\\|copy_VarAtt_sel\\|panelling\\|get_plot_dir\\|get_outfile_name\\|get_wks\\|add_markers\\|add_num_markers\\|add_errorbar\\|horizontal_whiskers\\|add_prediction_error\\|contourplot\\|convert_units\\|scalfac\\|scale_units\\|rescale\\|UNIQ\\|union\\|set_inclusive_OR\\|intersection\\|is_array_subset\\|relative_complement\\|set_symmetric_difference\\|\\)\\>" 1 font-lock-type-face) ) "words used in ncl-mode highlighting" diff --git a/esmvaltool/utils/xml2yml/README.md b/esmvaltool/utils/xml2yml/README.md new file mode 100644 index 0000000000..04b1e512c9 --- /dev/null +++ b/esmvaltool/utils/xml2yml/README.md @@ -0,0 +1,32 @@ +# xml2yml Converting Version 1 Namelists to Version 2 Namelists + +This converter can turn the old xml namelists into new-style yml namelists. +It is implemented as a xslt stylesheet that needs a processor that is xslt 2.0 capable. +With this, you simply process your old namelist with the stylesheet xml2yml.xsl to produce +a new yml namelist. + +After the conversion you need to manually check the mip information in the variables! +Also, check the caveats below! + +## Howto +One freely available processor is the Java based [saxon](http://saxon.sourceforge.net/). +You can download the free he edition [here](https://sourceforge.net/projects/saxon/files/latest/download?source=files). +Unpack the zip file into a new directory. Then, provided you have Java installed, you can convert your namelist +simply with: +``` +java -jar $SAXONDIR/saxon9he.jar -xsl:xml2yml.xsl -s:namelist.xml -o:namelist.yml +``` + +## Caveats/Known Limitations +* At the moment, not all model schemes (OBS, CMIP5, CMIP5_ETHZ...) are supported. + They are, however, relatively easy to add, so if you need help adding a new one, + please let me know! +* The documentation section (namelist_summary in the old file) is not + automatically converted. +* In version 1, one could name an exclude, similar to the reference model. This + is no longer possible and the way to do it is to include the models with + another `additional_models` tag in the variable section. That conversion is + not performed by this tool. + +## Author +* **Klaus Zimmermann**, direct questions and comments to klaus.zimmermann@smhi.se diff --git a/esmvaltool/utils/xml2yml/xml2yml.xsl b/esmvaltool/utils/xml2yml/xml2yml.xsl new file mode 100644 index 0000000000..e19d641547 --- /dev/null +++ b/esmvaltool/utils/xml2yml/xml2yml.xsl @@ -0,0 +1,161 @@ + + + + + + + # + + + + --- + + + + + + + + + + + + + datasets: + + + + + preprocessors: + prep0: {} + diagnostics: + + + + + + + + + : + + description: + + + + variables: + + + + + + + : + + preprocessor: prep0 + + + + + mip: + + + + + mip: #missing + + + + field: + + + + + + additional_datasets: + + + + scripts: + + + + + : script: + + + + + + + + + reference_dataset: + + + + alternative_dataset: + + + + + + + exclude_dataset: + + + + + + + + + + + + - {dataset: + + , project: CMIP5 + , exp: + + , ensemble: + + , start_year: + + , end_year: + + } + + + - {dataset: + + , project: + + , type: + + , version: + + , start_year: + + , end_year: + + , tier: + + } + + + + + + + + + + ERROR: unknown dataset scheme + + + + + + diff --git a/meta.yaml b/meta.yaml index c1746762bb..50a8b22aa5 100644 --- a/meta.yaml +++ b/meta.yaml @@ -5,7 +5,7 @@ # conda build esmvaltool -c conda-forge -c birdhouse # Package version number -{% set version = "2.0a0" %} +{% set version = "2.0a1" %} package: name: esmvaltool @@ -53,6 +53,7 @@ requirements: - yamale # in birdhouse channel # Multi language support: - ncl + - ncurses=6.1=hfc679d8_1 # TODO: add R, julia test: # TODO: add unit tests? This seems to require installing the tests diff --git a/setup.py b/setup.py index a6c169e201..065df25949 100755 --- a/setup.py +++ b/setup.py @@ -18,7 +18,6 @@ PACKAGES = [ 'esmvaltool', - 'doc', # install doc/MASTER_authors-refs-acknow.txt ] REQUIREMENTS = { @@ -34,7 +33,7 @@ 'cdo', 'cf_units', 'cython', - 'iris==1.13', + # 'scitools-iris', # Only iris 2 is on PyPI 'matplotlib', 'netCDF4', 'numba', diff --git a/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py b/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py index 17b79ce227..f5158797f3 100644 --- a/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py +++ b/tests/integration/cmor/_fixes/CMIP5/test_CCSM4.py @@ -4,11 +4,14 @@ from iris.coords import DimCoord from iris.cube import Cube -from esmvaltool.cmor._fixes.CMIP5.CCSM4 import rlut, rlutcs +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, 2], var_name='rlut') self.cube.add_dim_coord(DimCoord([0.50001, 1.499999], standard_name='latitude', @@ -19,6 +22,7 @@ def setUp(self): self.fix = rlut() def test_fix_metadata(self): + """Check that latitudes values are rounded""" cube = self.fix.fix_metadata(self.cube) latitude = cube.coord('latitude') @@ -29,7 +33,10 @@ def test_fix_metadata(self): class TestsRlutcs(unittest.TestCase): + """Test for rlutcs fixes""" + def setUp(self): + """Prepare tests""" self.cube = Cube([1, 2], var_name='rlut') self.cube.add_dim_coord(DimCoord([0.50001, 1.499999], standard_name='latitude', @@ -40,6 +47,7 @@ def setUp(self): self.fix = rlutcs() def test_fix_metadata(self): + """Check that latitudes values are rounded""" cube = self.fix.fix_metadata(self.cube) latitude = cube.coord('latitude') @@ -47,3 +55,17 @@ def test_fix_metadata(self): 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, 2], 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) + self.assertEqual('1e3', cube.units.origin) diff --git a/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py b/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py new file mode 100644 index 0000000000..c1df1cf86d --- /dev/null +++ b/tests/integration/cmor/_fixes/CMIP5/test_FGOALS_g2.py @@ -0,0 +1,27 @@ +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, 2], var_name='co2', units='J') + self.cube.add_dim_coord( + DimCoord( + [0, 1], + 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) + + 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/preprocessor/_io/test_save.py b/tests/integration/preprocessor/_io/test_save.py index 152e98c5ba..20d8efcfc4 100644 --- a/tests/integration/preprocessor/_io/test_save.py +++ b/tests/integration/preprocessor/_io/test_save.py @@ -6,6 +6,7 @@ import os import tempfile import numpy as np +import netCDF4 import iris from iris.cube import Cube from iris.coords import DimCoord @@ -25,14 +26,20 @@ def tearDown(self): os.remove(temp_file) def _create_sample_cube(self): - coord = DimCoord(np.asarray([1, 2], np.single), - standard_name='latitude', - units='degrees_north') + 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.asarray([1, 2], np.single), + cube = Cube(np.random.random_sample([2, 2, 2]), var_name='sample', units='1', - dim_coords_and_dims=((coord, 0),)) + dim_coords_and_dims=((lat, 0), (lon, 1), (time, 2))) descriptor, temp_file = tempfile.mkstemp('.nc') os.close(descriptor) @@ -43,24 +50,78 @@ def _create_sample_cube(self): def test_save(self): """Test save""" cube = self._create_sample_cube() - paths = _io.save_cubes([cube]) + paths = _io.save([cube]) loaded_cube = iris.load_cube(paths[0]) - self.assertTrue((cube.data == loaded_cube.data).all()) - self.assertTrue((cube.coord('latitude').points == - loaded_cube.coord('latitude').points).all()) + self._compare_cubes(cube, loaded_cube) + + def test_save_zlib(self): + """Test save""" + cube = self._create_sample_cube() + paths = _io.save([cube], compress=True) + loaded_cube = iris.load_cube(paths[0]) + self._compare_cubes(cube, loaded_cube) + handler = netCDF4.Dataset(paths[0], '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_save_debug(self): """Test save on debug mode""" cube = self._create_sample_cube() - paths = _io.save_cubes([cube], debug=True) + paths = _io.save([cube], debug=True) loaded_cube = iris.load_cube(paths[0]) - self.assertTrue((cube.data == loaded_cube.data).all()) - self.assertTrue((cube.coord('latitude').points == - loaded_cube.coord('latitude').points).all()) + self._compare_cubes(cube, loaded_cube) def test_fail_without_filename(self): """Test save fails if _filename is not added""" cube = self._create_sample_cube() del cube.attributes['_filename'] with self.assertRaises(ValueError): - _io.save_cubes([cube]) + _io.save([cube]) + + def test_save_optimized_map(self): + """Test save""" + cube = self._create_sample_cube() + paths = _io.save([cube], optimize_access='map') + loaded_cube = iris.load_cube(paths[0]) + self._compare_cubes(cube, loaded_cube) + self._check_chunks(paths, [2, 2, 1]) + + def test_save_optimized_timeseries(self): + """Test save""" + cube = self._create_sample_cube() + paths = _io.save([cube], optimize_access='timeseries') + loaded_cube = iris.load_cube(paths[0]) + self._compare_cubes(cube, loaded_cube) + self._check_chunks(paths, [1, 1, 2]) + + def test_save_optimized_lat(self): + """Test save""" + cube = self._create_sample_cube() + paths = _io.save([cube], optimize_access='latitude') + loaded_cube = iris.load_cube(paths[0]) + self._compare_cubes(cube, loaded_cube) + expected_chunks = [2, 1, 1] + self._check_chunks(paths, expected_chunks) + + def _check_chunks(self, paths, expected_chunks): + handler = netCDF4.Dataset(paths[0], 'r') + chunking = handler.variables['sample'].chunking() + handler.close() + self.assertListEqual(expected_chunks, chunking) + + def test_save_optimized_lon_time(self): + """Test save""" + cube = self._create_sample_cube() + paths = _io.save([cube], optimize_access='longitude time') + loaded_cube = iris.load_cube(paths[0]) + self._compare_cubes(cube, loaded_cube) + self._check_chunks(paths, [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 new file mode 100644 index 0000000000..147b3fce6e --- /dev/null +++ b/tests/integration/preprocessor/_mask/__init__.py @@ -0,0 +1,5 @@ +""" +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 new file mode 100644 index 0000000000..f5b5d74a0a --- /dev/null +++ b/tests/integration/preprocessor/_mask/test_mask.py @@ -0,0 +1,80 @@ +""" +Test mask + +Integration tests for the :func:`esmvaltool.preprocessor._mask` +module. + +""" + +from __future__ import absolute_import, division, print_function + +import unittest + +import os +import iris +import numpy as np + +import tests +from esmvaltool.preprocessor import _mask as mask + + +class Test(tests.Test): + """Test class""" + + def test_mask_landsea(self): + """Test mask_landocean func""" + fx_data = np.empty((3, 3)) + fx_data[:] = 60. + new_cube_data = np.empty((3, 3)) + 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) + coords_spec = [(lats, 0), (lons, 1)] + fx_mask = iris.cube.Cube(fx_data, dim_coords_and_dims=coords_spec) + iris.save(fx_mask, 'sftlf_test.nc') + new_cube_land = iris.cube.Cube(new_cube_data, + dim_coords_and_dims=coords_spec) + new_cube_sea = iris.cube.Cube(new_cube_data, + dim_coords_and_dims=coords_spec) + # mask with fx files + result_land = mask.mask_landsea(new_cube_land, + ['sftlf_test.nc'], 'land') + result_sea = mask.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(new_cube_data, + dim_coords_and_dims=coords_spec) + new_cube_sea = iris.cube.Cube(new_cube_data, + dim_coords_and_dims=coords_spec) + # bear in mind all points are in the ocean + result_land = mask.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) + + +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 index 8369259af9..2e419877ff 100644 --- a/tests/integration/preprocessor/_regrid/test_get_cmor_levels.py +++ b/tests/integration/preprocessor/_regrid/test_get_cmor_levels.py @@ -10,10 +10,17 @@ import unittest from esmvaltool.preprocessor import _regrid +from esmvaltool.cmor.table import read_cmor_tables +from esmvaltool._config import read_config_developer_file 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, diff --git a/tests/system/config-test.yml b/tests/system/config-test.yml index 5e33466854..514ac2ce28 100644 --- a/tests/system/config-test.yml +++ b/tests/system/config-test.yml @@ -15,10 +15,10 @@ test: run: false # Simulate input data using the dummydata module [true]/false simulate_input: true - # Limit testing/generating reference data to the following namelists - # An empty list means any namelist in esmvaltool/nml - namelists: [ - namelist_MyVar.yml, + # Limit testing/generating reference data to the following recipes + # An empty list means any recipe in esmvaltool/nml + recipes: [ + recipe_MyVar.yml, ] # Reference data configuration diff --git a/tests/system/data_simulator.py b/tests/system/data_simulator.py index 22d0efd686..420077388d 100644 --- a/tests/system/data_simulator.py +++ b/tests/system/data_simulator.py @@ -11,7 +11,7 @@ from esmvaltool._config import read_config_user_file from esmvaltool._data_finder import get_input_filename -from esmvaltool._namelist import read_namelist_file +from esmvaltool._recipe import read_recipe_file def write_data_file(short_name, filename, field, start_year, end_year): @@ -48,11 +48,11 @@ def write_data_file(short_name, filename, field, start_year, end_year): **kwargs) -def simulate_input_data(namelist_file, config_user_file=None): - """Simulate data for variables defined in namelist""" +def simulate_input_data(recipe_file, config_user_file=None): + """Simulate data for variables defined in recipe""" if config_user_file: user_config = read_config_user_file( - config_file=config_user_file, namelist_name='') + config_file=config_user_file, recipe_name='') else: user_config = { 'rootpath': { @@ -61,12 +61,12 @@ def simulate_input_data(namelist_file, config_user_file=None): 'drs': {}, } - namelist = read_namelist_file( - namelist_file, user_config, initialize_tasks=False) + recipe = read_recipe_file( + recipe_file, user_config, initialize_tasks=False) start_time = time.time() - for diagnostic in namelist.diagnostics.values(): + for diagnostic in recipe.diagnostics.values(): np.random.seed(0) for variables in diagnostic['variables'].values(): for variable in variables: @@ -94,4 +94,4 @@ def simulate_input_data(namelist_file, config_user_file=None): if __name__ == '__main__': for path in sys.argv[1:]: - simulate_input_data(namelist_file=path, config_user_file=None) + simulate_input_data(recipe_file=path, config_user_file=None) diff --git a/tests/system/esmvaltool_testlib.py b/tests/system/esmvaltool_testlib.py index 8e63cb724f..e681cd71e0 100644 --- a/tests/system/esmvaltool_testlib.py +++ b/tests/system/esmvaltool_testlib.py @@ -38,17 +38,17 @@ def _load_config(filename=None): cfg['reference']['output'] = os.path.abspath( os.path.expanduser(cfg['reference']['output'])) - if cfg['test'].get('namelists', []) == []: + if cfg['test'].get('recipes', []) == []: script_root = esmvaltool.get_script_root() - namelist_glob = os.path.join(script_root, 'nml', 'namelist_*.yml') - cfg['test']['namelists'] = glob.glob(namelist_glob) + recipe_glob = os.path.join(script_root, 'nml', 'recipe_*.yml') + cfg['test']['recipes'] = glob.glob(recipe_glob) return cfg _CFG = _load_config() -NAMELISTS = _CFG['test']['namelists'] +RECIPES = _CFG['test']['recipes'] def _create_config_user_file(output_directory): @@ -72,12 +72,12 @@ def _create_config_user_file(output_directory): class ESMValToolTest(EasyTest): """Main class for ESMValTool test runs.""" - def __init__(self, namelist, output_directory, ignore='', **kwargs): + def __init__(self, recipe, output_directory, ignore='', **kwargs): """ Create ESMValToolTest instance - namelist: str - The filename of the namelist that should be tested. + recipe: str + The filename of the recipe that should be tested. output_directory : str The name of a directory where results can be stored. ignore: str or iterable of str @@ -91,13 +91,13 @@ def __init__(self, namelist, output_directory, ignore='', **kwargs): script_root = esmvaltool.get_script_root() - # Set namelist path - if not os.path.exists(namelist): - namelist = os.path.join( + # Set recipe path + if not os.path.exists(recipe): + recipe = os.path.join( os.path.dirname(script_root), - 'namelists', - namelist) - self.namelist_file = os.path.abspath(namelist) + 'recipes', + recipe) + self.recipe_file = os.path.abspath(recipe) # Simulate input data? self.simulate_input = _CFG['test']['simulate_input'] @@ -108,19 +108,19 @@ def __init__(self, namelist, output_directory, ignore='', **kwargs): # Define reference output path reference_dir = os.path.join( _CFG['reference']['output'], - os.path.splitext(os.path.basename(self.namelist_file))[0]) + os.path.splitext(os.path.basename(self.recipe_file))[0]) # If reference data is neither available nor should be generated, skip if not (os.path.exists(reference_dir) or self.create_reference_output): - raise SkipTest("No reference data available for namelist {} in {}" - .format(namelist, _CFG['reference']['output'])) + raise SkipTest("No reference data available for recipe {} in {}" + .format(recipe, _CFG['reference']['output'])) # Write ESMValTool configuration file self.config_user_file = _create_config_user_file(output_directory) super(ESMValToolTest, self).__init__( exe='esmvaltool', - args=['-n', self.namelist_file, '-c', self.config_user_file], + args=['-n', self.recipe_file, '-c', self.config_user_file], output_directory=output_directory, refdirectory=reference_dir, **kwargs) @@ -130,7 +130,7 @@ def run(self, **kwargs): if self.simulate_input: from .data_simulator import simulate_input_data simulate_input_data( - namelist_file=self.namelist_file, + recipe_file=self.recipe_file, config_user_file=self.config_user_file) if self.create_reference_output: @@ -142,7 +142,7 @@ def run(self, **kwargs): def generate_reference_output(self): """Generate reference output. - Generate reference data by executing the namelist and then moving + Generate reference data by executing the recipe and then moving results to the output directory. """ if not os.path.exists(self.refdirectory): diff --git a/tests/system/test_namelists.py b/tests/system/test_recipes.py similarity index 72% rename from tests/system/test_namelists.py rename to tests/system/test_recipes.py index ced004b6d4..0825707bd4 100644 --- a/tests/system/test_namelists.py +++ b/tests/system/test_recipes.py @@ -5,7 +5,7 @@ import pytest -from .esmvaltool_testlib import NAMELISTS, ESMValToolTest +from .esmvaltool_testlib import RECIPES, ESMValToolTest @pytest.fixture @@ -16,11 +16,11 @@ def output_directory(): shutil.rmtree(tmp, ignore_errors=True) -@pytest.mark.parametrize("namelist", NAMELISTS) -def test_namelist(output_directory, namelist): # noqa - """Create a test for each namelist in NAMELISTS and run those.""" +@pytest.mark.parametrize("recipe", RECIPES) +def test_recipe(output_directory, recipe): # noqa + """Create a test for each recipe in RECIPES and run those.""" test = ESMValToolTest( - namelist=namelist, + recipe=recipe, output_directory=output_directory, ignore=['tmp/*/*', '*log*.txt', '*.log'], checksum_exclude=['pdf', 'ps', 'png', 'eps', 'epsi', 'nc']) diff --git a/tests/unit/cmor/test_cmor_check.py b/tests/unit/cmor/test_cmor_check.py index 6301d2bab9..77f5ac5c84 100644 --- a/tests/unit/cmor/test_cmor_check.py +++ b/tests/unit/cmor/test_cmor_check.py @@ -159,17 +159,26 @@ def test_check_with_unit_conversion(self): self.cube.units = 'days' self._check_cube() + def test_check_with_psu_units(self): + """Test check succeds for a good cube with psu units""" + self.var_info.units = 'psu' + self.cube = self.get_cube(self.var_info) + self._check_cube() + 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 error""" self.cube = self.get_cube(self.var_info) self.var_info.positive = 'up' self.var_info.table_type = 'CMIP6' @@ -177,7 +186,9 @@ def test_check_with_no_positive_CMIP6(self): 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): @@ -185,6 +196,25 @@ def test_rank_with_aux_coords(self): 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').points[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, @@ -444,13 +474,21 @@ def get_cube(self, 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=var_info.units, - attributes=None, + units=units, + attributes=attributes, ) if var_info.positive: cube.attributes['positive'] = var_info.positive diff --git a/tests/unit/data_finder/test_get_start_end_year.py b/tests/unit/data_finder/test_get_start_end_year.py new file mode 100644 index 0000000000..348018c4e5 --- /dev/null +++ b/tests/unit/data_finder/test_get_start_end_year.py @@ -0,0 +1,76 @@ +"""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/_area_pp/__init__.py b/tests/unit/preprocessor/_area_pp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/preprocessor/_area_pp/test_area_pp.py b/tests/unit/preprocessor/_area_pp/test_area_pp.py new file mode 100644 index 0000000000..75fe78aaa3 --- /dev/null +++ b/tests/unit/preprocessor/_area_pp/test_area_pp.py @@ -0,0 +1,83 @@ +"""Unit tests for the :func:`esmvaltool.preprocessor._area_pp` module.""" + +from __future__ import absolute_import, division, print_function + +import unittest + +import iris +import numpy as np + +import tests + +from esmvaltool.preprocessor._area_pp import area_slice as extract_region +from esmvaltool.preprocessor._area_pp import area_average as average_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_area_average_2d(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_area_average_negative_longitude(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_longitude(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) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/unit/preprocessor/_mask/__init__.py b/tests/unit/preprocessor/_mask/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/preprocessor/_mask/test_mask.py b/tests/unit/preprocessor/_mask/test_mask.py new file mode 100644 index 0000000000..62bf25f307 --- /dev/null +++ b/tests/unit/preprocessor/_mask/test_mask.py @@ -0,0 +1,70 @@ +"""Unit test for the :func:`esmvaltool.preprocessor._mask` function""" + +from __future__ import absolute_import, division, print_function + +import unittest + +import iris +import numpy as np + +import tests + +from esmvaltool.preprocessor._mask import mask_above_threshold +from esmvaltool.preprocessor._mask import mask_below_threshold +from esmvaltool.preprocessor._mask import mask_inside_range +from esmvaltool.preprocessor._mask import 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/test_vinterp.py b/tests/unit/preprocessor/_regrid/test_vinterp.py index 852a721275..3ecd028bac 100644 --- a/tests/unit/preprocessor/_regrid/test_vinterp.py +++ b/tests/unit/preprocessor/_regrid/test_vinterp.py @@ -26,7 +26,9 @@ def setUp(self): self.mock_create_cube = self.patch( 'esmvaltool.preprocessor._regrid._create_cube', return_value=self.created_cube) - self.vinterp_schemes = ['linear', 'nearest'] + self.vinterp_schemes = ['linear', 'nearest', + 'linear_horizontal_extrapolate_vertical', + 'nearest_horizontal_extrapolate_vertical'] def test_nop(self): cube = mock.sentinel.cube diff --git a/tests/unit/preprocessor/_time_area/__init__.py b/tests/unit/preprocessor/_time_area/__init__.py new file mode 100644 index 0000000000..80ea083ad2 --- /dev/null +++ b/tests/unit/preprocessor/_time_area/__init__.py @@ -0,0 +1 @@ +"""Test suite for _time_area module""" diff --git a/tests/unit/preprocessor/_time_area/test_time_area.py b/tests/unit/preprocessor/_time_area/test_time_area.py new file mode 100644 index 0000000000..b57e64a829 --- /dev/null +++ b/tests/unit/preprocessor/_time_area/test_time_area.py @@ -0,0 +1,152 @@ +"""Unit tests for the :func:`esmvaltool.preprocessor._time_pp` module""" + +from __future__ import absolute_import, division, print_function + +import unittest + +import iris +import iris.coord_categorisation +import iris.coords +import numpy as np +from cf_units import Unit +from iris.cube import Cube + +import tests +from esmvaltool.preprocessor._time_area import (extract_month, extract_season, + 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', calendar='gregorian')), 0) + iris.coord_categorisation.add_month_number(cube, 'time') + return cube + + +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) + self.assertTrue( + (np.array([1, 1]) == sliced.coord('month_number').points).all()) + + +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) + self.assertTrue( + (np.array([1, 2, 12, 1, 2, + 12]) == sliced.coord('month_number').points).all()) + + def test_get_djf_caps(self): + """Test function works when season specified in caps""" + sliced = extract_season(self.cube, 'DJF') + print(sliced) + self.assertTrue( + (np.array([1, 2, 12, 1, 2, + 12]) == sliced.coord('month_number').points).all()) + + def test_get_mam(self): + """Test function for spring""" + sliced = extract_season(self.cube, 'mam') + print(sliced) + self.assertTrue((np.array( + [3, 4, 5, 3, 4, 5]) == sliced.coord('month_number').points).all()) + + def test_get_jja(self): + """Test function for summer""" + sliced = extract_season(self.cube, 'jja') + print(sliced) + self.assertTrue((np.array( + [6, 7, 8, 6, 7, 8]) == sliced.coord('month_number').points).all()) + + def test_get_son(self): + """Test function for summer""" + sliced = extract_season(self.cube, 'son') + print(sliced) + self.assertTrue( + (np.array([9, 10, 11, 9, 10, + 11]) == sliced.coord('month_number').points).all()) + + +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)) + cube = iris.cube.Cube(data) + + 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.]) + self.assertArrayEqual(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.]) + cube = iris.cube.Cube(data) + + 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.]) + self.assertArrayEqual(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, )) + cube = iris.cube.Cube(data) + + 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.]) + self.assertArrayEqual(result.data, expected) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/unit/preprocessor/_volume_pp/__init__.py b/tests/unit/preprocessor/_volume_pp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/preprocessor/_volume_pp/test_volume_pp.py b/tests/unit/preprocessor/_volume_pp/test_volume_pp.py new file mode 100644 index 0000000000..ef2cdfb62b --- /dev/null +++ b/tests/unit/preprocessor/_volume_pp/test_volume_pp.py @@ -0,0 +1,93 @@ +"""Unit test for the :func:`esmvaltool.preprocessor._volume_pp` function""" + +from __future__ import absolute_import, division, print_function + +import unittest + +import iris +import numpy as np + +import tests +from esmvaltool.preprocessor._volume_pp import volume_slice +from esmvaltool.preprocessor._volume_pp import volume_average +from esmvaltool.preprocessor._volume_pp import depth_integration +from esmvaltool.preprocessor._volume_pp import extract_transect +from esmvaltool.preprocessor._volume_pp import extract_trajectory + + +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) + data2 = np.ones((3, 2, 2)) + + 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) + depth = iris.coords.DimCoord( + [0.5, 5., 50.], + standard_name='depth', + bounds=[[0., 2.5], [2.5, 25.], [25., 250.]], + units='m') + coords_spec3 = [(depth, 0), (lats2, 1), (lons2, 2)] + self.grid_3d = iris.cube.Cube(data2, dim_coords_and_dims=coords_spec3) + + def test_volume_slice(self): + """Test to extract the top two layers of a 3 layer depth column.""" + result = volume_slice(self.grid_3d, 0., 10.) + expected = np.ones((2, 2, 2)) + print(result.data, expected.data) + self.assertArrayEqual(result.data, expected) + + def test_volume_average(self): + """Test to take the volume weighted average of a (3,2,2) cube.""" + result = volume_average(self.grid_3d, 'depth', 'latitude', 'longitude') + expected = np.array([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], 'depth') + 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, 'depth') + 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/test_lint.py b/tests/unit/test_lint.py index 39c270bf9f..8f484a16ae 100644 --- a/tests/unit/test_lint.py +++ b/tests/unit/test_lint.py @@ -60,7 +60,8 @@ def test_nclcodestyle(): ', '.join(check_paths))) style = nclcodestyle.StyleGuide() - + package_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + check_paths = [os.path.join(package_root, path) for path in check_paths] success = style.check_files(check_paths).total_errors == 0 if not success: diff --git a/tests/unit/test_naming.py b/tests/unit/test_naming.py new file mode 100644 index 0000000000..3d570f1233 --- /dev/null +++ b/tests/unit/test_naming.py @@ -0,0 +1,67 @@ +"""Checks to ensure that files follow the naming convention""" + +import os +import unittest + + +class TestNaming(unittest.TestCase): + """Test naming of files and folders""" + + def setUp(self): + """Prepare tests""" + folder = os.path.join(__file__, '..', '..', '..') + self.esmvaltool_folder = os.path.abspath(folder) + + def test_windows_reserved_names(self): + """ + Check that no file or folder uses a Windows reserved name + + Files can not differ from a reserved name by the extension only + """ + reserved_names = { + 'CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', + 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', + 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9' + } + + for dirpath, dirnames, filenames in os.walk(self.esmvaltool_folder): + error_msg = 'Reserved windows name found at {}.' \ + ' Please rename it ' \ + '(Windows reserved names are: {})' \ + ''.format(dirpath, ','.join(reserved_names)) + self.assertTrue(reserved_names.isdisjoint(dirnames), error_msg) + self.assertTrue(reserved_names.isdisjoint(filenames), error_msg) + without_extensions = (os.path.splitext(filename)[0] + for filename in filenames) + self.assertTrue( + reserved_names.isdisjoint(without_extensions), error_msg) + + def test_avoid_casing_collisions(self): + """ + Check that there are no names differing only in the capitalization + + This includes folders differing from files + """ + for dirpath, dirnames, filenames in os.walk(self.esmvaltool_folder): + self.assertEqual( + len(filenames) + len(dirnames), + len({name.lower() + for name in filenames + dirnames}), + 'Colliding names found at {0}. Please do not ' + 'use names that only differ in ' + 'capitalization'.format(dirpath)) + + def test_no_namelist(self): + """ + Check that there are no namelist references in file and folder names + + This will help us to avoid bad merges with stale branches + """ + for dirpath, dirnames, filenames in os.walk(self.esmvaltool_folder): + if '.git' in dirpath.split(os.sep): + continue + self.assertFalse( + any('namelist' in name.lower() + for name in filenames + dirnames), + 'Namelist reference found at {}. Please use "recipe" instead' + .format(dirpath))