diff --git a/.travis.yml b/.travis.yml index 964bfdfa..c4bf3b8c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,7 @@ services: sudo: false before_install: - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh - -O miniconda.sh; fi + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then wget --no-check https://repo.continuum.io/miniconda/Miniconda2-4.3.21-Linux-x86_64.sh -O miniconda.sh ; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then wget https://repo.continuum.io/miniconda/Miniconda2-latest-MacOSX-x86_64.sh -O miniconda.sh; fi - export PATH="$HOME/miniconda/bin:$PATH" @@ -23,8 +22,10 @@ before_install: - conda install openssl=1.0.2d - conda install cdms2 -c uvcdat/label/nightly -c conda-forge -c uvcdat - conda install udunits2 -c uvcdat/label/nightly -c conda-forge -c uvcdat - - conda install gcc - + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then conda install gcc; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then conda install gcc; fi + - source deactivate root + - source activate root install: - git clone https://github.com/PCMDI/cmip6-cmor-tables - ln -s cmip6-cmor-tables/Tables Tables @@ -50,4 +51,4 @@ env: after_success: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then bash scripts/conda_upload.sh ${TRAVIS_BRANCH} ; fi - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v `pwd`:/travis_home -e CONDA_UPLOAD_TOKEN=${CONDA_UPLOAD_TOKEN} -a STDOUT -a STDERR cdat/conda:conda-forge-cdms2 /travis_home/scripts/conda_upload.sh ${TRAVIS_BRANCH} ; fi + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v `pwd`:/travis_home -e CONDA_UPLOAD_TOKEN=${CONDA_UPLOAD_TOKEN} -a STDOUT -a STDERR centos:6.8 /travis_home/scripts/conda_upload.sh ${TRAVIS_BRANCH} ; fi diff --git a/INSTALL b/INSTALL index ddab6931..7844fd01 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,6 @@ INSTALLATION INSTRUCTIONS ------------------------- -Climate Model Output Rewriter (CMOR) version 3.3.0 installation instructions. +Climate Model Output Rewriter (CMOR) version 3.3.1 installation instructions. DOWNLOAD @@ -13,7 +13,7 @@ cd CMOR INSTALLATION ------------ -CMOR 3.3.0 requires external packages that need to be installed first. +CMOR 3.3.1 requires external packages that need to be installed first. It can be compiled/linked against either NetCDF3 or NetCDF4. If you decide to go with NetCDF4 be sure to build NetCDF4 with the --enable-netcdf-4 option! diff --git a/Lib/__init__.py b/Lib/__init__.py index c0ddbfb9..9903232b 100644 --- a/Lib/__init__.py +++ b/Lib/__init__.py @@ -11,7 +11,8 @@ close, grid, set_grid_mapping, time_varying_grid_coordinate, dataset_json, set_cur_dataset_attribute, get_cur_dataset_attribute, has_cur_dataset_attribute, set_variable_attribute, get_variable_attribute, - has_variable_attribute, get_final_filename, set_deflate, set_furtherinfourl) + has_variable_attribute, get_final_filename, set_deflate, set_furtherinfourl, + set_climatology, get_climatology) try: from check_CMOR_compliant import checkCMOR diff --git a/Lib/pywrapper.py b/Lib/pywrapper.py index 3b135837..095da903 100644 --- a/Lib/pywrapper.py +++ b/Lib/pywrapper.py @@ -6,6 +6,9 @@ import _cmor from _cmor import CMORError +global climatology +climatology = False + try: import cdtime has_cdtime = True @@ -297,6 +300,16 @@ def set_grid_mapping(grid_id, mapping_name, parameter_names, pvals = numpy.ascontiguousarray(pvals).astype('d') return _cmor.set_grid_mapping(grid_id, mapping_name, pnms, pvals, punit) +def set_climatology(entry): + global climatology + if( entry == True ): + climatology = True + else: + climatology = False + +def get_climatology(): + global climatology + return climatology def axis(table_entry, units=None, length=None, coord_vals=None, cell_bounds=None, interval=None): @@ -321,6 +334,9 @@ def axis(table_entry, units=None, length=None, raise Exception( "You need to pass a table_entry to match in the cmor table") + if(table_entry in ['time2', 'time3']): + set_climatology(True) + if coord_vals is None: if cell_bounds is not None: raise Exception("you passed cell_bounds but no coords") @@ -740,7 +756,7 @@ def write(var_id, data, ntimes_passed=None, file_suffix="", data = numpy.ascontiguousarray(numpy.ravel(data)) - if time_bnds is not None: + if time_bnds is not None: if numpy.ma.isMA(time_bnds): time_bnds = numpy.ascontiguousarray(time_bnds.filled()) elif has_oldma and numpy.oldnumeric.ma.isMA(time_bnds): @@ -762,7 +778,7 @@ def write(var_id, data, ntimes_passed=None, file_suffix="", raise Exception( "error time_bnds' 2nd dimension must be of length 2") bnds = [] - if time_bnds.shape[0] > 1: + if time_bnds.shape[0] > 1 and get_climatology() is False: _check_time_bounds_contiguous(time_bnds) bnds = _flatten_time_bounds(time_bnds) else: diff --git a/LibCV/PrePARE/PrePARE.py b/LibCV/PrePARE/PrePARE.py index d9e3928c..a3ff6170 100644 --- a/LibCV/PrePARE/PrePARE.py +++ b/LibCV/PrePARE/PrePARE.py @@ -1,4 +1,4 @@ -#!/user/bin/env python +#!/usr/bin/env python # -*- coding: utf-8 -*- # # Please first complete the following steps: @@ -15,16 +15,21 @@ Created on Fri Feb 19 11:33:52 2016 @author: Denis Nadeau LLNL +@co-author: Guillaume Levavasseur (IPSL) Parallelization ''' +import re import sys +from contextlib import contextmanager + # Make sure cdms2.__init__py is not loaded when importing Cdunif -sys.path.insert(0,sys.prefix+"/lib/python2.7/site-packages/cdms2") +sys.path.insert(0, sys.prefix + "/lib/python2.7/site-packages/cdms2") import Cdunif import argparse import os import json import numpy import cmip6_cv +from multiprocessing import Pool class bcolors: @@ -40,8 +45,6 @@ class bcolors: # ========================= # FILEAction() # ========================= - - class FILEAction(argparse.Action): ''' Check if argparse is JSON file @@ -60,8 +63,6 @@ def __call__(self, parser, namespace, values, option_string=None): # ========================= # JSONAction() # ========================= - - class JSONAction(argparse.Action): ''' Check if argparse is JSON file @@ -95,7 +96,7 @@ def __call__(self, parser, namespace, values, option_string=None): if not os.path.isfile(fn): raise argparse.ArgumentTypeError( 'CDMSAction:{0} does not exist'.format(fn)) - f = Cdunif.CdunifFile(fn,"r") + f = Cdunif.CdunifFile(fn, "r") f.close() setattr(namespace, self.dest, fn) @@ -120,6 +121,102 @@ def __call__(self, parser, namespace, values, option_string=None): 'readable_dir:{0} is not a readable dir'.format(prospective_dir)) +# ========================= +# DIRAction() +# ========================= +class DIRECTORYAction(argparse.Action): + ''' + Check if argparse is a directory. + ''' + + def __call__(self, parser, namespace, values, option_string=None): + prospective = values + if not os.path.isdir(prospective): + if not os.path.isfile(prospective): + raise argparse.ArgumentTypeError( + 'No such file/directory: {}'.format(prospective)) + + if os.access(prospective, os.R_OK): + setattr(namespace, self.dest, prospective) + else: + raise argparse.ArgumentTypeError( + 'Read access denied: {}'.format(prospective)) + + +# ========================= +# INPUTAction() +# ========================= +class INPUTAction(argparse.Action): + ''' + Checks if the supplied input exists. + ''' + + def __call__(self, parser, namespace, values, option_string=None): + checked_values = [self.input_checker(x) for x in values] + setattr(namespace, self.dest, checked_values) + + @staticmethod + def input_checker(path): + path = os.path.abspath(os.path.normpath(path)) + if not os.path.exists(path): + msg = 'No such input: {}'.format(path) + raise argparse.ArgumentTypeError(msg) + return path + + +# ========================= +# Collector() +# ========================= +class Collector(object): + """ + Base collector class to yield regular NetCDF files. + + :param list sources: The list of sources to parse + :returns: The data collector + :rtype: *iter* + """ + + def __init__(self, sources, data=None): + self.sources = sources + self.data = data + assert isinstance(self.sources, list) + + def __iter__(self): + for source in self.sources: + if os.path.isdir(source): + # If input is a directory: walk through it and yields netCDF + # files + for root, _, filenames in os.walk(source, followlinks=True): + for filename in sorted(filenames): + ffp = os.path.join(root, filename) + if os.path.isfile(ffp) and re.search( + re.compile('^.*\.nc$'), filename): + yield (ffp, self.data) + else: + # It input is a file: yields the netCDF file itself + yield (source, self.data) + + +# ========================= +# Spinner() +# ========================= +class Spinner: + """ + Spinner pending files checking. + + """ + STATES = ('/', '-', '\\', '|') + step = 0 + + def __init__(self): + self.next() + + def next(self): + sys.stdout.write('\rChecking data... {}'.format( + Spinner.STATES[Spinner.step % 4])) + sys.stdout.flush() + Spinner.step += 1 + # ========================= # checkCMIP6() # ========================= @@ -144,16 +241,15 @@ class checkCMIP6(object): # ************************* # __init__() # ************************* - def __init__(self, args): + def __init__(self, table_path): # ------------------------------------------------------------------- - # Initilaze arrays + # Initilaze table path # ------------------------------------------------------------------- - self.cmip6_table = args.cmip6_table + self.cmip6_table_path = os.path.normpath(table_path) # ------------------------------------------------------------------- # call setup() to clean all 'C' internal memory. # ------------------------------------------------------------------- cmip6_cv.setup(inpath="../Tables", exit_control=cmip6_cv.CMOR_NORMAL) - # ------------------------------------------------------------------- # Set Control Vocabulary file to use (default from cmor.h) # ------------------------------------------------------------------- @@ -176,20 +272,33 @@ def __init__(self, args): cmip6_cv.CMOR_FORMULA_VAR_FILE, "CMIP6_formula_terms.json") + @staticmethod + def _get_variable_from_filename(f): + return f.split('_')[0] - # ------------------------------------------------------------------- - # Load CMIP6 table into memory - # ------------------------------------------------------------------- - self.table_id = cmip6_cv.load_table(self.cmip6_table) + @staticmethod + def _get_table_from_filename(f): + return f.split('_')[1] + + @staticmethod + def _check_JSON_table(path): + f = open(path) + lines = f.readlines() + f.close() + jsonobject = json.loads(" ".join(lines)) + if not jsonobject: + raise argparse.ArgumentTypeError( + 'Invalid JSON CMOR table: {}'.format(path)) def setDoubleValue(self, attribute): - if(cmip6_cv.has_cur_dataset_attribute(attribute)): - if(isinstance(self.dictGbl[attribute], numpy.ndarray) and isinstance(self.dictGbl[attribute][0], numpy.float64)): + if (cmip6_cv.has_cur_dataset_attribute(attribute)): + if (isinstance(self.dictGbl[attribute], numpy.ndarray) and isinstance(self.dictGbl[attribute][0], + numpy.float64)): self.dictGbl[attribute] = self.dictGbl[attribute][0] cmip6_cv.set_cur_dataset_attribute( attribute, self.dictGbl[attribute]) - def ControlVocab(self,args): + def ControlVocab(self, ncfile): ''' Check CMIP6 global attributes against Control Vocabulary file. @@ -207,12 +316,40 @@ def ControlVocab(self,args): 10. Validate sub_experiment_* atributes. 11. Validate that all *_index are integers. ''' - self.variable = args.variable - self.infile = args.infile + filename = os.path.basename(ncfile) + # ------------------------------------------------------------------- + # Initilaze arrays + # ------------------------------------------------------------------- + if os.path.isfile(self.cmip6_table_path): + self.cmip6_table = self.cmip6_table_path + else: + self.cmip6_table = '{}/CMIP6_{}.json'.format( + self.cmip6_table_path, self._get_table_from_filename(filename)) + + self._check_JSON_table(self.cmip6_table) + # ------------------------------------------------------------------- + # Load CMIP6 table into memory + # ------------------------------------------------------------------- + self.table_id = cmip6_cv.load_table(self.cmip6_table) + # ------------------------------------------------------------------- + # Deduce variable + # ------------------------------------------------------------------- + self.variable = self._get_variable_from_filename(filename) + climatology = False + if( filename.find('-clim') != -1 ): + climatology = True + if( self.cmip6_table.find('Amon') != -1): + self.variable = self.variable + 'Clim' + + # ------------------------------------------------------------------- + # Open file in processing + # ------------------------------------------------------------------- + self.infile = Cdunif.CdunifFile(ncfile, "r") # ------------------------------------- # Create alist of all Global Attributes # ------------------------------------- - self.dictGbl = {key: self.infile.__dict__[key] for key in self.infile.__dict__.keys()} + self.dictGbl = {key: self.infile.__dict__[ + key] for key in self.infile.__dict__.keys()} self.attributes = self.infile.__dict__.keys() self.variables = self.infile.variables.keys() ierr = [ @@ -221,16 +358,14 @@ def ControlVocab(self,args): value) for key, value in self.dictGbl.iteritems()] member_id = "" - if("sub_experiment_id" in self.dictGbl.keys() ): - if(self.dictGbl["sub_experiment_id"] not in ["none"]): - member_id = self.dictGbl["sub_experiment_id"] + \ - '-' + self.dictGbl["variant_label"] - else: - member_id = self.dictGbl["variant_label"] - + if ("sub_experiment_id" in self.dictGbl.keys()): + if (self.dictGbl["sub_experiment_id"] not in ["none"]): + member_id = self.dictGbl["sub_experiment_id"] + \ + '-' + self.dictGbl["variant_label"] + else: + member_id = self.dictGbl["variant_label"] cmip6_cv.set_cur_dataset_attribute( cmip6_cv.GLOBAL_ATT_MEMBER_ID, member_id) - self.setDoubleValue('branch_time_in_parent') self.setDoubleValue('branch_time_in_child') if self.variable is not None: @@ -241,7 +376,11 @@ def ControlVocab(self,args): # ------------------------------------------------------------------- self.var = [self.infile.variable_id] - if((self.var == []) or (len(self.var) > 1)): + climPos = self.var[0].find('Clim') + if climatology and climPos != -1: + self.var = [self.var[0][:climPos]] + + if ((self.var == []) or (len(self.var) > 1)): print bcolors.FAIL print "!!!!!!!!!!!!!!!!!!!!!!!!!" print "! Error: The input file does not have an history attribute and the CMIP6 variable could not be found" @@ -249,7 +388,6 @@ def ControlVocab(self,args): print "! Check your file or use CMOR 3.x to achieve compliance for ESGF publication." print "!!!!!!!!!!!!!!!!!!!!!!!!!" print bcolors.ENDC - raise KeyboardInterrupt try: @@ -261,8 +399,7 @@ def ControlVocab(self,args): print "! Check your file variables " print "!!!!!!!!!!!!!!!!!!!!!!!!!" print bcolors.ENDC - - raise + raise KeyboardInterrupt # ------------------------------------------------------------------- # Create a dictionnary of attributes for var @@ -286,32 +423,41 @@ def ControlVocab(self,args): cmip6_cv.check_furtherinfourl(self.table_id) cmip6_cv.check_parentExpID(self.table_id) cmip6_cv.check_subExpID(self.table_id) + try: - startimebnds = self.infile.variables['time_bnds'][0][0] - endtimebnds = self.infile.variables['time_bnds'][-1][1] + if climatology: + startimebnds = self.infile.variables['climatology_bnds'][0][0] + endtimebnds = self.infile.variables['climatology_bnds'][-1][1] + else: + startimebnds = self.infile.variables['time_bnds'][0][0] + endtimebnds = self.infile.variables['time_bnds'][-1][1] except BaseException: startimebnds = 0 endtimebnds = 0 + try: startime = self.infile.variables['time'][0] endtime = self.infile.variables['time'][-1] except BaseException: startime = 0 endtime = 0 + varunits = self.infile.variables[self.var[0]].units varmissing = self.infile.variables[self.var[0]]._FillValue[0] - varid = cmip6_cv.setup_variable(self.var[0], varunits, varmissing, startime, endtime, + # ------------------------------------------------- + # Make sure with use self.variable for Climatology + # ------------------------------------------------- + varid = cmip6_cv.setup_variable(self.variable, varunits, varmissing, startime, endtime, startimebnds, endtimebnds) - if(varid == -1): + if (varid == -1): print bcolors.FAIL print "=====================================================================================" print " Could not find variable '%s' in table '%s' " % (self.var[0], self.cmip6_table) print "=====================================================================================" print bcolors.ENDC cmip6_cv.set_CV_Error() - return - -# fn = os.path.basename(self.infile.id) + raise KeyboardInterrupt + fn = os.path.basename(str(self.infile).split('\'')[1]) cmip6_cv.check_filename( self.table_id, @@ -320,6 +466,22 @@ def ControlVocab(self,args): self.timeunits, fn) + if not isinstance(self.dictGbl['branch_time_in_child'], numpy.float64): + print bcolors.FAIL + print "=====================================================================================" + print "branch_time_in_child is not a double: ", type(self.dictGbl['branch_time_in_child']) + print "=====================================================================================" + print bcolors.ENDC + cmip6_cv.set_CV_Error() + + if not isinstance(self.dictGbl['branch_time_in_parent'], numpy.float64): + print bcolors.FAIL + print "=====================================================================================" + print "branch_time_in_parent is not an double: ", type(self.dictGbl['branch_time_in_parent']) + print "=====================================================================================" + print bcolors.ENDC + cmip6_cv.set_CV_Error() + if not isinstance(self.dictGbl['realization_index'], numpy.ndarray): print bcolors.FAIL print "=====================================================================================" @@ -327,6 +489,7 @@ def ControlVocab(self,args): print "=====================================================================================" print bcolors.ENDC cmip6_cv.set_CV_Error() + if not isinstance(self.dictGbl['initialization_index'], numpy.ndarray): print bcolors.FAIL print "=====================================================================================" @@ -334,6 +497,7 @@ def ControlVocab(self,args): print "=====================================================================================" print bcolors.ENDC cmip6_cv.set_CV_Error() + if not isinstance(self.dictGbl['physics_index'], numpy.ndarray): print bcolors.FAIL print "=====================================================================================" @@ -341,6 +505,7 @@ def ControlVocab(self,args): print "=====================================================================================" print bcolors.ENDC cmip6_cv.set_CV_Error() + if not isinstance(self.dictGbl['forcing_index'], numpy.ndarray): print bcolors.FAIL print "=====================================================================================" @@ -349,6 +514,9 @@ def ControlVocab(self,args): print bcolors.ENDC cmip6_cv.set_CV_Error() + # ----------------------------- + # variable attribute comparison + # ----------------------------- prepLIST = cmip6_cv.list_variable_attributes(varid) for key in prepLIST: if(key == "long_name"): @@ -360,17 +528,30 @@ def ControlVocab(self,args): # Verify that attribute value is equal to file attribute table_value = prepLIST[key] file_value = self.dictVars[key] + + # PrePARE accept units of 1 or 1.0 so adjust thet table_value + # ----------------------------------------------------------- + if(key == "units"): + if((table_value == "1") and (file_value == "1.0")): + table_value = "1.0" + if((table_value == "1.0") and (file_value == "1")): + table_value = "1" + + if isinstance(table_value, str) and isinstance(file_value, numpy.ndarray): + if(numpy.array([int(value) for value in table_value.split()] == file_value).all()): + file_value=True + table_value=True + if isinstance(table_value, numpy.ndarray): table_value = table_value[0] if isinstance(file_value, numpy.ndarray): file_value = file_value[0] - if isinstance(table_value, float): - if(file_value == 0): + if(file_value == 0): if(table_value != file_value): file_value = False else: - if(1-(table_value / file_value) < 0.00001): + if(1 - (table_value / file_value) < 0.00001): table_value = file_value if key == "cell_methods": @@ -378,13 +559,12 @@ def ControlVocab(self,args): file_value = file_value[:idx] table_value = table_value[:idx] - file_value = str(file_value) table_value = str(table_value) if table_value != file_value: print bcolors.FAIL print "=====================================================================================" - print "You file contains \"" + key + "\":\"" + str(file_value) + "\" and" + print "Your file contains \"" + key + "\":\"" + str(file_value) + "\" and" print "CMIP6 tables requires \"" + key + "\":\"" + str(table_value) + "\"." print "=====================================================================================" print bcolors.ENDC @@ -408,40 +588,105 @@ def ControlVocab(self,args): if(cmip6_cv.get_CV_Error()): raise KeyboardInterrupt + else: + print bcolors.OKGREEN + print "*************************************************************************************" + print "* This file is compliant with the CMIP6 specification and can be published in ESGF *" + print "*************************************************************************************" + print bcolors.ENDC + - pass - print bcolors.OKGREEN +def process(source): + # Redirect all print statements to a logfile dedicated to the current + # process + logfile = '/tmp/PrePARE-{}.log'.format(os.getpid()) + with RedirectedOutput(logfile): + try: + # Deserialize inputs + ncfile, table_path = source + print "Processing: {}\n".format(ncfile) + # Process file + checker = checkCMIP6(table_path) + checker.ControlVocab(ncfile) + except KeyboardInterrupt: + print bcolors.FAIL + print "*************************************************************************************" + print "* Error: The input file is not CMIP6 compliant *" + print "* Check your file or use CMOR 3.x to achieve compliance for ESGF publication *" + print "*************************************************************************************" + print bcolors.ENDC + finally: + # Close opened file + if hasattr(checker, "infile"): + checker.infile.close() + # Close and return logfile + return logfile + + +def sequential_process(source): + try: + # Deserialize inputs + ncfile, table_path = source + print "Processing: {}\n".format(ncfile) + # Process file + checker = checkCMIP6(table_path) + checker.ControlVocab(ncfile) + except KeyboardInterrupt: + print bcolors.FAIL print "*************************************************************************************" - print "* This file is compliant with the CMIP6 specification and can be published in ESGF. *" + print "* Error: The input file is not CMIP6 compliant *" + print "* Check your file or use CMOR 3.x to achieve compliance for ESGF publication *" print "*************************************************************************************" print bcolors.ENDC - + finally: + # Close opened file + if hasattr(checker, "infile"): + checker.infile.close() # ========================= # main() # ========================= + + def main(): parser = argparse.ArgumentParser(prog='PrePARE', description='Validate CMIP6 file ' - 'for ESGF publication.') + 'for ESGF publication.') parser.add_argument('--variable', help='specify geophysical variable name') - parser.add_argument('cmip6_table', - help='CMIP6 CMOR table (JSON file) ex: Tables/CMIP6_Amon.json', - action=JSONAction) - parser.add_argument('infile', - help='Input CMIP6 netCDF file to Validate ex: clisccp_cfMon_DcppC22_NICAM_gn_200001-200001.nc', - action=CDMSAction) + parser.add_argument('--table_path', + help='Specify the CMIP6 CMOR tables path (JSON file).' + 'Default is "./Tables".', + action=DIRECTORYAction, + default='./Tables') - parser.add_argument('outfile', - nargs='?', - help='Output file (default stdout)', - type=argparse.FileType('w'), - default=sys.stdout) + parser.add_argument('--max-threads', + type=int, + default=1, + help='Number of maximal threads to simultaneously process several files.' + 'Default is one as sequential processing.') + parser.add_argument('cmip6_table', + help='Specify the CMIP6 CMOR tables path (JSON file) or CMIP6 table file.' + 'Default is "./Tables".', + action=DIRECTORYAction, + default='./Tables') + + parser.add_argument('input', + help='Input CMIP6 netCDF data to validate (ex: clisccp_cfMon_DcppC22_NICAM_gn_200001-200001.nc.' + 'If a directory is submitted all netCDF recusively found will be validate independently.', + nargs='+', + action=INPUTAction) + +# parser.add_argument('outfile', +# help='Output file (default stdout)', +# type=argparse.FileType('w'), +# default=sys.stdout) + + # Check command-line error try: args = parser.parse_args() except argparse.ArgumentTypeError as errmsg: @@ -450,35 +695,58 @@ def main(): except SystemExit: return 1 - process = checkCMIP6(args) + if hasattr(args,"table_path"): + cmip6_table=args.table_path + + # Collects netCDF files for process + sources = Collector(args.input, data=args.cmip6_table) + if args.max_threads > 1: + # Create pool of processes + pool = Pool(int(args.max_threads)) + # Run processes + logfiles = list() + progress = Spinner() + for logfile in pool.imap(process, sources): + progress.next() + logfiles.append(logfile) + sys.stdout.write('\r\033[K') + sys.stdout.flush() + # Print results from logfiles and remove them + for logfile in set(logfiles): + with open(logfile, 'r') as f: + print f.read() + os.remove(logfile) + # Close pool of processes + pool.close() + pool.join() + else: + for source in sources: + sequential_process(source) + + +@contextmanager +def RedirectedOutput(to=os.devnull): + fd_out = sys.stdout.fileno() + old_stdout = os.fdopen(os.dup(fd_out), 'w') + fd_err = sys.stderr.fileno() + old_stderr = os.fdopen(os.dup(fd_err), 'w') + stream = open(to, 'w') + sys.stdout.close() + sys.stderr.close() + os.dup2(stream.fileno(), fd_out) + os.dup2(stream.fileno(), fd_err) + sys.stdout = os.fdopen(fd_out, 'w') + sys.stderr = os.fdopen(fd_err, 'w') try: - print "processing: ", args.infile - args.infile = Cdunif.CdunifFile(args.infile,"r") - process.ControlVocab(args) - args.infile.close() - - except KeyboardInterrupt: - print bcolors.FAIL - print "!!!!!!!!!!!!!!!!!!!!!!!!!" - print "! Error: The input file is not CMIP6 compliant" - print "! Check your file or use CMOR 3.x to achieve compliance for ESGF publication." - print "!!!!!!!!!!!!!!!!!!!!!!!!!" - print bcolors.ENDC -# sys.exit(-1) - return(0) - - -if(__name__ == '__main__'): - try: - sys.exit(main()) - - except KeyboardInterrupt: - print bcolors.FAIL - print "!!!!!!!!!!!!!!!!!!!!!!!!!" - print "! Error: The input file is not CMIP6 compliant" - print "! Check your file or use CMOR 3.x to achieve compliance for ESGF publication." - print "!!!!!!!!!!!!!!!!!!!!!!!!!" - print bcolors.ENDC - sys.exit(-1) - except BaseException: - sys.exit(-1) + yield + finally: + sys.stdout.close() + sys.stderr.close() + os.dup2(old_stdout.fileno(), fd_out) + os.dup2(old_stderr.fileno(), fd_err) + sys.stdout = os.fdopen(fd_out, 'w') + sys.stderr = os.fdopen(fd_err, 'w') + + +if (__name__ == '__main__'): + sys.exit(main()) diff --git a/Makefile.in b/Makefile.in index 3443c8a8..0c30522b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -162,6 +162,7 @@ test_a_python: @echo "${OK_COLOR}Testing ${TEST_NAME} ${NO_COLOR}" ${PYTHONEXEC} ${TEST_NAME} ${VERB} test_python: python + env TEST_NAME=Test/test_python_climatology.py make test_a_python env TEST_NAME=Test/test_python_history.py make test_a_python env TEST_NAME=Test/test_python_historydefault.py make test_a_python env TEST_NAME=Test/test_python_test_write.py make test_a_python @@ -284,6 +285,7 @@ test_fortran_old_cmor_tables: cmor @env TEST_NAME="test_shrt_exp_nm_set_att_initi" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables @env TEST_NAME="test_sophie" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables test_fortran: cmor + env TEST_NAME="test_cmor_fx_basin" INPUT_FILE="Test/noinput" make test_case env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/tas_3D_noreorder.input" make test_case env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy.input" make test_case env TEST_NAME="test_any_from_asc" INPUT_FILE="Test/3D_txy_split_lon.input" make test_case diff --git a/README.md b/README.md index cc9fb030..2fcc77cb 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ Climate Model Output Rewriter CMOR 3.3 documentation can be found here: http://cmor.llnl.gov -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1115862.svg)](https://doi.org/10.5281/zenodo.1115862) -[![stable version](https://img.shields.io/badge/stable%20version-3.3.0-brightgreen.svg)](https://github.com/PCMDI/cmor/releases/tag/cmor-3.3.0) + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1044063.svg)](https://doi.org/10.5281/zenodo.1044063) +[![stable version](https://img.shields.io/badge/stable%20version-3.3.1-brightgreen.svg)](https://github.com/PCMDI/cmor/releases/tag/cmor-3.3.1) ![platforms](https://img.shields.io/badge/platforms-linux%20|%20osx-lightgrey.svg) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/cmor/badges/installer/conda.svg)](https://conda.anaconda.org/pcmdi) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/cmor/badges/downloads.svg)](https://anaconda.org/pcmdi) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 63249db3..b42569a3 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -1,3 +1,4 @@ +2018-02-14 : Release 3.3.1 2018-12-12 : Release 3.3.0 2018-11-08 : Release 3.2.8 2018-09-14 : Release 3.2.7 diff --git a/Src/_controlvocabulary.c b/Src/_controlvocabulary.c index 1e3c5fbc..0994b0d7 100644 --- a/Src/_controlvocabulary.c +++ b/Src/_controlvocabulary.c @@ -556,6 +556,7 @@ static PyObject *PyCV_setup_variable(PyObject * self, PyObject * args) char *name; char *units; float missing; + int imissing; double startime; double endtime; double startimebnds; diff --git a/Src/cmor.c b/Src/cmor.c index 1756f7f4..0ce84c5a 100644 --- a/Src/cmor.c +++ b/Src/cmor.c @@ -1465,6 +1465,22 @@ int cmor_set_cur_dataset_attribute_internal(char *name, char *value, return (1); } + +// // clear attribute + if ((strcmp(value,"") == 0) && (optional == 0)){ + for (i = 0; i <= cmor_current_dataset.nattributes; i++) { + if (strcmp(name, cmor_current_dataset.attributes[i].names) == 0) { + n = i; + break; + } + } + if (i != cmor_current_dataset.nattributes - 1) { + strcpy(cmor_current_dataset.attributes[i].values, ""); + cmor_pop_traceback(); + return (0); + } + } + if ((value == NULL) || (msg[0] == '\0')) { if (optional == 1) { cmor_pop_traceback(); @@ -1479,6 +1495,7 @@ int cmor_set_cur_dataset_attribute_internal(char *name, char *value, } } + cmor_trim_string(name, msg); n = cmor_current_dataset.nattributes; @@ -2744,7 +2761,7 @@ int cmor_setGblAttr(int var_id) /* -------------------------------------------------------------------- */ /* Set attribute data_specs_versions for netCDF file (CMIP6) */ /* -------------------------------------------------------------------- */ - if (cmor_tables[nVarRefTblID].data_specs_version != '\0') { + if (cmor_tables[nVarRefTblID].data_specs_version[0] != '\0') { snprintf(msg, CMOR_MAX_STRING, "%s", cmor_tables[nVarRefTblID].data_specs_version); cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_DATASPECSVERSION, @@ -2830,6 +2847,13 @@ int cmor_setGblAttr(int var_id) 0); } cmor_generate_uuid(); + ctmp[0]='\0'; +/* -------------------------------------------------------------------- */ +/* Initialize externa_variables attribute */ +/* -------------------------------------------------------------------- */ + cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_EXTERNAL_VAR, + "", 0); + /* -------------------------------------------------------------------- */ /* Create external_variables */ /* -------------------------------------------------------------------- */ @@ -3199,7 +3223,8 @@ void cmor_write_all_attributes(int ncid, int ncafid, int var_id) /* -------------------------------------------------------------------- */ /* Skip attributes starting with "_" */ /* -------------------------------------------------------------------- */ - if (cmor_current_dataset.attributes[i].names[0] != '_') { + if ((cmor_current_dataset.attributes[i].names[0] != '_') + && (cmor_current_dataset.attributes[i].values[0] != '\0')) { ierr = nc_put_att_text(ncid, NC_GLOBAL, cmor_current_dataset.attributes[i].names, itmp2, @@ -3465,7 +3490,7 @@ void cmor_define_dimensions(int var_id, int ncid, cname); if (ctmp[0] == '\0') { - strcpy(ctmp, "geo_region"); + strcpy(ctmp, "sector"); } if (cmor_has_variable_attribute(var_id, "coordinates") == 0) { diff --git a/Src/cmor_CV.c b/Src/cmor_CV.c index 9468062d..458fb35a 100644 --- a/Src/cmor_CV.c +++ b/Src/cmor_CV.c @@ -654,6 +654,15 @@ int cmor_CV_checkSourceID(cmor_CV_def_t * CV) } // Check source with experiment_id label. rc = cmor_get_cur_dataset_attribute(GLOBAL_ATT_SOURCE, szSource); + if(CV_source_id->nbObjects == -1) { + snprintf(msg, CMOR_MAX_STRING, + "You did not define a %s section in your source_id %s.\n! \n! \n! " + "See Control Vocabulary JSON file. (%s)\n! ", + CV_KEY_SOURCE_LABEL, szSource_ID, CV_Filename); + cmor_handle_error(msg, CMOR_WARNING); + return(1); + break; + } for (j = 0; j < CV_source_id->nbObjects; j++) { if (strcmp(CV_source_id->oValue[j].key, CV_KEY_SOURCE_LABEL) == 0) { @@ -1491,16 +1500,17 @@ int cmor_CV_checkFilename(cmor_CV_def_t * CV, int var_id, cdCompTime comptime; int i, j, n; int timeDim; + int refvarid; cdCompTime starttime, endtime; int axis_id; - + refvarid = cmor_vars[var_id].ref_var_id; outname[0] = '\0'; cmor_CreateFromTemplate(0, cmor_current_dataset.file_template, outname, "_"); cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename); timeDim = -1; - for (i = 0; i < cmor_tables[0].vars[0].ndims; i++) { - int dim = cmor_tables[0].vars[0].dimensions[i]; + for (i = 0; i < cmor_tables[0].vars[refvarid].ndims; i++) { + int dim = cmor_tables[0].vars[refvarid].dimensions[i]; if (cmor_tables[0].axes[dim].axis == 'T') { timeDim = dim; break; @@ -2456,16 +2466,27 @@ int cmor_CV_variable(int *var_id, char *name, char *units, float *missing, } } - if (refvar.type == '\0') { - cmor_vars[vrid].type = 'f'; + if (refvar.type == 'i') { + int nMissing; + nMissing = (int) *missing; + cmor_vars[vrid].type = 'i'; + cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_MISSINGVALUES, + 'i', &nMissing); + cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_FILLVAL, 'i', + &nMissing); } else { - cmor_vars[vrid].type = refvar.type; + if (refvar.type == '\0') { + cmor_vars[vrid].type = 'f'; + } + else { + cmor_vars[vrid].type = refvar.type; + } + cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_MISSINGVALUES, + 'f', missing); + cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_FILLVAL, 'f', + missing); } - cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_MISSINGVALUES, - 'f', missing); - cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_FILLVAL, 'f', - missing); cmor_vars[vrid].self = vrid; *var_id = vrid; diff --git a/Src/cmor_tables.c b/Src/cmor_tables.c index 603d2c6d..458dcadb 100644 --- a/Src/cmor_tables.c +++ b/Src/cmor_tables.c @@ -522,7 +522,7 @@ int cmor_set_table(int table) snprintf(msg, CMOR_MAX_STRING, "Invalid table number: %i", table); cmor_handle_error(msg, CMOR_CRITICAL); } - if (cmor_tables[table].szTable_id == '\0') { + if (cmor_tables[table].szTable_id[0] == '\0') { snprintf(msg, CMOR_MAX_STRING, "Invalid table: %i , not loaded yet!", table); cmor_handle_error(msg, CMOR_CRITICAL); diff --git a/Src/cmor_variables.c b/Src/cmor_variables.c index e6781414..9cdc37f4 100644 --- a/Src/cmor_variables.c +++ b/Src/cmor_variables.c @@ -2950,7 +2950,7 @@ int cmor_write_var_to_file(int ncid, cmor_var_t * avar, void *data, if (cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].axes [cmor_axes[avar->axes_ids[0]].ref_axis_id].climatology == - 0) { + 1) { /* -------------------------------------------------------------------- */ /* all good in that case */ /* -------------------------------------------------------------------- */ diff --git a/Test/IPCC_test_table_O b/Test/IPCC_test_table_O index 8a8fed6b..1fe98ba4 100644 --- a/Test/IPCC_test_table_O +++ b/Test/IPCC_test_table_O @@ -251,7 +251,7 @@ long_name: Ocean Basin ! ! Additional axis information: !---------------------------------- -coords_attrib: geo_region +coords_attrib: section type: character requested: atlantic_ocean indian_ocean pacific_ocean global_ocean !---------------------------------- diff --git a/Test/test_cmor_fx_basin.f90 b/Test/test_cmor_fx_basin.f90 new file mode 100644 index 00000000..e07bdfc8 --- /dev/null +++ b/Test/test_cmor_fx_basin.f90 @@ -0,0 +1,208 @@ +program t_cmor_fx_basin + + use cmor_users_functions + + implicit none + + !--- Cmor variable/axis ID's + integer :: id_xaxis, id_yaxis, curr_vid + integer, allocatable :: dimids(:) + integer :: error_flag + + !--- Ocean grid + integer, parameter :: nlat_o=192, nlon_o=256 + double precision, dimension(nlat_o) :: lat_o + double precision, dimension(nlat_o+1) :: lat_o_bnds + double precision, dimension(nlon_o) :: lon_o + double precision, dimension(nlon_o+1) :: lon_o_bnds + integer, dimension(nlon_o,nlat_o) :: crap + !--- Misc +! character(256) :: outpath = 'CMIP6' +! character(1024) :: source = 'CanESM2 2010 atmosphere: CanAM4 (AGCM15i, T63L35)' +! character(1024) :: global_comment = ' ' +! character(1024) :: references = 'http://www.cccma.ec.gc.ca/models' +! character(1024) :: history = ' ' +! character(256) :: institution = & +! 'CCCma (Canadian Centre for Climate Modelling and Analysis, Victoria, BC, Canada)' +! character(64) :: institute_id = 'CCCma' +! character(64) :: experiment_id = 'piControl' +! character(64) :: contact = 'cccma_info@ec.gc.ca' +! character(64) :: time_units = 'days since 1850-1-1' +! character(64) :: calendar = '365_day' +! character(64) :: model_id = 'CanESM2' +! character(1024) :: forcing = 'N/A' +! character(64) :: parent_experiment_id = 'N/A' +! character(64) :: parent_experiment_rip = 'N/A' +! character(64) :: mip_table = 'CMIP5_Amon' + character(128) :: var_name = ' ' + character(128) :: var_units = 'K' + character(512) :: var_history = ' ' + character(512) :: var_comment = ' ' + character(512) :: var_positive = ' ' + double precision :: branch_time=0.d0 + + !=============================================================================== + !=============================================================================== + + error_flag = cmor_setup(inpath='Tables', & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR, & + create_subdirectories=1) + + if (error_flag.ne.0) then + write(6,*)'Error in cmor_setup: ',error_flag + stop + endif + + error_flag = cmor_dataset_json("Test/common_user_input.json") + + if (error_flag.ne.0) then + write(6,*)"Error in cmor_dataset: ",error_flag + stop + endif + + call def_ogrid(nlon_o, nlat_o, lon_o, lon_o_bnds, lat_o, lat_o_bnds) + + id_yaxis = cmor_axis( & + table="CMIP6_Ofx.json", & + table_entry='latitude', & + units='degrees_north', & + length=nlat_o, & + coord_vals=lat_o, & + cell_bounds=lat_o_bnds) + + id_xaxis = cmor_axis( & + table="CMIP6_Ofx.json", & + table_entry='longitude', & + length=nlon_o, & + units='degrees_east', & + coord_vals=lon_o, & + cell_bounds=lon_o_bnds) + + var_name = "basin" + ! var_name = "areacello" + + curr_vid = cmor_variable( & + table="CMIP6_Ofx.json", & + table_entry=trim(var_name), & + units="1", & + axis_ids=(/ id_xaxis, id_yaxis /), & + missing_value=2333, & + positive=trim(var_positive), & + original_name="BASIN", & + history=trim(var_history), & + comment=trim(var_comment) ) + + + error_flag = cmor_write(curr_vid,crap) + + error_flag = cmor_close() + + if (error_flag.ne.0) then + write(6,*)"Error in cmor_close: ",error_flag + stop + endif + +end program t_cmor_fx_basin + +subroutine def_ogrid(nlon_o, nlat_o, lon_o, lon_o_bnds, lat_o, lat_o_bnds) + integer :: nlon_o, nlat_o + double precision :: lon_o(nlon_o), lon_o_bnds(nlon_o+1), lat_o(nlat_o), lat_o_bnds(nlat_o+1) + + lon_o = (/ & + -7.0313D-01, 7.0313D-01, 2.1094D+00, 3.5156D+00, 4.9219D+00, 6.3281D+00, 7.7344D+00, 9.1406D+00, 1.0547D+01, 1.1953D+01 & +, 1.3359D+01, 1.4766D+01, 1.6172D+01, 1.7578D+01, 1.8984D+01, 2.0391D+01, 2.1797D+01, 2.3203D+01, 2.4609D+01, 2.6016D+01 & +, 2.7422D+01, 2.8828D+01, 3.0234D+01, 3.1641D+01, 3.3047D+01, 3.4453D+01, 3.5859D+01, 3.7266D+01, 3.8672D+01, 4.0078D+01 & +, 4.1484D+01, 4.2891D+01, 4.4297D+01, 4.5703D+01, 4.7109D+01, 4.8516D+01, 4.9922D+01, 5.1328D+01, 5.2734D+01, 5.4141D+01 & +, 5.5547D+01, 5.6953D+01, 5.8359D+01, 5.9766D+01, 6.1172D+01, 6.2578D+01, 6.3984D+01, 6.5391D+01, 6.6797D+01, 6.8203D+01 & +, 6.9609D+01, 7.1016D+01, 7.2422D+01, 7.3828D+01, 7.5234D+01, 7.6641D+01, 7.8047D+01, 7.9453D+01, 8.0859D+01, 8.2266D+01 & +, 8.3672D+01, 8.5078D+01, 8.6484D+01, 8.7891D+01, 8.9297D+01, 9.0703D+01, 9.2109D+01, 9.3516D+01, 9.4922D+01, 9.6328D+01 & +, 9.7734D+01, 9.9141D+01, 1.0055D+02, 1.0195D+02, 1.0336D+02, 1.0477D+02, 1.0617D+02, 1.0758D+02, 1.0898D+02, 1.1039D+02 & +, 1.1180D+02, 1.1320D+02, 1.1461D+02, 1.1602D+02, 1.1742D+02, 1.1883D+02, 1.2023D+02, 1.2164D+02, 1.2305D+02, 1.2445D+02 & +, 1.2586D+02, 1.2727D+02, 1.2867D+02, 1.3008D+02, 1.3148D+02, 1.3289D+02, 1.3430D+02, 1.3570D+02, 1.3711D+02, 1.3852D+02 & +, 1.3992D+02, 1.4133D+02, 1.4273D+02, 1.4414D+02, 1.4555D+02, 1.4695D+02, 1.4836D+02, 1.4977D+02, 1.5117D+02, 1.5258D+02 & +, 1.5398D+02, 1.5539D+02, 1.5680D+02, 1.5820D+02, 1.5961D+02, 1.6102D+02, 1.6242D+02, 1.6383D+02, 1.6523D+02, 1.6664D+02 & +, 1.6805D+02, 1.6945D+02, 1.7086D+02, 1.7227D+02, 1.7367D+02, 1.7508D+02, 1.7648D+02, 1.7789D+02, 1.7930D+02, 1.8070D+02 & +, 1.8211D+02, 1.8352D+02, 1.8492D+02, 1.8633D+02, 1.8773D+02, 1.8914D+02, 1.9055D+02, 1.9195D+02, 1.9336D+02, 1.9477D+02 & +, 1.9617D+02, 1.9758D+02, 1.9898D+02, 2.0039D+02, 2.0180D+02, 2.0320D+02, 2.0461D+02, 2.0602D+02, 2.0742D+02, 2.0883D+02 & +, 2.1023D+02, 2.1164D+02, 2.1305D+02, 2.1445D+02, 2.1586D+02, 2.1727D+02, 2.1867D+02, 2.2008D+02, 2.2148D+02, 2.2289D+02 & +, 2.2430D+02, 2.2570D+02, 2.2711D+02, 2.2852D+02, 2.2992D+02, 2.3133D+02, 2.3273D+02, 2.3414D+02, 2.3555D+02, 2.3695D+02 & +, 2.3836D+02, 2.3977D+02, 2.4117D+02, 2.4258D+02, 2.4398D+02, 2.4539D+02, 2.4680D+02, 2.4820D+02, 2.4961D+02, 2.5102D+02 & +, 2.5242D+02, 2.5383D+02, 2.5523D+02, 2.5664D+02, 2.5805D+02, 2.5945D+02, 2.6086D+02, 2.6227D+02, 2.6367D+02, 2.6508D+02 & +, 2.6648D+02, 2.6789D+02, 2.6930D+02, 2.7070D+02, 2.7211D+02, 2.7352D+02, 2.7492D+02, 2.7633D+02, 2.7773D+02, 2.7914D+02 & +, 2.8055D+02, 2.8195D+02, 2.8336D+02, 2.8477D+02, 2.8617D+02, 2.8758D+02, 2.8898D+02, 2.9039D+02, 2.9180D+02, 2.9320D+02 & +, 2.9461D+02, 2.9602D+02, 2.9742D+02, 2.9883D+02, 3.0023D+02, 3.0164D+02, 3.0305D+02, 3.0445D+02, 3.0586D+02, 3.0727D+02 & +, 3.0867D+02, 3.1008D+02, 3.1148D+02, 3.1289D+02, 3.1430D+02, 3.1570D+02, 3.1711D+02, 3.1852D+02, 3.1992D+02, 3.2133D+02 & +, 3.2273D+02, 3.2414D+02, 3.2555D+02, 3.2695D+02, 3.2836D+02, 3.2977D+02, 3.3117D+02, 3.3258D+02, 3.3398D+02, 3.3539D+02 & +, 3.3680D+02, 3.3820D+02, 3.3961D+02, 3.4102D+02, 3.4242D+02, 3.4383D+02, 3.4523D+02, 3.4664D+02, 3.4805D+02, 3.4945D+02 & +, 3.5086D+02, 3.5227D+02, 3.5367D+02, 3.5508D+02, 3.5648D+02, 3.5789D+02 /) + lon_o_bnds = (/ & + -1.4063D+00, 0.0000D+00, 1.4063D+00, 2.8125D+00, 4.2188D+00, 5.6250D+00, 7.0313D+00, 8.4375D+00, 9.8438D+00, 1.1250D+01 & +, 1.2656D+01, 1.4063D+01, 1.5469D+01, 1.6875D+01, 1.8281D+01, 1.9688D+01, 2.1094D+01, 2.2500D+01, 2.3906D+01, 2.5313D+01 & +, 2.6719D+01, 2.8125D+01, 2.9531D+01, 3.0938D+01, 3.2344D+01, 3.3750D+01, 3.5156D+01, 3.6563D+01, 3.7969D+01, 3.9375D+01 & +, 4.0781D+01, 4.2188D+01, 4.3594D+01, 4.5000D+01, 4.6406D+01, 4.7813D+01, 4.9219D+01, 5.0625D+01, 5.2031D+01, 5.3438D+01 & +, 5.4844D+01, 5.6250D+01, 5.7656D+01, 5.9063D+01, 6.0469D+01, 6.1875D+01, 6.3281D+01, 6.4688D+01, 6.6094D+01, 6.7500D+01 & +, 6.8906D+01, 7.0313D+01, 7.1719D+01, 7.3125D+01, 7.4531D+01, 7.5938D+01, 7.7344D+01, 7.8750D+01, 8.0156D+01, 8.1563D+01 & +, 8.2969D+01, 8.4375D+01, 8.5781D+01, 8.7188D+01, 8.8594D+01, 9.0000D+01, 9.1406D+01, 9.2813D+01, 9.4219D+01, 9.5625D+01 & +, 9.7031D+01, 9.8438D+01, 9.9844D+01, 1.0125D+02, 1.0266D+02, 1.0406D+02, 1.0547D+02, 1.0688D+02, 1.0828D+02, 1.0969D+02 & +, 1.1109D+02, 1.1250D+02, 1.1391D+02, 1.1531D+02, 1.1672D+02, 1.1813D+02, 1.1953D+02, 1.2094D+02, 1.2234D+02, 1.2375D+02 & +, 1.2516D+02, 1.2656D+02, 1.2797D+02, 1.2938D+02, 1.3078D+02, 1.3219D+02, 1.3359D+02, 1.3500D+02, 1.3641D+02, 1.3781D+02 & +, 1.3922D+02, 1.4063D+02, 1.4203D+02, 1.4344D+02, 1.4484D+02, 1.4625D+02, 1.4766D+02, 1.4906D+02, 1.5047D+02, 1.5188D+02 & +, 1.5328D+02, 1.5469D+02, 1.5609D+02, 1.5750D+02, 1.5891D+02, 1.6031D+02, 1.6172D+02, 1.6313D+02, 1.6453D+02, 1.6594D+02 & +, 1.6734D+02, 1.6875D+02, 1.7016D+02, 1.7156D+02, 1.7297D+02, 1.7438D+02, 1.7578D+02, 1.7719D+02, 1.7859D+02, 1.8000D+02 & +, 1.8141D+02, 1.8281D+02, 1.8422D+02, 1.8563D+02, 1.8703D+02, 1.8844D+02, 1.8984D+02, 1.9125D+02, 1.9266D+02, 1.9406D+02 & +, 1.9547D+02, 1.9688D+02, 1.9828D+02, 1.9969D+02, 2.0109D+02, 2.0250D+02, 2.0391D+02, 2.0531D+02, 2.0672D+02, 2.0813D+02 & +, 2.0953D+02, 2.1094D+02, 2.1234D+02, 2.1375D+02, 2.1516D+02, 2.1656D+02, 2.1797D+02, 2.1938D+02, 2.2078D+02, 2.2219D+02 & +, 2.2359D+02, 2.2500D+02, 2.2641D+02, 2.2781D+02, 2.2922D+02, 2.3063D+02, 2.3203D+02, 2.3344D+02, 2.3484D+02, 2.3625D+02 & +, 2.3766D+02, 2.3906D+02, 2.4047D+02, 2.4188D+02, 2.4328D+02, 2.4469D+02, 2.4609D+02, 2.4750D+02, 2.4891D+02, 2.5031D+02 & +, 2.5172D+02, 2.5313D+02, 2.5453D+02, 2.5594D+02, 2.5734D+02, 2.5875D+02, 2.6016D+02, 2.6156D+02, 2.6297D+02, 2.6438D+02 & +, 2.6578D+02, 2.6719D+02, 2.6859D+02, 2.7000D+02, 2.7141D+02, 2.7281D+02, 2.7422D+02, 2.7563D+02, 2.7703D+02, 2.7844D+02 & +, 2.7984D+02, 2.8125D+02, 2.8266D+02, 2.8406D+02, 2.8547D+02, 2.8688D+02, 2.8828D+02, 2.8969D+02, 2.9109D+02, 2.9250D+02 & +, 2.9391D+02, 2.9531D+02, 2.9672D+02, 2.9813D+02, 2.9953D+02, 3.0094D+02, 3.0234D+02, 3.0375D+02, 3.0516D+02, 3.0656D+02 & +, 3.0797D+02, 3.0938D+02, 3.1078D+02, 3.1219D+02, 3.1359D+02, 3.1500D+02, 3.1641D+02, 3.1781D+02, 3.1922D+02, 3.2063D+02 & +, 3.2203D+02, 3.2344D+02, 3.2484D+02, 3.2625D+02, 3.2766D+02, 3.2906D+02, 3.3047D+02, 3.3188D+02, 3.3328D+02, 3.3469D+02 & +, 3.3609D+02, 3.3750D+02, 3.3891D+02, 3.4031D+02, 3.4172D+02, 3.4313D+02, 3.4453D+02, 3.4594D+02, 3.4734D+02, 3.4875D+02 & +, 3.5016D+02, 3.5156D+02, 3.5297D+02, 3.5438D+02, 3.5578D+02, 3.5719D+02, 3.585937D+02 /) + lat_o = (/ & + -8.9430D+01,-8.8289D+01,-8.7148D+01,-8.6108D+01,-8.5167D+01,-8.4227D+01,-8.3290D+01,-8.2356D+01,-8.1422D+01,-8.0489D+01 & +,-7.9557D+01,-7.8624D+01,-7.7693D+01,-7.6761D+01,-7.5830D+01,-7.4898D+01,-7.3967D+01,-7.3036D+01,-7.2105D+01,-7.1174D+01 & +,-7.0244D+01,-6.9313D+01,-6.8382D+01,-6.7451D+01,-6.6521D+01,-6.5590D+01,-6.4660D+01,-6.3729D+01,-6.2798D+01,-6.1868D+01 & +,-6.0937D+01,-6.0007D+01,-5.9076D+01,-5.8146D+01,-5.7215D+01,-5.6285D+01,-5.5355D+01,-5.4424D+01,-5.3494D+01,-5.2563D+01 & +,-5.1633D+01,-5.0702D+01,-4.9772D+01,-4.8842D+01,-4.7911D+01,-4.6981D+01,-4.6051D+01,-4.5120D+01,-4.4190D+01,-4.3260D+01 & +,-4.2329D+01,-4.1399D+01,-4.0468D+01,-3.9538D+01,-3.8608D+01,-3.7677D+01,-3.6747D+01,-3.5817D+01,-3.4886D+01,-3.3956D+01 & +,-3.3026D+01,-3.2095D+01,-3.1165D+01,-3.0235D+01,-2.9305D+01,-2.8374D+01,-2.7444D+01,-2.6514D+01,-2.5583D+01,-2.4653D+01 & +,-2.3723D+01,-2.2792D+01,-2.1862D+01,-2.0932D+01,-2.0001D+01,-1.9071D+01,-1.8141D+01,-1.7211D+01,-1.6280D+01,-1.5350D+01 & +,-1.4420D+01,-1.3489D+01,-1.2559D+01,-1.1629D+01,-1.0698D+01,-9.7681D+00,-8.8378D+00,-7.9075D+00,-6.9772D+00,-6.0469D+00 & +,-5.1166D+00,-4.1863D+00,-3.2560D+00,-2.3257D+00,-1.3954D+00,-4.6515D-01, 4.6515D-01, 1.3954D+00, 2.3257D+00, 3.2560D+00 & +, 4.1863D+00, 5.1166D+00, 6.0469D+00, 6.9772D+00, 7.9075D+00, 8.8378D+00, 9.7681D+00, 1.0698D+01, 1.1629D+01, 1.2559D+01 & +, 1.3489D+01, 1.4420D+01, 1.5350D+01, 1.6280D+01, 1.7211D+01, 1.8141D+01, 1.9071D+01, 2.0001D+01, 2.0932D+01, 2.1862D+01 & +, 2.2792D+01, 2.3723D+01, 2.4653D+01, 2.5583D+01, 2.6514D+01, 2.7444D+01, 2.8374D+01, 2.9305D+01, 3.0235D+01, 3.1165D+01 & +, 3.2095D+01, 3.3026D+01, 3.3956D+01, 3.4886D+01, 3.5817D+01, 3.6747D+01, 3.7677D+01, 3.8608D+01, 3.9538D+01, 4.0468D+01 & +, 4.1399D+01, 4.2329D+01, 4.3260D+01, 4.4190D+01, 4.5120D+01, 4.6051D+01, 4.6981D+01, 4.7911D+01, 4.8842D+01, 4.9772D+01 & +, 5.0702D+01, 5.1633D+01, 5.2563D+01, 5.3494D+01, 5.4424D+01, 5.5355D+01, 5.6285D+01, 5.7215D+01, 5.8146D+01, 5.9076D+01 & +, 6.0007D+01, 6.0937D+01, 6.1868D+01, 6.2798D+01, 6.3729D+01, 6.4660D+01, 6.5590D+01, 6.6521D+01, 6.7451D+01, 6.8382D+01 & +, 6.9313D+01, 7.0244D+01, 7.1174D+01, 7.2105D+01, 7.3036D+01, 7.3967D+01, 7.4898D+01, 7.5830D+01, 7.6761D+01, 7.7693D+01 & +, 7.8624D+01, 7.9557D+01, 8.0489D+01, 8.1422D+01, 8.2356D+01, 8.3290D+01, 8.4227D+01, 8.5167D+01, 8.6108D+01, 8.7148D+01 & +, 8.8289D+01, 8.9430D+01 /) + lat_o_bnds = (/ & + -9.0000D+01,-8.8859D+01,-8.7718D+01,-8.6578D+01,-8.5638D+01,-8.4697D+01,-8.3757D+01,-8.2823D+01,-8.1889D+01,-8.0955D+01 & +,-8.0023D+01,-7.9091D+01,-7.8158D+01,-7.7227D+01,-7.6295D+01,-7.5364D+01,-7.4433D+01,-7.3502D+01,-7.2571D+01,-7.1640D+01 & +,-7.0709D+01,-6.9778D+01,-6.8847D+01,-6.7917D+01,-6.6986D+01,-6.6055D+01,-6.5125D+01,-6.4194D+01,-6.3264D+01,-6.2333D+01 & +,-6.1403D+01,-6.0472D+01,-5.9542D+01,-5.8611D+01,-5.7681D+01,-5.6750D+01,-5.5820D+01,-5.4889D+01,-5.3959D+01,-5.3028D+01 & +,-5.2098D+01,-5.1168D+01,-5.0237D+01,-4.9307D+01,-4.8377D+01,-4.7446D+01,-4.6516D+01,-4.5585D+01,-4.4655D+01,-4.3725D+01 & +,-4.2794D+01,-4.1864D+01,-4.0934D+01,-4.0003D+01,-3.9073D+01,-3.8143D+01,-3.7212D+01,-3.6282D+01,-3.5352D+01,-3.4421D+01 & +,-3.3491D+01,-3.2561D+01,-3.1630D+01,-3.0700D+01,-2.9770D+01,-2.8839D+01,-2.7909D+01,-2.6979D+01,-2.6048D+01,-2.5118D+01 & +,-2.4188D+01,-2.3258D+01,-2.2327D+01,-2.1397D+01,-2.0467D+01,-1.9536D+01,-1.8606D+01,-1.7676D+01,-1.6745D+01,-1.5815D+01 & +,-1.4885D+01,-1.3954D+01,-1.3024D+01,-1.2094D+01,-1.1164D+01,-1.0233D+01,-9.3030D+00,-8.3727D+00,-7.4424D+00,-6.5121D+00 & +,-5.5818D+00,-4.6515D+00,-3.7212D+00,-2.7909D+00,-1.8606D+00,-9.3030D-01, 2.8758D-08, 9.3030D-01, 1.8606D+00, 2.7909D+00 & +, 3.7212D+00, 4.6515D+00, 5.5818D+00, 6.5121D+00, 7.4424D+00, 8.3727D+00, 9.3030D+00, 1.0233D+01, 1.1164D+01, 1.2094D+01 & +, 1.3024D+01, 1.3954D+01, 1.4885D+01, 1.5815D+01, 1.6745D+01, 1.7676D+01, 1.8606D+01, 1.9536D+01, 2.0467D+01, 2.1397D+01 & +, 2.2327D+01, 2.3258D+01, 2.4188D+01, 2.5118D+01, 2.6048D+01, 2.6979D+01, 2.7909D+01, 2.8839D+01, 2.9770D+01, 3.0700D+01 & +, 3.1630D+01, 3.2561D+01, 3.3491D+01, 3.4421D+01, 3.5352D+01, 3.6282D+01, 3.7212D+01, 3.8143D+01, 3.9073D+01, 4.0003D+01 & +, 4.0934D+01, 4.1864D+01, 4.2794D+01, 4.3725D+01, 4.4655D+01, 4.5585D+01, 4.6516D+01, 4.7446D+01, 4.8377D+01, 4.9307D+01 & +, 5.0237D+01, 5.1168D+01, 5.2098D+01, 5.3028D+01, 5.3959D+01, 5.4889D+01, 5.5820D+01, 5.6750D+01, 5.7681D+01, 5.8611D+01 & +, 5.9542D+01, 6.0472D+01, 6.1403D+01, 6.2333D+01, 6.3264D+01, 6.4194D+01, 6.5125D+01, 6.6055D+01, 6.6986D+01, 6.7917D+01 & +, 6.8847D+01, 6.9778D+01, 7.0709D+01, 7.1640D+01, 7.2571D+01, 7.3502D+01, 7.4433D+01, 7.5364D+01, 7.6295D+01, 7.7227D+01 & +, 7.8158D+01, 7.9091D+01, 8.0023D+01, 8.0955D+01, 8.1889D+01, 8.2823D+01, 8.3757D+01, 8.4697D+01, 8.5638D+01, 8.6578D+01 & +, 8.7718D+01, 8.8859D+01, 9.0000D+01 /) +end subroutine def_ogrid diff --git a/Test/test_non_monotonic_climo_bonds_ok.py b/Test/test_non_monotonic_climo_bonds_ok.py index 10f0cdbd..a3ae24b2 100644 --- a/Test/test_non_monotonic_climo_bonds_ok.py +++ b/Test/test_non_monotonic_climo_bonds_ok.py @@ -9,25 +9,21 @@ def path_test(): cmor.setup(inpath='TestTables', netcdf_file_action=cmor.CMOR_REPLACE) - cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day', model_id='HadCM3', forcing='Nat', - contact="J.T. Snow", - institute_id="PCMDI", - parent_experiment_id="N/A", - parent_experiment_rip="N/A", - branch_time=0) + cmor.dataset_json("Test/common_user_input.json") + table = 'CMIP6_Amon.json' cmor.load_table(table) axes = [{'table_entry': 'time2', 'units': 'months since 2000-01-01 00:00:00', - 'coord_vals': times, - 'cell_bounds': times_bnds, +# 'coord_vals': times, +# 'cell_bounds': times_bnds, }, - {'table_entry': 'plevs', + {'table_entry': 'plev19', 'units': 'Pa', 'coord_vals': [100000., 92500., 85000., 70000., 60000., 50000., 40000., 30000., 25000., 20000., 15000., - 10000., 7000., 5000., 3000., 2000., 1000.]}, + 10000., 7000., 5000., 3000., 2000., 1000., 500, 100]}, {'table_entry': 'latitude', 'units': 'degrees_north', 'coord_vals': [0], @@ -45,8 +41,10 @@ def path_test(): varid = cmor.variable('co2Clim', '1.e-6', axis_ids) import numpy data = numpy.array([3, 4, 5]) - data.resize((3, 17, 1, 1)) - cmor.write(varid, data) + data.resize((3, 19, 1, 1)) +# cmor.write(varid, data) + for i in range(len(data)): + cmor.write(varid, data[i], time_vals=times[i], time_bnds=times_bnds[i]) path = cmor.close(varid, file_name=True) print path diff --git a/Test/test_python_CMIP6_CV_externalvariables.py b/Test/test_python_CMIP6_CV_externalvariables.py index 4dea5b9f..02422592 100644 --- a/Test/test_python_CMIP6_CV_externalvariables.py +++ b/Test/test_python_CMIP6_CV_externalvariables.py @@ -100,6 +100,51 @@ def testCMIP6(self): a = f.getglobal("external_variables") self.assertEqual("areacello volcello", a) + def testCMIP6_ExternaVariablesError(self): + + cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE) + error_flag = cmor.dataset_json('Test/common_user_input.json') + table_id = cmor.load_table('CMIP6_6hrLev.json') + time = cmor.axis(table_entry='time1', units='days since 2000-01-01', + coord_vals=numpy.array(range(1)), + cell_bounds=numpy.array(range(2))) + latitude = cmor.axis(table_entry='latitude', units='degrees_north', + coord_vals=numpy.array(range(5)), + cell_bounds=numpy.array(range(6))) + longitude = cmor.axis(table_entry='longitude', units='degrees_east', + coord_vals=numpy.array(range(5)), + cell_bounds=numpy.array(range(6))) + plev3 = cmor.axis(table_entry='plev3', units='Pa', + coord_vals=numpy.array([85000., 50000., 25000.])) + axis_ids = [longitude, latitude, plev3, time] + ua_var_id = cmor.variable(table_entry='ua', axis_ids=axis_ids, + units='m s-1') + ta_var_id = cmor.variable(table_entry='ta', axis_ids=axis_ids, + units='K') + data = numpy.random.random(75) + reshaped_data = data.reshape((5, 5, 3, 1)) + + # This doesn't: + cmor.write(ta_var_id, reshaped_data) + cmor.write(ua_var_id, reshaped_data) + fname_ta = cmor.close(ta_var_id, file_name=True) + fname_ua = cmor.close(ua_var_id, file_name=True) + cmor.close() + os.dup2(self.newstdout, 1) + os.dup2(self.newstderr, 2) + sys.stdout = os.fdopen(self.newstdout, 'w', 0) + sys.stderr = os.fdopen(self.newstderr, 'w', 0) + + f = cdms2.open(fname_ta, "r") + a = f.getglobal("external_variables") + self.assertEqual("areacella", a) + f.close() + f = cdms2.open(fname_ua, "r") + a = f.getglobal("external_variables") + self.assertEqual(None, a) + f.close() + + def tearDown(self): import shutil shutil.rmtree("./CMIP6") diff --git a/Test/test_python_filename_time_range.py b/Test/test_python_filename_time_range.py index fe9f4c7a..8fc524a0 100644 --- a/Test/test_python_filename_time_range.py +++ b/Test/test_python_filename_time_range.py @@ -533,10 +533,10 @@ def test_fx(self): 'orog_fx_PCMDI-test-1-0_piControl-withism_' 'r11i1p1f1_gr.nc') - def tearDown(self): - if self.path: - if os.path.exists(self.path): - os.remove(self.path) +# def tearDown(self): +# if self.path: +# if os.path.exists(self.path): +# os.remove(self.path) if __name__ == '__main__': diff --git a/TestTables/CMIP6_3hr.json b/TestTables/CMIP6_3hr.json index cda73e2b..d08a0734 100644 --- a/TestTables/CMIP6_3hr.json +++ b/TestTables/CMIP6_3hr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table 3hr", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.125000", "generic_levels": "", @@ -71,7 +72,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Near-Surface Specific Humidity", diff --git a/TestTables/CMIP6_6hrLev.json b/TestTables/CMIP6_6hrLev.json index f7eb94e7..56df651f 100644 --- a/TestTables/CMIP6_6hrLev.json +++ b/TestTables/CMIP6_6hrLev.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table 6hrLev", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.250000", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "Aerosol Backscatter at 550nm and 180 degrees, computed from extinction and lidar ratio", "dimensions": "longitude latitude alevel time1", "out_name": "bs550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Aerosol Extinction at 550nm", "dimensions": "longitude latitude alevel time1", "out_name": "ec550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -53,7 +54,7 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", @@ -78,7 +79,7 @@ "comment": "Air pressure on model levels", "dimensions": "longitude latitude alevel time", "out_name": "pfull", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_6hrPlev.json b/TestTables/CMIP6_6hrPlev.json index 74f00f4d..1e7d3e67 100644 --- a/TestTables/CMIP6_6hrPlev.json +++ b/TestTables/CMIP6_6hrPlev.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table 6hrPlev", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.250000", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Boundary layer depth", "dimensions": "longitude latitude time", "out_name": "bldep", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -53,14 +54,14 @@ "frequency": "6hr", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev4 time", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "includes both liquid and solid phases", "dimensions": "longitude latitude time", "out_name": "pr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "prhmax", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "", "dimensions": "longitude latitude time p850", "out_name": "rv850", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "longitude latitude time height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Zonal wind at 100m height", "dimensions": "longitude latitude time height100m", "out_name": "ua100m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Eastward component of the near-surface (usually, 10 meters) wind", "dimensions": "longitude latitude time height10m", "out_name": "uas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Meridional wind at 100m above the surface.", "dimensions": "longitude latitude time height100m", "out_name": "va100m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Northward component of the near surface wind", "dimensions": "longitude latitude time height10m", "out_name": "vas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Wind speed gust maximum at 100m above surface", "dimensions": "longitude latitude time height100m", "out_name": "wsgmax100m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "Wind speed gust maximum at 10m above surface", "dimensions": "longitude latitude time height10m", "out_name": "wsgmax10m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "Geopotential height on the 1000 hPa surface", "dimensions": "longitude latitude time p1000", "out_name": "zg1000", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_6hrPlevPt.json b/TestTables/CMIP6_6hrPlevPt.json index 532e4025..16846a82 100644 --- a/TestTables/CMIP6_6hrPlevPt.json +++ b/TestTables/CMIP6_6hrPlevPt.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table 6hrPlevPt", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.250000", "generic_levels": "", @@ -17,14 +18,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "cloud_ice_mixing_ratio", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Cloud Ice Mixing Ratio", "comment": "Cloud ice mixing ratio", "dimensions": "longitude latitude plev27 time1", "out_name": "cldicemxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -35,14 +36,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "cloud_liquid_water_mixing_ratio", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Cloud Water Mixing Ratio", "comment": "Cloud water mixing ratio", "dimensions": "longitude latitude plev27 time1", "out_name": "cldwatmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -53,7 +54,7 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_convective_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Convective Cloud Optical Depth", @@ -71,7 +72,7 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_stratiform_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Stratiform Cloud Optical Depth", @@ -89,14 +90,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_graupel_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Graupel Mixing Ratio", "comment": "Graupel mixing ratio", "dimensions": "longitude latitude plev27 time1", "out_name": "grplmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -107,14 +108,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev27 time1", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -125,14 +126,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -143,7 +144,7 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Near-Surface Specific Humidity", @@ -168,7 +169,7 @@ "comment": "downwelling longwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call", "dimensions": "longitude latitude time1", "out_name": "lwsffluxaero", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "downwelling longwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", "dimensions": "longitude latitude time1", "out_name": "lwtoafluxaerocs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -251,14 +252,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_rain_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "rain_mixing_ratio", "comment": "Rain mixing ratio", "dimensions": "longitude latitude plev27 time1", "out_name": "rainmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "longitude latitude time1 p850", "out_name": "rv850", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -305,14 +306,14 @@ "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_snow_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "snow_mixing_ratio", "comment": "Snow mixing ratio", "dimensions": "longitude latitude plev27 time1", "out_name": "snowmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", "dimensions": "longitude latitude time1", "out_name": "swsffluxaero", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "downwelling shortwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", "dimensions": "longitude latitude time1", "out_name": "swtoafluxaerocs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev27 time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev7h time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "longitude latitude time1 height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -470,8 +471,8 @@ "units": "K", "cell_methods": "area: mean where land time: point", "cell_measures": "area: areacella", - "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", + "long_name": "Temperature of Near-Surface Soil Layer", + "comment": "Temperature of soil. Reported as missing for grid cells with no land.", "dimensions": "longitude latitude time1 sdepth1", "out_name": "tsl", "type": "real", @@ -510,7 +511,7 @@ "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "Eastward component of the near-surface (usually, 10 meters) wind", "dimensions": "longitude latitude time1 height10m", "out_name": "uas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "Mean vorticity over 850,700,600 hPa", "dimensions": "longitude latitude time1 pl700", "out_name": "vortmean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "Wet bulb potential temperature", "dimensions": "longitude latitude plev7h time1", "out_name": "wbptemp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -636,7 +637,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time1", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "geopotential height on the 500 hPa surface", "dimensions": "longitude latitude time1 p500", "out_name": "zg500", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -672,7 +673,7 @@ "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_AERday.json b/TestTables/CMIP6_AERday.json index 27c7a27d..441d43b7 100644 --- a/TestTables/CMIP6_AERday.json +++ b/TestTables/CMIP6_AERday.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table AERday", "realm": "aerosol", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.0", "generic_levels": "", @@ -17,14 +18,14 @@ "frequency": "day", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "cloud optical depth", "comment": "", "dimensions": "longitude latitude time", "out_name": "cod", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "maximum boundary layer height during the day (add cell_methods attribute: 'time: maximum')", "dimensions": "longitude latitude time", "out_name": "maxpblz", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "minimum boundary layer height during the day (add cell_methods attribute: 'time: minimum')", "dimensions": "longitude latitude time", "out_name": "minpblz", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -71,14 +72,14 @@ "frequency": "day", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol optical thickness at 550 nm", "comment": "AOD from the ambient aerosols (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", "dimensions": "longitude latitude time", "out_name": "od550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "sfo3max", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Total ozone column calculated at 0 degrees C and 1 bar, such that 1m = 1e5 DU.", "dimensions": "longitude latitude time", "out_name": "toz", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Zonal wind on the 10 hPa surface", "dimensions": "longitude latitude time p10", "out_name": "ua10", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Geopotential height on the 10 hPa surface", "dimensions": "longitude latitude time p10", "out_name": "zg10", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Geopotential height on the 100 hPa surface", "dimensions": "longitude latitude time p100", "out_name": "zg100", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Geopotential height on the 1000 hPa surface", "dimensions": "longitude latitude time p1000", "out_name": "zg1000", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "geopotential height on the 500 hPa surface", "dimensions": "longitude latitude time p500", "out_name": "zg500", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_AERfx.json b/TestTables/CMIP6_AERfx.json index f9dc865c..26122cce 100644 --- a/TestTables/CMIP6_AERfx.json +++ b/TestTables/CMIP6_AERfx.json @@ -10,7 +10,7 @@ "approx_interval": "", "generic_levels": "", "mip_era": "CMIP6", - "Conventions": "CF-1.6 CMIP-6.2" + "Conventions": "CF-1.6 CMIP-6.0" }, "variable_entry": { "areacella": { diff --git a/TestTables/CMIP6_AERhr.json b/TestTables/CMIP6_AERhr.json index faba98e6..eee84907 100644 --- a/TestTables/CMIP6_AERhr.json +++ b/TestTables/CMIP6_AERhr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table AERhr", "realm": "aerosol", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.0", "generic_levels": "0.017361", @@ -24,7 +25,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "sfno2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "sfo3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "sfpm25", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "longitude latitude time height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_AERmon.json b/TestTables/CMIP6_AERmon.json index 098f5bdb..72b148e7 100644 --- a/TestTables/CMIP6_AERmon.json +++ b/TestTables/CMIP6_AERmon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table AERmon", "realm": "aerosol", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", @@ -17,14 +18,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol absorption optical thickness at 550 nm", "comment": "", "dimensions": "longitude latitude time", "out_name": "abs550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "airmass", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Fixed surface layer mixing ratio over 30o-50oN (0 ppbv), uniform fixed source (at all levels) everywhere else (source is unspecified but must be constant in space and time and documented). Note that the source could be 1yr/yr, so the tracer concentration provides mean age in years. For method using linearly increasing tracer include a method attribute: 'linearly increasing tracer'For method using uniform source (1yr/yr) include a method attribute: 'uniform source'", "dimensions": "longitude latitude alevel time", "out_name": "aoanh", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Boundary layer depth", "dimensions": "longitude latitude time", "out_name": "bldep", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "c2h2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "c2h6", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "c3h6", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "c3h8", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "proposed name: number_concentration_of_ambient_aerosol_in_air_at_liquid_water_cloud_top", "dimensions": "longitude latitude time", "out_name": "ccn", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Cloud Droplet Number Concentration in liquid water clouds.", "dimensions": "longitude latitude alevel time", "out_name": "cdnc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "ch3coch3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "ch4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_aqueous_phase_net_chemical_production", "dimensions": "longitude latitude alevel time", "out_name": "cheaqpso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_gas_phase_net_chemical_production", "dimensions": "longitude latitude alevel time", "out_name": "chegpso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "anthropogenic part of chepsoa", "dimensions": "longitude latitude time", "out_name": "chepasoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as OA emissions. ''mass'' refers to the mass of primary organic matter, not mass of organic carbon alone.", "dimensions": "longitude latitude time", "out_name": "chepsoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "Convective cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes only convective cloud.", "dimensions": "longitude latitude time", "out_name": "cltc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "co", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "co2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -359,14 +360,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "cloud optical depth", "comment": "", "dimensions": "longitude latitude time", "out_name": "cod", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "dms", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "drybc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "drydust", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", "dimensions": "longitude latitude time", "out_name": "drynh3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", "dimensions": "longitude latitude time", "out_name": "drynh4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "NOy is the sum of all simulated oxidized nitrogen species out of NO, NO2, HNO3, HNO4, NO3aerosol, NO3(radical), N2O5, PAN, other organic nitrates. Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "drynoy", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "dryo3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,7 +511,7 @@ "comment": "Tendency of atmosphere mass content of organic dry aerosol due to dry deposition: This is the sum of dry deposition of POA and dry deposition of SOA (see next two entries). 'Mass' refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Was called dry_pom in old ACCMIP Excel table. Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "dryoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", "dimensions": "longitude latitude time", "out_name": "dryso2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -546,7 +547,7 @@ "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", "dimensions": "longitude latitude time", "out_name": "dryso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", "dimensions": "longitude latitude time", "out_name": "dryss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "anthrophogenic emission of CO", "dimensions": "longitude latitude time", "out_name": "emiaco", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "Store flux as Nitrogen. Anthropogenic fraction. NOx=NO+NO2, Includes agricultural waste burning but no other biomass burning. Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emianox", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "anthropogenic part of emioa", "dimensions": "longitude latitude time", "out_name": "emiaoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -636,7 +637,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emibc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "Integrate 3D emission field vertically to 2d field._If_ fixed molecular weight of NMVOC is not available in model, please provide in units of kilomole m-2 s-1 (i.e. kg m-2 s-1 as if model NMVOC had molecular weight of 1) and add a comment to your file.", "dimensions": "longitude latitude time", "out_name": "emibvoc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -672,7 +673,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emico", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -690,7 +691,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emidms", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -708,7 +709,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emidust", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -726,7 +727,7 @@ "comment": "Integrate 3D emission field vertically to 2d field", "dimensions": "longitude latitude time", "out_name": "emiisop", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -744,7 +745,7 @@ "comment": "Integrate the NOx production for lightning over model layer. proposed name: tendency_of_atmosphere_mass_content_of_nox_from_lightning", "dimensions": "longitude latitude alevel time", "out_name": "emilnox", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -762,7 +763,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "eminh3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -780,7 +781,7 @@ "comment": "NOx=NO+NO2. Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "eminox", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -798,7 +799,7 @@ "comment": "This is the sum of total emission of POA and total production of SOA (emipoa+chepsoa). ''Mass'' refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Integrate 3D chemical production and emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emioa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -816,7 +817,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emiso2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -834,7 +835,7 @@ "comment": "Direct primary emission does not include secondary sulfate production. Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emiso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -852,7 +853,7 @@ "comment": "Integrate 3D emission field vertically to 2d field.", "dimensions": "longitude latitude time", "out_name": "emiss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -870,7 +871,7 @@ "comment": "Integrate 3D emission field vertically to 2d field. _If_ fixed molecular weight of NMVOC is not available in model, please provide in units of kilomole m-2 s-1 (i.e. kg m-2 s-1 as if model NMVOC had molecular weight of 1) and add a comment to your file.", "dimensions": "longitude latitude time", "out_name": "emivoc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -881,14 +882,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Water", "comment": "includes all phases of water", "dimensions": "longitude latitude alevel time", "out_name": "h2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -906,7 +907,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "hcho", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -924,7 +925,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "hcl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -942,7 +943,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "hno3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -960,7 +961,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "isop", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -978,7 +979,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "jno2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -996,7 +997,7 @@ "comment": "monthly averaged atmospheric loss", "dimensions": "longitude latitude alevel time", "out_name": "lossch4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1014,7 +1015,7 @@ "comment": "monthly averaged atmospheric loss", "dimensions": "longitude latitude alevel time", "out_name": "lossco", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1032,7 +1033,7 @@ "comment": "monthly averaged atmospheric loss", "dimensions": "longitude latitude alevel time", "out_name": "lossn2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1050,7 +1051,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "lwp", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1068,7 +1069,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmraerh2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1086,7 +1087,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrbc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1104,7 +1105,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrdust", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1122,7 +1123,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrnh4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1140,7 +1141,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrno3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1158,7 +1159,7 @@ "comment": "We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available.", "dimensions": "longitude latitude alevel time", "out_name": "mmroa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1176,7 +1177,7 @@ "comment": "E.g. mass_fraction_of_pm1_aerosol_at_50_percent_relative_humidity_in_air. proposed name: mass_fraction_of_pm1_dry_aerosol_in_air", "dimensions": "longitude latitude alevel time", "out_name": "mmrpm1", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1194,7 +1195,7 @@ "comment": "E.g. mass_fraction_of_pm10_aerosol_at_50_percent_relative_humidity_in_air, proposed name: mass_fraction_of_pm10_dry_aerosol_in_air", "dimensions": "longitude latitude alevel time", "out_name": "mmrpm10", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1212,7 +1213,7 @@ "comment": "E.g. mass_fraction_of_pm2p5_aerosol_at_50_percent_relative_humidity_in_air, proposed_name: mass_fraction_of_pm2p5_dry_aerosol_in_air", "dimensions": "longitude latitude alevel time", "out_name": "mmrpm2p5", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1230,7 +1231,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1248,7 +1249,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrsoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1266,7 +1267,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "mmrss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1284,7 +1285,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "n2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1302,7 +1303,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "nh50", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1320,7 +1321,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "no", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1338,7 +1339,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "no2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1356,7 +1357,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "o3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1374,7 +1375,7 @@ "comment": "ONLY provide the sum of the following reactions: (i) O(1D)+H2O; (ii) O3+HO2; (iii) O3+OH; (iv) O3+alkenes (isoprene, ethene,...)", "dimensions": "longitude latitude alevel time", "out_name": "o3loss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1392,7 +1393,7 @@ "comment": "ONLY provide the sum of all the HO2/RO2 + NO reactions (as k*[HO2]*[NO])", "dimensions": "longitude latitude alevel time", "out_name": "o3prod", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1410,7 +1411,7 @@ "comment": "Ozone tracer intended to map out strat-trop exchange (STE) of ozone.", "dimensions": "longitude latitude alevel time", "out_name": "o3ste", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1421,14 +1422,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol optical thickness at 440 nm", "comment": "AOD from the ambient aerosols (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 440 nm'", "dimensions": "longitude latitude time", "out_name": "od440aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1439,14 +1440,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol optical thickness at 550 nm", "comment": "AOD from the ambient aerosols (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", "dimensions": "longitude latitude time", "out_name": "od550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1457,14 +1458,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "aerosol water aod@550nm", "comment": "proposed name: atmosphere_optical_thickness_due_to_water_ambient_aerosol", "dimensions": "longitude latitude time", "out_name": "od550aerh2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1475,14 +1476,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "bb aod@550nm", "comment": "total organic aerosol AOD due to biomass burning (excluding so4, nitrate BB components)", "dimensions": "longitude latitude time", "out_name": "od550bb", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1493,14 +1494,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "black carbon aod@550nm", "comment": "", "dimensions": "longitude latitude time", "out_name": "od550bc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1511,14 +1512,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol optical thickness at 550 nm", "comment": "AOD from the ambient aerosols in clear skies if od550aer is for all-sky (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", "dimensions": "longitude latitude time", "out_name": "od550csaer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1529,14 +1530,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "dust aod@550nm", "comment": "", "dimensions": "longitude latitude time", "out_name": "od550dust", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1547,14 +1548,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient fine mode aerosol optical thickness at 550 nm", "comment": "od550 due to particles with wet diameter less than 1 um (ambient here means wetted). When models do not include explicit size information, it can be assumed that all anthropogenic aerosols and natural secondary aerosols have diameter less than 1 um.", "dimensions": "longitude latitude time", "out_name": "od550lt1aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1565,14 +1566,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "nitrate aod@550nm", "comment": "proposed name: atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", "dimensions": "longitude latitude time", "out_name": "od550no3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1583,14 +1584,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "total organic aerosol aod@550nm", "comment": "", "dimensions": "longitude latitude time", "out_name": "od550oa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1601,14 +1602,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "sulfate aod@550nm", "comment": "proposed name: atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", "dimensions": "longitude latitude time", "out_name": "od550so4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1619,14 +1620,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "soa aod@550nm", "comment": "total organic aerosol AOD due to secondary aerosol formation", "dimensions": "longitude latitude time", "out_name": "od550soa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1637,14 +1638,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "sea salt aod@550nm", "comment": "", "dimensions": "longitude latitude time", "out_name": "od550ss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1655,14 +1656,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "ambient aerosol optical thickness at 870 nm", "comment": "AOD from the ambient aerosols (i.e., includes aerosol water). Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 870 nm'", "dimensions": "longitude latitude time", "out_name": "od870aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1680,7 +1681,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "oh", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1698,7 +1699,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "pan", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1716,7 +1717,7 @@ "comment": "Air pressure on model levels", "dimensions": "longitude latitude alevel time", "out_name": "pfull", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1734,7 +1735,7 @@ "comment": "Air pressure on model half-levels", "dimensions": "longitude latitude alevhalf time", "out_name": "phalf", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1752,7 +1753,7 @@ "comment": "proposed name: photolysis_rate_of_ozone_to_O1D", "dimensions": "longitude latitude alevel time", "out_name": "photo1d", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1770,7 +1771,7 @@ "comment": "Accumulated stomatal ozone flux over the threshold of 0 mol m-2 s-1; Computation: Time Integral of (hourly above canopy ozone concentration * stomatal conductance * Rc/(Rb+Rc) )", "dimensions": "longitude latitude time", "out_name": "pod0", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1788,7 +1789,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1806,7 +1807,7 @@ "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", "dimensions": "longitude latitude time", "out_name": "ptp", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1824,7 +1825,7 @@ "comment": "Droplets are liquid only. This is the effective radius as seen from space over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere.TOA) each time sample when computing monthly mean. Reported values are weighted by total liquid cloud top fraction of (as seen from", "dimensions": "longitude latitude time", "out_name": "reffclwtop", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1842,7 +1843,7 @@ "comment": "Flux corresponding to rlut resulting from aerosol-free call to radiation, following Ghan (ACP, 2013)", "dimensions": "longitude latitude time", "out_name": "rlutaf", - "type": "float", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1860,7 +1861,7 @@ "comment": "Flux corresponding to rlutcs resulting from aerosol-free call to radiation, following Ghan (ACP, 2013)", "dimensions": "longitude latitude time", "out_name": "rlutcsaf", - "type": "float", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1878,7 +1879,7 @@ "comment": "Flux corresponding to rsut resulting from aerosol-free call to radiation, following Ghan (ACP, 2013)", "dimensions": "longitude latitude time", "out_name": "rsutaf", - "type": "float", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1896,7 +1897,7 @@ "comment": "Flux corresponding to rsutcs resulting from aerosol-free call to radiation, following Ghan (ACP, 2013)", "dimensions": "longitude latitude time", "out_name": "rsutcsaf", - "type": "float", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1914,7 +1915,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "so2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1932,7 +1933,7 @@ "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", "dimensions": "longitude latitude time", "out_name": "tatp", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1950,7 +1951,7 @@ "comment": "Tendency of air temperature due to longwave radiative heating", "dimensions": "longitude latitude alevel time", "out_name": "tntrl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1968,7 +1969,7 @@ "comment": "Tendency of air temperature due to shortwave radiative heating", "dimensions": "longitude latitude alevel time", "out_name": "tntrs", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1986,7 +1987,7 @@ "comment": "Total ozone column calculated at 0 degrees C and 1 bar, such that 1m = 1e5 DU.", "dimensions": "longitude latitude time", "out_name": "toz", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2004,7 +2005,7 @@ "comment": "Tropospheric ozone column, should be consistent with definition of tropopause used to calculate the pressure of the tropopause (ptp). Calculated at 0 degrees C and 1 bar, such that 1m = 1e5 DU.", "dimensions": "longitude latitude time", "out_name": "tropoz", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2022,7 +2023,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "ttop", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2040,7 +2041,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "ua", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2058,7 +2059,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "va", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2076,7 +2077,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "wa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2094,7 +2095,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetbc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2112,7 +2113,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetdust", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2130,7 +2131,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetnh3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2148,7 +2149,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetnh4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2166,7 +2167,7 @@ "comment": "NOy is the sum of all simulated oxidized nitrogen species, out of NO, NO2, HNO3, HNO4, NO3aerosol, NO3(radical), N2O5, PAN, other organic nitrates.", "dimensions": "longitude latitude time", "out_name": "wetnoy", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2184,7 +2185,7 @@ "comment": "tendency of atmosphere mass content of organic matter dry aerosols due to wet deposition: This is the sum of wet deposition of POA and wet deposition of SOA (see next two entries). Mass here refers to the mass of organic matter, not mass of organic carbon alone. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Was called wet_pom in old ACCMIP Excel spreadsheet.", "dimensions": "longitude latitude time", "out_name": "wetoa", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2202,7 +2203,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetso2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2220,7 +2221,7 @@ "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", "dimensions": "longitude latitude time", "out_name": "wetso4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2238,7 +2239,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetss", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2256,7 +2257,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2274,7 +2275,7 @@ "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", "dimensions": "longitude latitude time", "out_name": "ztp", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_AERmonZ.json b/TestTables/CMIP6_AERmonZ.json index 90fa66a2..05aae2cf 100644 --- a/TestTables/CMIP6_AERmonZ.json +++ b/TestTables/CMIP6_AERmonZ.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table AERmonZ", "realm": "aerosol", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "Total family (the sum of all appropriate species in the model) ; list the species in the netCDF header, e.g. Bry = Br + BrO + HOBr + HBr + BrONO2 + BrCl Definition: Total inorganic bromine (e.g., HBr and inorganic bromine oxides and radicals (e.g., BrO, atomic bromine (Br), bromine nitrate (BrONO2)) resulting from degradation of bromine-containing organic source gases (halons, methyl bromide, VSLS), and natural inorganic bromine sources (e.g., volcanoes, sea salt, and other aerosols) add comment attribute with detailed description about how the model calculates these fields", "dimensions": "latitude plev39 time", "out_name": "bry", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "ch4", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Total family (the sum of all appropriate species in the model) ; list the species in the netCDF header, e.g. Cly = HCl + ClONO2 + HOCl + ClO + Cl + 2*Cl2O2 +2Cl2 + OClO + BrCl Definition: Total inorganic stratospheric chlorine (e.g., HCl, ClO) resulting from degradation of chlorine-containing source gases (CFCs, HCFCs, VSLS), and natural inorganic chlorine sources (e.g., sea salt and other aerosols) add comment attribute with detailed description about how the model calculates these fields", "dimensions": "latitude plev39 time", "out_name": "cly", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -71,14 +72,14 @@ "frequency": "mon", "modeling_realm": "aerosol", "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "longitude: mean time: mean", "cell_measures": "", "long_name": "Mass Fraction of Water", "comment": "includes all phases of water", "dimensions": "latitude plev39 time", "out_name": "h2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "hcl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "hno3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "ho2", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "The mean age of air is defined as the mean time that a stratospheric air mass has been out of contact with the well-mixed troposphere.", "dimensions": "latitude plev39 time", "out_name": "meanage", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "n2o", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Total family (the sum of all appropriate species in the model); list the species in the netCDF header, e.g. NOy = N + NO + NO2 + NO3 + HNO3 + 2N2O5 + HNO4 + ClONO2 + BrONO2 Definition: Total reactive nitrogen; usually includes atomic nitrogen (N), nitric oxide (NO), NO2, nitrogen trioxide (NO3), dinitrogen radical (N2O5), nitric acid (HNO3), peroxynitric acid (HNO4), BrONO2, ClONO2 add comment attribute with detailed description about how the model calculates these fields", "dimensions": "latitude plev39 time", "out_name": "noy", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "o3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "oh", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Air Temperature", "dimensions": "latitude plev39 time", "out_name": "ta", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "ua", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "va", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "Zonally averaged meridional heat flux at 100 hPa as monthly means derived from daily (or higher frequency) fields.", "dimensions": "latitude time p100", "out_name": "vt100", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Amon.json b/TestTables/CMIP6_Amon.json index 56b1071a..f6d39b4f 100644 --- a/TestTables/CMIP6_Amon.json +++ b/TestTables/CMIP6_Amon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Amon", "realm": "atmos atmosChem", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", @@ -179,7 +180,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Fraction of Time Convection Occurs", @@ -385,7 +386,7 @@ "dimensions": "longitude latitude time", "out_name": "evspsbl", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -403,7 +404,7 @@ "dimensions": "longitude latitude time", "out_name": "fco2antt", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -421,7 +422,7 @@ "dimensions": "longitude latitude time", "out_name": "fco2fos", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -439,7 +440,7 @@ "dimensions": "longitude latitude time", "out_name": "fco2nat", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -539,7 +540,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", @@ -557,7 +558,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Near-Surface Specific Humidity", @@ -1097,7 +1098,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "shallow_convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Fraction of Time Shallow Convection Occurs", diff --git a/TestTables/CMIP6_Amon_json_hfls b/TestTables/CMIP6_Amon_json_hfls index 0c478ab6..da660fdd 100644 --- a/TestTables/CMIP6_Amon_json_hfls +++ b/TestTables/CMIP6_Amon_json_hfls @@ -11,7 +11,7 @@ "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { "plevs": { diff --git a/TestTables/CMIP6_CF3hr.json b/TestTables/CMIP6_CF3hr.json index 1d3904dc..15e09ff6 100644 --- a/TestTables/CMIP6_CF3hr.json +++ b/TestTables/CMIP6_CF3hr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table CF3hr", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.125000", "generic_levels": "alevel alevhalf", @@ -17,7 +18,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Fraction of Time Convection Occurs", @@ -53,7 +54,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_convective_cloud_ice_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Convective Cloud Ice", @@ -71,7 +72,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_stratiform_cloud_ice_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Stratiform Cloud Ice", @@ -161,7 +162,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_convective_cloud_liquid_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Convective Cloud Liquid Water", @@ -179,7 +180,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_stratiform_cloud_liquid_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Stratiform Cloud Liquid Water", @@ -215,7 +216,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "convective_cloud_longwave_emissivity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Convective Cloud Emissivity", @@ -233,7 +234,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "stratiform_cloud_longwave_emissivity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Stratiform Cloud Emissivity", @@ -251,7 +252,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_convective_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Convective Cloud Optical Depth", @@ -269,7 +270,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_stratiform_cloud", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Stratiform Cloud Optical Depth", @@ -295,7 +296,7 @@ "dimensions": "longitude latitude time1", "out_name": "evspsbl", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -323,7 +324,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Water", @@ -582,7 +583,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time1", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1025,7 +1026,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "shallow_convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Fraction of Time Shallow Convection Occurs", diff --git a/TestTables/CMIP6_CFday.json b/TestTables/CMIP6_CFday.json index 9194f5ac..3badf94f 100644 --- a/TestTables/CMIP6_CFday.json +++ b/TestTables/CMIP6_CFday.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table CFday", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "alevel alevhalf", @@ -17,7 +18,7 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "cloud_albedo", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where cloud", "cell_measures": "area: areacella", "long_name": "ISCCP Mean Cloud Albedo", @@ -305,7 +306,7 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", diff --git a/TestTables/CMIP6_CFmon.json b/TestTables/CMIP6_CFmon.json index 5280445b..da74c752 100644 --- a/TestTables/CMIP6_CFmon.json +++ b/TestTables/CMIP6_CFmon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table CFmon", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", @@ -17,7 +18,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "cloud_albedo", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where cloud", "cell_measures": "area: areacella", "long_name": "ISCCP Mean Cloud Albedo", @@ -89,7 +90,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_convective_cloud_ice_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Convective Cloud Ice", @@ -107,7 +108,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_stratiform_cloud_ice_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Stratiform Cloud Ice", @@ -233,7 +234,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_convective_cloud_liquid_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Convective Cloud Liquid Water", @@ -251,7 +252,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_stratiform_cloud_liquid_water_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Mass Fraction of Stratiform Cloud Liquid Water", @@ -341,7 +342,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", @@ -420,7 +421,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_CFsubhr.json b/TestTables/CMIP6_CFsubhr.json index a6ff3530..e9a48086 100644 --- a/TestTables/CMIP6_CFsubhr.json +++ b/TestTables/CMIP6_CFsubhr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table CFsubhr", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.017361", "generic_levels": "alevel alevhalf", @@ -53,7 +54,7 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: point time: point", "cell_measures": "", "long_name": "Fraction of Time Convection Occurs", @@ -205,7 +206,7 @@ "dimensions": "site time1", "out_name": "evspsbl", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -241,7 +242,7 @@ "dimensions": "site time1", "out_name": "fco2antt", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -259,7 +260,7 @@ "dimensions": "site time1", "out_name": "fco2fos", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -277,7 +278,7 @@ "dimensions": "site time1", "out_name": "fco2nat", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -359,7 +360,7 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: point time: point", "cell_measures": "", "long_name": "Specific Humidity", @@ -377,7 +378,7 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: point time: point", "cell_measures": "", "long_name": "Near-Surface Specific Humidity", @@ -989,7 +990,7 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "shallow_convection_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: point time: point", "cell_measures": "", "long_name": "Fraction of Time Shallow Convection Occurs", diff --git a/TestTables/CMIP6_CFsubhrOff.json b/TestTables/CMIP6_CFsubhrOff.json index f265d855..92ad59e5 100644 --- a/TestTables/CMIP6_CFsubhrOff.json +++ b/TestTables/CMIP6_CFsubhrOff.json @@ -11,7 +11,7 @@ "approx_interval": "", "generic_levels": "", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "variable_entry": { "cfadDbze94": { diff --git a/TestTables/CMIP6_CV.json b/TestTables/CMIP6_CV.json index 117e4d81..b3e94aea 100644 --- a/TestTables/CMIP6_CV.json +++ b/TestTables/CMIP6_CV.json @@ -34,11 +34,11 @@ ], "version_metadata":{ "author":"Paul J. Durack ", - "creation_date":"Thu Dec 7 10:14:39 2017 -0800", + "creation_date":"Tue Feb 13 09:37:18 2018 -0800", "institution_id":"PCMDI", - "latest_tag_point":"3.2.8 (16; gb51e037)", - "note":"Revise THU source_id CIESM", - "previous_commit":"3c9ff0ab226f35d54adc146b6349fc2f7a3b542a" + "latest_tag_point":"3.3.0 (22; g8906e28)", + "note":"Revise institution_id NCAR", + "previous_commit":"e72f2dd44878feba9b327ee2f9bd6f919b7ceacc" }, "activity_id":{ "AerChemMIP":"Aerosols and Chemistry Model Intercomparison Project", @@ -76,6 +76,7 @@ "CNRM-CERFACS":"CNRM (Centre National de Recherches Meteorologiques, Toulouse 31057, France), CERFACS (Centre Europeen de Recherche et de Formation Avancee en Calcul Scientifique, Toulouse 31057, France)", "CSIR-CSIRO":"CSIR (Council for Scientific and Industrial Research - Natural Resources and the Environment, Pretoria, 0001, South Africa), CSIRO (Commonwealth Scientific and Industrial Research Organisation and Bureau of Meteorology, Melbourne, Victoria 3208, Australia)", "CSIRO-BOM":"Commonwealth Scientific and Industrial Research Organisation and Bureau of Meteorology, Melbourne, Victoria 3208, Australia", + "DWD":"Deutscher Wetterdienst, Offenbach am Main 63067, Germany", "EC-Earth-Consortium":"KNMI, The Netherlands; SMHI, Sweden; DMI, Denmark; AEMET, Spain; Met Eireann, Ireland; CNR-ISAC, Italy; Instituto de Meteorologia, Portugal; FMI, Finland; BSC, Spain; Centro de Geofisica, University of Lisbon, Portugal; ENEA, Italy; Geomar, Germany; Geophysical Institute, University of Bergen, Norway; ICHEC, Ireland; ICTP, Italy; IMAU, The Netherlands; IRV, Sweden; Lund University, Sweden; Meteorologiska Institutionen, Stockholms University, Sweden; Niels Bohr Institute, University of Copenhagen, Denmark; NTNU, Norway; SARA, The Netherlands; Unite ASTR, Belgium; Universiteit Utrecht, The Netherlands; Universiteit Wageningen, The Netherlands; University College Dublin, Ireland; Vrije Universiteit Amsterdam, the Netherlands; University of Helsinki, Finland; KIT, Karlsruhe, Germany; USC, University of Santiago de Compostela, Spain; Uppsala Universitet, Sweden; NLeSC, Netherlands eScience Center, The Netherlands", "FIO-RONM":"FIO (First Institute of Oceanography, State Oceanic Administration, Qingdao 266061, China), RONM (Laboratory for Regional Oceanography and Numerical Modeling, Qingdao National Laboratory for Marine Science and Technology, Qingdao 266237, China)", "HAMMOZ-Consortium":"ETH Zurich, Switzerland; Max Planck Institut fur Meteorologie, Germany; Forschungszentrum Julich, Germany; University of Oxford, UK; Finnish Meteorological Institute, Finland; Leibniz Institute for Tropospheric Research, Germany; Center for Climate Systems Modeling (C2SM) at ETH Zurich, Switzerland", @@ -88,7 +89,7 @@ "MPI-M":"Max Planck Institute for Meteorology, Hamburg 20146, Germany", "MRI":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "NASA-GISS":"Goddard Institute for Space Studies, New York, NY 10025, USA", - "NCAR":"National Center for Atmospheric Research, Boulder, CO 80301, USA", + "NCAR":"National Center for Atmospheric Research, Climate and Global Dynamics Laboratory, 1850 Table Mesa Drive, Boulder, CO 80305, USA", "NCC":"NorESM Climate modeling Consortium consisting of CICERO (Center for International Climate and Environmental Research, Oslo 0349), MET-Norway (Norwegian Meteorological Institute, Oslo 0313), NERSC (Nansen Environmental and Remote Sensing Center, Bergen 5006), NILU (Norwegian Institute for Air Research, Kjeller 2027), UiB (University of Bergen, Bergen 5007), UiO (University of Oslo, Oslo 0313) and UNI (Uni Research, Bergen 5008), Norway", "NERC":"Natural Environment Research Council, STFC-RAL, Harwell, Oxford, OX11 0QX, UK", "NIMS-KMA":"National Institute of Meteorological Sciences/Korea Meteorological Administration, Climate Research Division, Seoho-bukro 33, Seogwipo-si, Jejudo 63568, Republic of Korea", @@ -97,7 +98,8 @@ "NUIST":"Nanjing University of Information Science and Technology, Nanjing, 210044, China", "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "SNU":"Seoul National University, Seoul 08826, Republic of Korea", - "THU":"Department of Earth System Science, Tsinghua University, Beijing 100084, China" + "THU":"Department of Earth System Science, Tsinghua University, Beijing 100084, China", + "UHH":"Universitat Hamburg, Hamburg 20148, Germany" }, "source_id":{ "ACCESS-1-0":{ @@ -761,26 +763,30 @@ }, "HadGEM3-GC31-HH":{ "activity_participation":[ + "CMIP", "HighResMIP" ], "cohort":[ "Registered" ], "institution_id":[ - "MOHC" + "MOHC", + "NERC" ], "source_id":"HadGEM3-GC31-HH", "source":"HadGEM3-GC31-HH (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N512; 1024 x 768 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA12 tripolar primarily 1/12 deg; 4320 x 2160 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA12 tripolar primarily 1/12 deg; 4320 x 2160 longitude/latitude)" }, "HadGEM3-GC31-HM":{ "activity_participation":[ + "CMIP", "HighResMIP" ], "cohort":[ "Registered" ], "institution_id":[ - "MOHC" + "MOHC", + "NERC" ], "source_id":"HadGEM3-GC31-HM", "source":"HadGEM3-GC31-HM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N512; 1024 x 768 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (ORCA025 tripolar primarily 0.25 deg; 1440 x 720 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (ORCA025 tripolar primarily 0.25 deg; 1440 x 720 longitude/latitude)" @@ -791,6 +797,7 @@ "CMIP", "DAMIP", "FAFMIP", + "HighResMIP", "PMIP", "RFMIP" ], @@ -805,6 +812,7 @@ }, "HadGEM3-GC31-LM":{ "activity_participation":[ + "CMIP", "HighResMIP" ], "cohort":[ @@ -832,8 +840,10 @@ }, "HadGEM3-GC31-MM":{ "activity_participation":[ + "CMIP", "DCPP", "GMMIP", + "HighResMIP", "LS3MIP", "OMIP" ], @@ -1021,7 +1031,8 @@ "Registered" ], "institution_id":[ - "MPI-M" + "MPI-M", + "DWD" ], "source_id":"MPI-ESM-1-2-HR", "source":"MPI-ESM1.2-HR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ECHAM6.3 (spectral T127; 384 x 192 longitude/latitude; 95 levels; top level 0.01 hPa)\natmosChem: none\nland: JSBACH3.20\nlandIce: none/prescribed\nocean: MPIOM1.63 (tripolar TP04, approximately 0.4deg; 802 x 404 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: unnamed (thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model)" @@ -1304,6 +1315,7 @@ "activity_participation":[ "AerChemMIP", "C4MIP", + "CMIP", "GeoMIP", "LUMIP", "OMIP", @@ -1326,6 +1338,7 @@ "activity_participation":[ "AerChemMIP", "C4MIP", + "CMIP", "ScenarioMIP" ], "cohort":[ @@ -1502,7 +1515,7 @@ "fx" ], "license":[ - "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License .https://creativecommons.org/licenses/*.\\. *Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. *Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file).*\\. *The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. *All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" + "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License .https://creativecommons.org/licenses.* *Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. *Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file).*\\. *The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. *All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" ], "mip_era":[ "CMIP6" @@ -2158,7 +2171,8 @@ ], "additional_allowed_model_components":[ "AER", - "CHEM" + "CHEM", + "BGC" ], "experiment":"AMIP", "experiment_id":"amip", @@ -4436,7 +4450,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"historical prescribed SSTs and historical forcing", "experiment_id":"histSST", @@ -4459,7 +4474,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"historical SSTs and historical forcing, but with1950 halocarbon concentrations", "experiment_id":"histSST-1950HC", @@ -4483,7 +4498,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"historical SSTs and historical forcing, but with pre-industrial aerosol emissions", "experiment_id":"histSST-piAer", @@ -4506,7 +4522,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"historical SSTs and historical forcing, but with pre-industrial methane concentrations", "experiment_id":"histSST-piCH4", @@ -4578,7 +4594,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions", "experiment_id":"histSST-piO3", @@ -5817,7 +5833,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS", "experiment_id":"piClim-2xDMS", @@ -5840,7 +5857,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled production of NOx due to lightning", "experiment_id":"piClim-2xNOx", @@ -5864,7 +5881,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs", "experiment_id":"piClim-2xVOC", @@ -5888,7 +5905,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of dust", "experiment_id":"piClim-2xdust", @@ -5911,7 +5929,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions from fires", "experiment_id":"piClim-2xfire", @@ -5934,7 +5953,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt", "experiment_id":"piClim-2xss", @@ -5980,7 +6000,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions", "experiment_id":"piClim-BC", @@ -6003,7 +6024,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)", "experiment_id":"piClim-CH4", @@ -6027,7 +6048,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)", "experiment_id":"piClim-HC", @@ -6051,7 +6072,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)", "experiment_id":"piClim-N2O", @@ -6075,7 +6096,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ammonia emissions", "experiment_id":"piClim-NH3", @@ -6098,7 +6120,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions", "experiment_id":"piClim-NOx", @@ -6146,7 +6168,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions", "experiment_id":"piClim-O3", @@ -6170,7 +6192,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 organic carbon emissions", "experiment_id":"piClim-OC", @@ -6193,7 +6216,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 SO2 emissions", "experiment_id":"piClim-SO2", @@ -6216,7 +6240,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions", "experiment_id":"piClim-VOC", @@ -6242,7 +6266,8 @@ ], "additional_allowed_model_components":[ "AER", - "CHEM" + "CHEM", + "BGC" ], "experiment":"effective radiative forcing by present-day aerosols", "experiment_id":"piClim-aer", @@ -6289,7 +6314,8 @@ ], "additional_allowed_model_components":[ "AER", - "CHEM" + "CHEM", + "BGC" ], "experiment":"effective radiative forcing in present-day", "experiment_id":"piClim-control", @@ -7033,7 +7059,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"SSP3-7.0, with SSTs prescribed from ssp370", "experiment_id":"ssp370SST", @@ -7056,7 +7083,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"SSP3-7.0, prescribed SSTs, with low aerosol emissions", "experiment_id":"ssp370SST-lowAer", @@ -7079,7 +7107,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"SSP3-7.0, prescribed SSTs, with low black carbon emissions", "experiment_id":"ssp370SST-lowBC", @@ -7102,7 +7131,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"SSP3-7.0, prescribed SSTs, with low methane concentrations", "experiment_id":"ssp370SST-lowCH4", @@ -7150,7 +7179,7 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "" + "BGC" ], "experiment":"SSP3-7.0, prescribed SSTs, with low ozone precursor emissions", "experiment_id":"ssp370SST-lowO3", @@ -7174,7 +7203,8 @@ "AerChemMIP" ], "additional_allowed_model_components":[ - "CHEM" + "CHEM", + "BGC" ], "experiment":"SSP3-7.0, prescribed SSTs, with SSP1-2.6 land use", "experiment_id":"ssp370SST-ssp126Lu", @@ -7634,4 +7664,4 @@ "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" ] } -} +} \ No newline at end of file diff --git a/TestTables/CMIP6_E1hr.json b/TestTables/CMIP6_E1hr.json index e941d591..e88c53b9 100644 --- a/TestTables/CMIP6_E1hr.json +++ b/TestTables/CMIP6_E1hr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table E1hr", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.017361", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "includes both liquid and solid phases", "dimensions": "longitude latitude time", "out_name": "pr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -74,11 +75,11 @@ "units": "W m-2", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", + "long_name": "TOA Outgoing Longwave Radiation", "comment": "at the top of the atmosphere (to be compared with satellite measurements)", "dimensions": "longitude latitude time1", "out_name": "rlut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev3 time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev27 time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "", "dimensions": "longitude latitude plev3 time1", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time1", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", "dimensions": "longitude latitude plev27 time1", "out_name": "utendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "", "dimensions": "longitude latitude plev3 time1", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time1", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", "dimensions": "longitude latitude plev27 time1", "out_name": "vtendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time1", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_E1hrClimMon.json b/TestTables/CMIP6_E1hrClimMon.json index 41d2ea7c..9500d33b 100644 --- a/TestTables/CMIP6_E1hrClimMon.json +++ b/TestTables/CMIP6_E1hrClimMon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table E1hrClimMon", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.017361", "generic_levels": "", @@ -20,11 +21,11 @@ "units": "W m-2", "cell_methods": "area: mean time: mean within days time: mean over days", "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", + "long_name": "TOA Outgoing Longwave Radiation", "comment": "at the top of the atmosphere (to be compared with satellite measurements)", "dimensions": "longitude latitude time3", "out_name": "rlut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Upwelling clear-sky longwave radiation at top of atmosphere", "dimensions": "longitude latitude time3", "out_name": "rlutcs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "at the top of the atmosphere", "dimensions": "longitude latitude time3", "out_name": "rsut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Calculated in the absence of clouds.", "dimensions": "longitude latitude time3", "out_name": "rsutcs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_E3hr.json b/TestTables/CMIP6_E3hr.json index 5c71ae3b..4e8c7ced 100644 --- a/TestTables/CMIP6_E3hr.json +++ b/TestTables/CMIP6_E3hr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table E3hr", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.125000", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", "dimensions": "longitude latitude time", "out_name": "clivi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -61,7 +62,7 @@ "dimensions": "longitude latitude time", "out_name": "gpp", "type": "real", - "positive": "down", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -78,7 +79,7 @@ "comment": "Convection precipitation from shallow convection", "dimensions": "longitude latitude time", "out_name": "prcsh", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "prrc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -218,11 +219,11 @@ "units": "W m-2", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", + "long_name": "TOA Outgoing Longwave Radiation", "comment": "at the top of the atmosphere (to be compared with satellite measurements)", "dimensions": "longitude latitude time", "out_name": "rlut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Upwelling clear-sky longwave radiation at top of atmosphere", "dimensions": "longitude latitude time", "out_name": "rlutcs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "at the top of the atmosphere", "dimensions": "longitude latitude time", "out_name": "rsut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "Calculated in the absence of clouds.", "dimensions": "longitude latitude time", "out_name": "rsutcs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "Eastward component of the near-surface (usually, 10 meters) wind", "dimensions": "longitude latitude time height10m", "out_name": "uas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_E3hrPt.json b/TestTables/CMIP6_E3hrPt.json index 60479a32..4b4b6974 100644 --- a/TestTables/CMIP6_E3hrPt.json +++ b/TestTables/CMIP6_E3hrPt.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table E3hrPt", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.125000", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "", "dimensions": "longitude latitude alevel spectband time1", "out_name": "aerasymbnd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "", "dimensions": "longitude latitude alevel spectband time1", "out_name": "aeroptbnd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "", "dimensions": "longitude latitude alevel spectband time1", "out_name": "aerssabnd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -71,14 +72,14 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "band_diffuse_albedo", - "units": "1.0", + "units": "1", "cell_methods": "time: point", "cell_measures": "area: areacella", "long_name": "Diffuse surface albedo for each band", "comment": "", "dimensions": "longitude latitude spectband time1", "out_name": "albdiffbnd", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -89,14 +90,14 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "band_direct_albedo", - "units": "1.0", + "units": "1", "cell_methods": "time: point", "cell_measures": "area: areacella", "long_name": "Direct surface albedo for each band", "comment": "", "dimensions": "longitude latitude spectband time1", "out_name": "albdirbnd", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -107,7 +108,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "CloudSat Radar Reflectivity", @@ -125,7 +126,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "CALIPSO Scattering Ratio", @@ -150,7 +151,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "ch4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Cloud percentage in spectral bands and layers as observed by the Multi-angle Imaging SpectroRadiometer (MISR) instrument.", "dimensions": "longitude latitude alt16 tau time1", "out_name": "clmisr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "co2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -323,14 +324,14 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -341,14 +342,14 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadIc tau time1", "out_name": "jpdftaureicemodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadLi tau time1", "out_name": "jpdftaureliqmodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "n2o", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "o3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -431,7 +432,7 @@ "frequency": "3hrPt", "modeling_realm": "atmos", "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: point", "cell_measures": "area: areacella", "long_name": "PARASOL Reflectance", @@ -456,7 +457,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time1", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -520,7 +521,7 @@ "rsdcsbnd": { "frequency": "3hrPt", "modeling_realm": "atmos", - "standard_name": "band_downwelling_shortwave_flux_assuming_clear_sky", + "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", "units": "W m-2", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", @@ -619,7 +620,7 @@ "dimensions": "longitude latitude alevel time1", "out_name": "rsucsaf", "type": "real", - "positive": "", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -637,7 +638,7 @@ "dimensions": "longitude latitude alevel spectband time1", "out_name": "rsucsafbnd", "type": "real", - "positive": "", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -646,7 +647,7 @@ "rsucsbnd": { "frequency": "3hrPt", "modeling_realm": "atmos", - "standard_name": "band_upwelling_shortwave_flux_assuming_clear_sky", + "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", "units": "W m-2", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", @@ -655,7 +656,7 @@ "dimensions": "longitude latitude alevel spectband time1", "out_name": "rsucsbnd", "type": "real", - "positive": "", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -726,7 +727,7 @@ "comment": "Flux corresponding to rsutcs resulting from aerosol-free call to radiation, following Ghan (ACP, 2013)", "dimensions": "longitude latitude time1", "out_name": "rsutcsaf", - "type": "float", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -744,7 +745,7 @@ "comment": "Calculated in the absence of aerosols and clouds, following Ghan (2013, ACP). This requires a double-call in the radiation code with precisely the same meteorology.", "dimensions": "longitude latitude spectband time1", "out_name": "rsutcsafbnd", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -762,7 +763,7 @@ "comment": "Calculated with aerosols but without clouds. This is a standard clear-sky calculation", "dimensions": "longitude latitude spectband time1", "out_name": "rsutcsbnd", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -772,15 +773,15 @@ "solbnd": { "frequency": "3hrPt", "modeling_realm": "atmos", - "standard_name": "band_solar_insolation", + "standard_name": "solar_irradiance", "units": "W m-2", "cell_methods": "time: point", "cell_measures": "area: areacella", "long_name": "Top-of-Atmosphere Solar Insolation for each band", - "comment": "", + "comment": "Solar irradiance at a horizontal surface at top of atmosphere.", "dimensions": "longitude latitude spectband time1", "out_name": "solbnd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -798,7 +799,7 @@ "comment": "The angle between the line of sight to the sun and the local vertical", "dimensions": "longitude latitude time1", "out_name": "sza", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -816,7 +817,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev7h time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -834,7 +835,7 @@ "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -852,7 +853,7 @@ "comment": "", "dimensions": "longitude latitude plev7h time1", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_E6hrZ.json b/TestTables/CMIP6_E6hrZ.json index 215bb74b..2caab197 100644 --- a/TestTables/CMIP6_E6hrZ.json +++ b/TestTables/CMIP6_E6hrZ.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table E6hrZ", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.250000", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "latitude time", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "longwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", "dimensions": "latitude alevel time1", "out_name": "zmlwaero", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", "dimensions": "latitude alevel time1", "out_name": "zmswaero", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Eday.json b/TestTables/CMIP6_Eday.json index 48901fd8..08784065 100644 --- a/TestTables/CMIP6_Eday.json +++ b/TestTables/CMIP6_Eday.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Eday", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "", @@ -35,14 +36,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "canopy_albedo", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Canopy Albedo", "comment": "", "dimensions": "longitude latitude time", "out_name": "albc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -53,14 +54,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "snow_and_ice_albedo", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Snow Albedo", "comment": "Albedo of the snow-covered surface, averaged over the grid cell.", "dimensions": "longitude latitude time", "out_name": "albsn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "aerosol optical depth at 550 nm due to stratospheric volcanic aerosols", "dimensions": "longitude latitude time", "out_name": "aod550volso4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "ares", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Droplets are liquid only. Report concentration 'as seen from space' over convective liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", "dimensions": "longitude latitude time", "out_name": "ccldncl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Concentration 'as seen from space' over ice-cloud portion of grid cell. This is the value from uppermost model layer with ice cloud or, if available, it is the sum over all ice cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total ice cloud top fraction (as seen from TOA) of each time sample when computing monthly mean.", "dimensions": "longitude latitude time", "out_name": "cldnci", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Droplets are liquid only. Values are weighted by liquid cloud fraction in each layer when vertically integrating, and for monthly means the samples are weighted by total liquid cloud fraction (as seen from TOA).", "dimensions": "longitude latitude time", "out_name": "cldnvi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "calculate mass of convective ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", "dimensions": "longitude latitude time", "out_name": "clivic", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "calculate mass of convective condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", "dimensions": "longitude latitude time", "out_name": "clwvic", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cnc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "dcw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Depth from surface to the first zero degree isotherm. Above this isotherm T < 0o, and below this line T > 0o.", "dimensions": "longitude latitude time", "out_name": "dfr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "dgw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "Depth from surface to the zero degree isotherm. Above this isotherm T > 0o, and below this line T < 0o.", "dimensions": "longitude latitude time", "out_name": "dmlt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "drivw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "dslw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "dsn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "dsw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Change in heat storage over the soil layer and the vegetation for which the energy balance is calculated, accumulated over the sampling time interval.", "dimensions": "longitude latitude time", "out_name": "dtes", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Change in cold content over the snow layer for which the energy balance is calculated, accumulated over the sampling time interval. This should also include the energy contained in the liquid water in the snow pack.", "dimensions": "longitude latitude time", "out_name": "dtesn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "ec", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "eow", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "es", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "esn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,7 +511,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "et", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "at surface; potential flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", "dimensions": "longitude latitude time", "out_name": "evspsblpot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -546,7 +547,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "hfdsl", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "Heat flux from snow into the ice or land under the snow.", "dimensions": "longitude latitude time", "out_name": "hfdsnb", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "Energy consumed or released during liquid/solid phase changes.", "dimensions": "longitude latitude time", "out_name": "hfmlt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -636,7 +637,7 @@ "comment": "Heat transferred to a snow cover by rain..", "dimensions": "longitude latitude time", "out_name": "hfrs", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "Energy consumed or released during vapor/solid phase changes.", "dimensions": "longitude latitude time", "out_name": "hfsbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -690,7 +691,7 @@ "comment": "minimum near-surface (usually, 2 meter) relative humidity (add cell_method attribute 'time: min')", "dimensions": "longitude latitude time height2m", "out_name": "hursminCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -701,14 +702,14 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev19 time", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -719,14 +720,14 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude time p850", "out_name": "hus850", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -744,7 +745,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadIc tau time", "out_name": "jpdftaureicemodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -762,7 +763,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadLi tau time", "out_name": "jpdftaureliqmodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -773,14 +774,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "leaf_area_index", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Leaf Area Index", "comment": "", "dimensions": "longitude latitude time", "out_name": "lai", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -798,7 +799,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadbc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -816,7 +817,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loaddust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -834,7 +835,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadnh4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -852,7 +853,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadno3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -870,7 +871,7 @@ "comment": "atmosphere dry organic content: This is the vertically integrated sum of atmosphere_primary_organic_content and atmosphere_secondary_organic_content (see next two table entries).", "dimensions": "longitude latitude time", "out_name": "loadoa", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -888,7 +889,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadpoa", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -906,7 +907,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadso4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -924,7 +925,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadsoa", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -942,7 +943,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadss", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -989,14 +990,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "mass_fraction_of_frozen_water_in_soil_moisture", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Average layer fraction of frozen moisture", "comment": "Fraction of soil moisture mass in the solid phase in each user-defined soil layer (3D variable)", "dimensions": "longitude latitude sdepth time", "out_name": "mrfsofr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1007,14 +1008,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "mass_fraction_of_unfrozen_water_in_soil_moisture", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Average layer fraction of liquid moisture", "comment": "Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)", "dimensions": "longitude latitude sdepth time", "out_name": "mrlqso", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1032,7 +1033,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "mrrob", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1068,7 +1069,7 @@ "comment": "in each soil layer, the mass of water in ice phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1086,7 +1087,7 @@ "comment": "in each soil layer, the mass of water in liquid phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsll", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1104,7 +1105,7 @@ "comment": "in each soil layer, the mass of water in all phases, including ice. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsol", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1115,14 +1116,14 @@ "frequency": "day", "modeling_realm": "land", "standard_name": "volume_fraction_of_condensed_water_in_soil_at_field_capacity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Total Soil Wetness", "comment": "Vertically integrated soil moisture divided by maximum allowable soil moisture above wilting point.", "dimensions": "longitude latitude time", "out_name": "mrsow", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1140,7 +1141,7 @@ "comment": "Mass of water in all phases and in all components including soil, canopy, vegetation, ice sheets, rivers and ground water.", "dimensions": "longitude latitude time", "out_name": "mrtws", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1158,7 +1159,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nudgincsm", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1176,7 +1177,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nudgincswe", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1187,7 +1188,7 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacella", "long_name": "PARASOL Reflectance", @@ -1230,7 +1231,7 @@ "comment": "includes both liquid and solid phases", "dimensions": "longitude latitude time", "out_name": "prCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1248,7 +1249,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "prhmax", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1284,7 +1285,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "prrc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1302,7 +1303,7 @@ "comment": "The fraction of the grid averaged rainfall which falls on the snow pack", "dimensions": "longitude latitude time", "out_name": "prrsn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1338,7 +1339,7 @@ "comment": "The fraction of the snowfall which falls on the snow pack", "dimensions": "longitude latitude time", "out_name": "prsnsn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1392,7 +1393,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "qgwr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1410,7 +1411,7 @@ "comment": "Droplets are liquid only. This is the effective radius 'as seen from space' over convective liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Reported values are weighted by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.daily data, separated to large-scale clouds, convective clouds. If any of the cloud is from more than one process (i.e. shallow convection), please provide them separately.", "dimensions": "longitude latitude time", "out_name": "reffcclwtop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1428,7 +1429,7 @@ "comment": "Droplets are liquid only. This is the effective radius 'as seen from space' over liquid stratiform cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, or for some models it is the sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Reported values are weighted by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.daily data, separated to large-scale clouds, convective clouds. If any of the cloud is from more than one process (i.e. shallow convection), please provide them separately.", "dimensions": "longitude latitude time", "out_name": "reffsclwtop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1446,7 +1447,7 @@ "comment": "Inflow of River Water into Cell", "dimensions": "longitude latitude time", "out_name": "rivi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1464,7 +1465,7 @@ "comment": "Outflow of River Water from Cell", "dimensions": "longitude latitude time", "out_name": "rivo", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1482,7 +1483,7 @@ "comment": "Net longwave surface radiation", "dimensions": "longitude latitude time", "out_name": "rls", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1536,7 +1537,7 @@ "comment": "Net downward shortwave radiation at the surface", "dimensions": "longitude latitude time", "out_name": "rss", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -1554,7 +1555,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rzwc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1590,7 +1591,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "sblnosn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1608,7 +1609,7 @@ "comment": "Droplets are liquid only. Report concentration 'as seen from space' over stratiform liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", "dimensions": "longitude latitude time", "out_name": "scldncl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1662,7 +1663,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "snmsl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1680,7 +1681,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "snrefr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1698,7 +1699,7 @@ "comment": "Total water mass of the snowpack (liquid or frozen), averaged over a grid cell and interecepted by the canopy.", "dimensions": "longitude latitude time", "out_name": "snwc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1734,7 +1735,7 @@ "comment": "Total liquid water storage, other than soil, snow or interception storage (i.e. lakes, river channel or depression storage).", "dimensions": "longitude latitude time", "out_name": "sw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1752,7 +1753,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "t20d", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1770,7 +1771,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev19 time", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1788,7 +1789,7 @@ "comment": "Temperature on the 500 hPa surface", "dimensions": "longitude latitude time p500", "out_name": "ta500", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1806,7 +1807,7 @@ "comment": "Air temperature at 850hPa", "dimensions": "longitude latitude time p850", "out_name": "ta850", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1824,7 +1825,7 @@ "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", "dimensions": "longitude latitude time height2m", "out_name": "tasmaxCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1842,7 +1843,7 @@ "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", "dimensions": "longitude latitude time height2m", "out_name": "tasminCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1860,7 +1861,7 @@ "comment": "module of the momentum lost by the atmosphere to the surface.", "dimensions": "longitude latitude time", "out_name": "tau", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1896,7 +1897,7 @@ "comment": "The downward eastward stress associated with the models parameterization of the planetary boundary layer. (This request is related to a WGNE effort to understand how models parameterize the surface stresses.)", "dimensions": "longitude latitude time", "out_name": "tauupbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1932,7 +1933,7 @@ "comment": "The downward northward stress associated with the models parameterization of the planetary boundary layer. (This request is related to a WGNE effort to understand how models parameterize the surface stresses.)", "dimensions": "longitude latitude time", "out_name": "tauvpbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1950,7 +1951,7 @@ "comment": "Vegetation temperature, averaged over all vegetation types", "dimensions": "longitude latitude time", "out_name": "tcs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1968,7 +1969,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "tdps", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1986,7 +1987,7 @@ "comment": "Surface bare soil temperature", "dimensions": "longitude latitude time", "out_name": "tgs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2022,7 +2023,7 @@ "comment": "Effective radiative surface temperature, averaged over the grid cell", "dimensions": "longitude latitude time", "out_name": "tr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2073,7 +2074,7 @@ "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", + "comment": "Temperature of soil. Reported as missing for grid cells with no land.", "dimensions": "longitude latitude sdepth time", "out_name": "tsl", "type": "real", @@ -2083,6 +2084,24 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, + "tsland": { + "frequency": "day", + "modeling_realm": "atmos", + "standard_name": "surface_temperature", + "units": "K", + "cell_methods": "area: mean where land time: mean", + "cell_measures": "area: areacella", + "long_name": "Surface Temperature", + "comment": "Temperature of the lower boundary of the atmosphere", + "dimensions": "longitude latitude time", + "out_name": "ts", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, "tsnl": { "frequency": "day", "modeling_realm": "land", @@ -2092,9 +2111,9 @@ "cell_measures": "area: areacella", "long_name": "Temperature profile in the snow", "comment": "Temperature in the snow pack present in the grid-cell. 3D variable for multi-layer snow schemes.", - "dimensions": "longitude latitude time", + "dimensions": "longitude latitude snowdepth time", "out_name": "tsnl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2112,7 +2131,7 @@ "comment": "Temperature of the snow surface as it interacts with the atmosphere, averaged over a grid cell.", "dimensions": "longitude latitude time", "out_name": "tsns", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2130,7 +2149,7 @@ "comment": "", "dimensions": "longitude latitude plev19 time", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2148,7 +2167,7 @@ "comment": "", "dimensions": "longitude latitude plev19 time", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2184,7 +2203,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wtd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2202,7 +2221,7 @@ "comment": "", "dimensions": "longitude latitude plev19 time", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2220,7 +2239,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "zmla", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_EdayZ.json b/TestTables/CMIP6_EdayZ.json index 4d1570e1..8e63a737 100644 --- a/TestTables/CMIP6_EdayZ.json +++ b/TestTables/CMIP6_EdayZ.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table EdayZ", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fy of Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3a of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", "dimensions": "latitude plev39 time", "out_name": "epfy", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fz of the Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3b of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", "dimensions": "latitude plev39 time", "out_name": "epfz", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -53,14 +54,14 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "longitude: mean time: mean", "cell_measures": "", "long_name": "Specific Humidity", "comment": "", "dimensions": "latitude plev19 time", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Residual mass streamfunction, computed from vstar and integrated from the top of the atmosphere (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Academic Press.", "dimensions": "latitude plev39 time", "out_name": "psitem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Air Temperature", "dimensions": "latitude plev19 time", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Tendency of the zonal mean zonal wind due to the divergence of the Eliassen-Palm flux.", "dimensions": "latitude plev39 time", "out_name": "utendepfd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", "dimensions": "latitude plev39 time", "out_name": "utendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Tendency of the eastward wind by parameterized orographic gravity waves.", "dimensions": "latitude plev39 time", "out_name": "utendogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Tendency of zonally averaged eastward wind, by the residual upward wind advection (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Academic Press.", "dimensions": "latitude plev39 time", "out_name": "utendvtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Tendency of zonally averaged eastward wind, by the residual northward wind advection (on the native model grid). Reference: Andrews et al (1987): Middle Atmospheric Dynamics. Academic Press.", "dimensions": "latitude plev39 time", "out_name": "utendwtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "latitude plev19 time", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Transformed Eulerian Mean Diagnostics v*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available).", "dimensions": "latitude plev39 time", "out_name": "vtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "Transformed Eulerian Mean Diagnostics w*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Scale height: 6950 m", "dimensions": "latitude plev39 time", "out_name": "wtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "latitude plev19 time", "out_name": "zg", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Efx.json b/TestTables/CMIP6_Efx.json index 63cfcc54..fe979c6b 100644 --- a/TestTables/CMIP6_Efx.json +++ b/TestTables/CMIP6_Efx.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Efx", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.00000", "generic_levels": "alevel olevel", @@ -17,14 +18,14 @@ "frequency": "fx", "modeling_realm": "land", "standard_name": "volume_fraction_of_clay_in_soil", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land", "cell_measures": "area: areacella", "long_name": "Clay Fraction", "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "clayfrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "fldcapacity", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "ksat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "rootdsl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -179,14 +180,14 @@ "frequency": "fx", "modeling_realm": "land", "standard_name": "missing", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land", "cell_measures": "area: areacella", "long_name": "Sand Fraction", "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "sandfrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -201,10 +202,10 @@ "cell_methods": "area: mean", "cell_measures": "area: areacella", "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", + "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over sea water", "dimensions": "longitude latitude typefis", "out_name": "sftflf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Fraction of grid cell covered by grounded ice sheet", "dimensions": "longitude latitude typegis", "out_name": "sftgrf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -233,14 +234,14 @@ "frequency": "fx", "modeling_realm": "atmos", "standard_name": "missing", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land", "cell_measures": "area: areacella", "long_name": "Silt Fraction", "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "siltfrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "slthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "longitude latitude", "out_name": "vegHeight", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "", "dimensions": "longitude latitude sdepth", "out_name": "wilt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Emon.json b/TestTables/CMIP6_Emon.json index a57367ba..0d58deb3 100644 --- a/TestTables/CMIP6_Emon.json +++ b/TestTables/CMIP6_Emon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Emon", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel olevel", @@ -24,7 +25,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "H2p", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "H2s", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude alevel time", "out_name": "H2wv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "O17p", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "O17s", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude alevel time", "out_name": "O17wv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "O18p", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude time", "out_name": "O18s", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude olevel time", "out_name": "O18sw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Roche - LSCE", "dimensions": "longitude latitude alevel time", "out_name": "O18wv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c13Land", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c13Litter", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c13Soil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c13Veg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c14Land", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c14Litter", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c14Soil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "c14Veg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "cLand", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cLitterCwd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cLitterGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cLitterShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "sub-surface litter pool fed by root inputs.", "dimensions": "longitude latitude time", "out_name": "cLitterSubSurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "Surface or near-surface litter pool fed by leaf and above-ground litterfall", "dimensions": "longitude latitude time", "out_name": "cLitterSurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cLitterTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "E.g. fruits, seeds, etc.", "dimensions": "longitude latitude time", "out_name": "cOther", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -520,7 +521,7 @@ "cSoilAbove1m": { "frequency": "mon", "modeling_realm": "land", - "standard_name": "soil_carbon_content_above_1m_depth", + "standard_name": "soil_carbon_content", "units": "kg m-2", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", @@ -528,7 +529,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "cSoilAbove1m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -538,7 +539,7 @@ "cSoilBelow1m": { "frequency": "mon", "modeling_realm": "land", - "standard_name": "soil_carbon_content_below_1m_depth", + "standard_name": "soil_carbon_content", "units": "kg m-2", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", @@ -546,7 +547,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cSoilBelow1m", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cSoilGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -574,15 +575,15 @@ "cSoilLevels": { "frequency": "mon", "modeling_realm": "land", - "standard_name": "soil_carbon_content_on_model_levels", + "standard_name": "soil_carbon_content", "units": "kg m-2", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Carbon mass in each model soil level (summed over all soil carbon pools in that level)", "comment": "for models with vertically discretised soil carbon, report total soil carbon for each level", - "dimensions": "longitude latitude time", + "dimensions": "longitude latitude sdepth time", "out_name": "cSoilLevels", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "for models with multiple soil carbon pools, report each pool here. If models also have vertical discretaisation these should be aggregated", "dimensions": "longitude latitude soilpools time1", "out_name": "cSoilPools", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cSoilShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -636,7 +637,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cSoilTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "including sapwood and hardwood.", "dimensions": "longitude latitude time", "out_name": "cStem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -672,7 +673,7 @@ "comment": "Different from LMON this flux should include all fires occurring on the land use tile, including natural, man-made and deforestation fires", "dimensions": "longitude latitude landUse time", "out_name": "cTotFireLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -690,7 +691,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cVegGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -708,7 +709,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cVegShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -726,7 +727,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cVegTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -755,7 +756,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "CloudSat Radar Reflectivity", @@ -773,7 +774,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "CALIPSO Scattering Ratio", @@ -798,7 +799,7 @@ "comment": "", "dimensions": "longitude latitude alt40 time", "out_name": "clcalipsoice", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -816,7 +817,7 @@ "comment": "", "dimensions": "longitude latitude alt40 time", "out_name": "clcalipsoliq", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -827,14 +828,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "cloud_ice_mixing_ratio", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Cloud Ice Mixing Ratio", "comment": "Cloud ice mixing ratio", "dimensions": "longitude latitude plev27 time", "out_name": "cldicemxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -852,7 +853,7 @@ "comment": "Concentration 'as seen from space' over ice-cloud portion of grid cell. This is the value from uppermost model layer with ice cloud or, if available, it is the sum over all ice cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total ice cloud top fraction (as seen from TOA) of each time sample when computing monthly mean.", "dimensions": "longitude latitude time", "out_name": "cldnci", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -870,7 +871,7 @@ "comment": "Droplets are liquid only. Report concentration 'as seen from space' over liquid cloudy portion of grid cell. This is the value from uppermost model layer with liquid cloud or, if available, it is better to sum over all liquid cloud tops, no matter where they occur, as long as they are seen from the top of the atmosphere. Weight by total liquid cloud top fraction of (as seen from TOA) each time sample when computing monthly mean.", "dimensions": "longitude latitude time", "out_name": "cldncl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -888,7 +889,7 @@ "comment": "Droplets are liquid only. Values are weighted by liquid cloud fraction in each layer when vertically integrating, and for monthly means the samples are weighted by total liquid cloud fraction (as seen from TOA).", "dimensions": "longitude latitude time", "out_name": "cldnvi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -899,14 +900,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "cloud_liquid_water_mixing_ratio", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Cloud Water Mixing Ratio", "comment": "Cloud water mixing ratio", "dimensions": "longitude latitude plev27 time", "out_name": "cldwatmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -924,7 +925,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "climodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -942,7 +943,7 @@ "comment": "Cloud percentage in spectral bands and layers as observed by the Multi-angle Imaging SpectroRadiometer (MISR) instrument.", "dimensions": "longitude latitude alt16 tau time", "out_name": "clmisr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -960,7 +961,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "cltmodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -978,7 +979,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "clwmodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -996,7 +997,7 @@ "comment": "calculate mass of convective condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", "dimensions": "longitude latitude time", "out_name": "clwvic", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1014,7 +1015,7 @@ "comment": "report 3D field of model simulated atmospheric CO2 mass mixing ration on model levels", "dimensions": "longitude latitude alevel time", "out_name": "co23D", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1032,7 +1033,7 @@ "comment": "As co2, but only at the surface", "dimensions": "longitude latitude time", "out_name": "co2s", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1050,7 +1051,7 @@ "comment": "Column integral of (mcu-mcd)", "dimensions": "longitude latitude time", "out_name": "columnmassflux", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1068,7 +1069,7 @@ "comment": "includes all particles with diameter larger than 1 micron", "dimensions": "longitude latitude alevel time", "out_name": "conccmcn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1086,7 +1087,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "conccn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1104,7 +1105,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "concdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1122,7 +1123,7 @@ "comment": "includes all particles with diameter smaller than 3 nm", "dimensions": "longitude latitude alevel time", "out_name": "concnmcn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1140,7 +1141,7 @@ "comment": "Percentage of entire grid cell covered by C3 crops", "dimensions": "longitude latitude time typec3pft typecrop", "out_name": "cropFracC3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1158,7 +1159,7 @@ "comment": "Percentage of entire grid cell covered by C4 crops", "dimensions": "longitude latitude time typec4pft typecrop", "out_name": "cropFracC4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1176,7 +1177,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "depdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1194,7 +1195,7 @@ "comment": "Other sub-grid scale/numerical zonal drag excluding that already provided for the parameterized orographic and non-orographic gravity waves. This would be used to calculate the total 'diabatic drag'. Contributions to this additional drag such Rayleigh friction and diffusion that can be calculated from the monthly mean wind fields should not be included, but details (e.g. coefficients) of the friction and/or diffusion used in the model should be provided separately.", "dimensions": "longitude latitude plev19 time", "out_name": "diabdrag", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1212,7 +1213,7 @@ "comment": "", "dimensions": "longitude latitude olevel time", "out_name": "dissi14c", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1230,7 +1231,7 @@ "comment": "Aerosol Extinction at 550nm", "dimensions": "longitude latitude alevel time", "out_name": "ec550aer", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1248,8 +1249,8 @@ "comment": "at surface; potential flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", "dimensions": "longitude latitude time", "out_name": "evspsblpot", - "type": "", - "positive": "up", + "type": "real", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1303,7 +1304,7 @@ "dimensions": "longitude latitude olevel time", "out_name": "expfe", "type": "real", - "positive": "", + "positive": "down", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1374,7 +1375,7 @@ "comment": "will require some careful definition to make sure we capture everything - any human activity that releases carbon to the atmosphere instead of into product pool goes here. E.g. Deforestation fire, harvest assumed to decompose straight away, grazing...", "dimensions": "longitude latitude time", "out_name": "fAnthDisturb", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1392,7 +1393,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fBNF", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1410,7 +1411,7 @@ "comment": "leached carbon etc that goes into run off or river routing and finds its way into ocean should be reported here.", "dimensions": "longitude latitude time", "out_name": "fCLandToOcean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1428,7 +1429,7 @@ "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it should be straight-forward to compare deforested biomass across models.", "dimensions": "longitude latitude time", "out_name": "fDeforestToAtmos", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1446,7 +1447,7 @@ "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it should be straight-forward to compare deforested biomass across models.", "dimensions": "longitude latitude time", "out_name": "fDeforestToProduct", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1464,7 +1465,7 @@ "comment": "Only total fire emissions can be compared to observations.", "dimensions": "longitude latitude time", "out_name": "fFireAll", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1482,7 +1483,7 @@ "comment": "CO2 emissions from natural fires", "dimensions": "longitude latitude time", "out_name": "fFireNat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1500,7 +1501,7 @@ "comment": "any harvested carbon that is assumed to decompose immediately into the atmosphere is reported here", "dimensions": "longitude latitude time", "out_name": "fHarvestToAtmos", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1518,8 +1519,8 @@ "comment": "be it food or wood harvest, any carbon that is subsequently stored is reported here", "dimensions": "longitude latitude time", "out_name": "fHarvestToProduct", - "type": "", - "positive": "up", + "type": "real", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1536,7 +1537,7 @@ "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", "dimensions": "longitude latitude time", "out_name": "fLitterFire", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1572,8 +1573,8 @@ "comment": "This annual mean flux refers to the transfer of carbon directly to the atmosphere due to any land-use or land-cover change activities. Include carbon transferred due to deforestation or agricultural directly into atmosphere, and emissions form anthropogenic pools into atmosphere", "dimensions": "longitude latitude landUse time", "out_name": "fLulccAtmLut", - "type": "", - "positive": "", + "type": "real", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1590,7 +1591,7 @@ "comment": "This annual mean flux refers to the transfer of carbon primarily through harvesting land use into anthropogenic product pools, e.g.,deforestation or wood harvestingfrom primary or secondary lands, food harvesting on croplands, harvesting (grazing) by animals on pastures.", "dimensions": "longitude latitude landUse time", "out_name": "fLulccProductLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1608,7 +1609,7 @@ "comment": "This annual mean flux refers to the transfer of carbon into soil or litter pools due to any land use or land-cover change activities", "dimensions": "longitude latitude landUse time", "out_name": "fLulccResidueLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1626,8 +1627,8 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fN2O", - "type": "", - "positive": "", + "type": "real", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1644,7 +1645,7 @@ "comment": "will require some careful definition to make sure we capture everything - any human activity that releases nitrogen from land instead of into product pool goes here. E.g. Deforestation fire, harvest assumed to decompose straight away, grazing...", "dimensions": "longitude latitude time", "out_name": "fNAnthDisturb", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1662,7 +1663,7 @@ "comment": "leached nitrogen etc that goes into run off or river routing and finds its way into ocean should be reported here.", "dimensions": "longitude latitude time", "out_name": "fNLandToOcean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1680,7 +1681,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNLitterSoil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1698,8 +1699,8 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNOx", - "type": "", - "positive": "", + "type": "real", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1716,7 +1717,7 @@ "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it should be straight-forward to compare deforested biomass across models.", "dimensions": "longitude latitude time", "out_name": "fNProduct", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1734,7 +1735,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNVegLitter", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1752,7 +1753,7 @@ "comment": "In some models part of nitrogen (e.g., root exudate) can go directly into the soil pool without entering litter.", "dimensions": "longitude latitude time", "out_name": "fNVegSoil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1770,7 +1771,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNdep", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1788,7 +1789,7 @@ "comment": "relative to total land area of a grid cell, not relative to agricultural area", "dimensions": "longitude latitude time", "out_name": "fNfert", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1806,7 +1807,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNgas", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1824,7 +1825,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNgasFire", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1842,7 +1843,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNgasNonFire", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1860,7 +1861,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNleach", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1878,7 +1879,7 @@ "comment": "Not all models split losses into gasesous and leaching", "dimensions": "longitude latitude time", "out_name": "fNloss", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1896,7 +1897,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNnetmin", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1914,7 +1915,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fNup", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1932,7 +1933,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fProductDecomp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1950,7 +1951,7 @@ "comment": "If a model has explicit anthropogenic product pools by land use tile", "dimensions": "longitude latitude landUse time", "out_name": "fProductDecompLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1968,7 +1969,7 @@ "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", "dimensions": "longitude latitude time", "out_name": "fVegFire", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1986,7 +1987,7 @@ "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", "dimensions": "longitude latitude time", "out_name": "fVegLitterMortality", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2004,7 +2005,7 @@ "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", "dimensions": "longitude latitude time", "out_name": "fVegLitterSenescence", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2022,7 +2023,7 @@ "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", "dimensions": "longitude latitude time", "out_name": "fVegSoilMortality", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2040,7 +2041,7 @@ "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", "dimensions": "longitude latitude time", "out_name": "fVegSoilSenescence", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2058,8 +2059,8 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "fahLut", - "type": "", - "positive": "", + "type": "real", + "positive": "up", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -2292,7 +2293,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "fg14co2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2364,7 +2365,7 @@ "comment": "Computed as the water flux into the ocean due to land ice (runoff water from surface and base of land ice or melt from base of ice shelf or vertical ice front) into the ocean divided by the area ocean portion of the grid cell", "dimensions": "longitude latitude time", "out_name": "flandice", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2382,7 +2383,7 @@ "comment": "proposed name: lightning_flash_rate (units to be interpreted as 'counts km-2 s-1)", "dimensions": "longitude latitude time", "out_name": "flashrate", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2400,7 +2401,7 @@ "comment": "end of year values (not annual mean); note that fraction should be reported as fraction of land grid cell (example: frac_lnd = 0.5, frac_ocn = 0.5, frac_crop_lnd = 0.2 (of land portion of grid cell), then frac_lut(crop) = 0.5*0.2 = 0.1)", "dimensions": "longitude latitude landUse time", "out_name": "fracLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2418,7 +2419,7 @@ "comment": "Total GPP of grass in the gridcell", "dimensions": "longitude latitude time", "out_name": "gppGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2436,7 +2437,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "gppLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2454,7 +2455,7 @@ "comment": "Total GPP of shrubs in the gridcell", "dimensions": "longitude latitude time", "out_name": "gppShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2472,7 +2473,7 @@ "comment": "Total GPP of trees in the gridcell", "dimensions": "longitude latitude time", "out_name": "gppTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2490,7 +2491,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "gppc13", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2508,7 +2509,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "gppc14", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2526,7 +2527,7 @@ "comment": "Fraction of entire grid cell covered by C3 grass.", "dimensions": "longitude latitude time typec3pft typenatgr", "out_name": "grassFracC3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2544,7 +2545,7 @@ "comment": "Fraction of entire grid cell covered by C4 grass.", "dimensions": "longitude latitude time typec4pft typenatgr", "out_name": "grassFracC4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2555,14 +2556,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_graupel_in_air", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Graupel Mixing Ratio", "comment": "Graupel mixing ratio", "dimensions": "longitude latitude plev27 time", "out_name": "grplmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2580,7 +2581,7 @@ "comment": "Used in PMIP2", "dimensions": "longitude latitude time depth300m", "out_name": "hcont300", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2598,7 +2599,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "hflsLut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -2616,7 +2617,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "hfssLut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -2634,7 +2635,7 @@ "comment": "minimum near-surface (usually, 2 meter) relative humidity (add cell_method attribute 'time: min')", "dimensions": "longitude latitude time height2m", "out_name": "hursminCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2645,14 +2646,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev7h time", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2663,14 +2664,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude plev27 time", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2681,14 +2682,14 @@ "frequency": "mon", "modeling_realm": "land", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where landuse", "cell_measures": "area: areacella", "long_name": "near-surface specific humidity on land use tile", "comment": "Normally, the specific humidity should be reported at the 2 meter height", "dimensions": "longitude latitude landUse time height2m", "out_name": "hussLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2706,7 +2707,7 @@ "comment": "Mass weighted vertical integral of the product of northward wind by dry static energy per unit mass: (cp.T +zg).u", "dimensions": "longitude latitude time", "out_name": "intuadse", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2724,7 +2725,7 @@ "comment": "Used in PMIP2", "dimensions": "longitude latitude time", "out_name": "intuaw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2742,7 +2743,7 @@ "comment": "Used in PMIP2", "dimensions": "longitude latitude time", "out_name": "intvadse", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2760,7 +2761,7 @@ "comment": "Used in PMIP2", "dimensions": "longitude latitude time", "out_name": "intvaw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2778,7 +2779,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "irrLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2796,7 +2797,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadIc tau time", "out_name": "jpdftaureicemodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2814,7 +2815,7 @@ "comment": "", "dimensions": "longitude latitude plev7c effectRadLi tau time", "out_name": "jpdftaureliqmodis", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2825,14 +2826,14 @@ "frequency": "mon", "modeling_realm": "land", "standard_name": "missing", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where landuse", "cell_measures": "area: areacella", "long_name": "Leaf Area Index on Land Use Tile", "comment": "Note that if tile does not model lai, for example, on the urban tile, then should be reported as missing value", "dimensions": "longitude latitude landUse time", "out_name": "laiLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2850,7 +2851,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loaddust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2868,7 +2869,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadso4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2886,7 +2887,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "loadss", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2904,7 +2905,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "lwsrfasdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2922,7 +2923,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "lwsrfcsdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2940,7 +2941,7 @@ "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", "dimensions": "longitude latitude time", "out_name": "lwtoaasdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2958,7 +2959,7 @@ "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", "dimensions": "longitude latitude time", "out_name": "lwtoacsaer", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2976,7 +2977,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "lwtoacsdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -2994,7 +2995,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude alevel time", "out_name": "md", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3012,7 +3013,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "mmrno3", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3030,7 +3031,7 @@ "comment": "the mass (summed over all all layers) of liquid water.", "dimensions": "longitude latitude time", "out_name": "mrlso", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3048,7 +3049,7 @@ "comment": "the total runoff (including 'drainage' through the base of the soil model) leaving the land use tile portion of the grid cell", "dimensions": "longitude latitude landUse time", "out_name": "mrroLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3066,7 +3067,7 @@ "comment": "in each soil layer, the mass of water in ice phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3084,7 +3085,7 @@ "comment": "in each soil layer, the mass of water in liquid phase. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsll", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3102,7 +3103,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "mrsoLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3120,7 +3121,7 @@ "comment": "in each soil layer, the mass of water in all phases, including ice. Reported as 'missing' for grid cells occupied entirely by 'sea'", "dimensions": "longitude latitude sdepth time", "out_name": "mrsol", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3138,7 +3139,7 @@ "comment": "the mass of water in all phases in a thin surface layer; integrate over uppermost 10cm", "dimensions": "longitude latitude landUse time sdepth1", "out_name": "mrsosLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3156,7 +3157,7 @@ "comment": "Mass of water in all phases and in all components including soil, canopy, vegetation, ice sheets, rivers and ground water.", "dimensions": "longitude latitude time", "out_name": "mrtws", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3174,7 +3175,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "nLand", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3192,7 +3193,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nLeaf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3210,7 +3211,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "nLitter", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3228,7 +3229,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nLitterCwd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3246,7 +3247,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nLitterSubSurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3264,7 +3265,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "nLitterSurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3282,7 +3283,7 @@ "comment": "SUM of ammonium, nitrite, nitrate, etc over all soil layers", "dimensions": "longitude latitude time", "out_name": "nMineral", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3300,7 +3301,7 @@ "comment": "SUM of ammonium over all soil layers", "dimensions": "longitude latitude time", "out_name": "nMineralNH4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3318,7 +3319,7 @@ "comment": "SUM of nitrate over all soil layers", "dimensions": "longitude latitude time", "out_name": "nMineralNO3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3336,7 +3337,7 @@ "comment": "E.g. fruits, seeds, etc.", "dimensions": "longitude latitude time", "out_name": "nOther", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3354,7 +3355,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "nProduct", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3372,7 +3373,7 @@ "comment": "including fine and coarse roots.", "dimensions": "longitude latitude time", "out_name": "nRoot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3390,7 +3391,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "nSoil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3408,7 +3409,7 @@ "comment": "including sapwood and hardwood.", "dimensions": "longitude latitude time", "out_name": "nStem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3426,7 +3427,7 @@ "comment": "Report missing data over ocean grid cells. For fractional land report value averaged over the land fraction.", "dimensions": "longitude latitude time", "out_name": "nVeg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3444,7 +3445,7 @@ "comment": "Computed as npp minus heterotrophic respiration minus fire minus C leaching minus harvesting/clearing. Positive rate is into the land, negative rate is from the land. Do not include fluxes from anthropogenic product pools to atmosphere", "dimensions": "longitude latitude landUse time", "out_name": "necbLut", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -3480,7 +3481,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "netAtmosLandC13Flux", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -3498,7 +3499,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "netAtmosLandC14Flux", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -3516,7 +3517,7 @@ "comment": "This flux should be reproducible by differencing the sum of all carbon pools (cVeg, cLitter, cSoil, and cProducts or equivalently cLand) from one time step to the next, except in the case of lateral transfer of carbon due to harvest, riverine transport of dissolved organic and/or inorganic carbon, or any other process (in which case the lateral_carbon_transfer_over_land term, see below, will be zero data).", "dimensions": "longitude latitude time", "out_name": "netAtmosLandCO2Flux", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -3534,7 +3535,7 @@ "comment": "Total NPP of grass in the gridcell", "dimensions": "longitude latitude time", "out_name": "nppGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3552,7 +3553,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "nppLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3570,7 +3571,7 @@ "comment": "added for completeness with npp_root", "dimensions": "longitude latitude time", "out_name": "nppOther", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3588,7 +3589,7 @@ "comment": "Total NPP of shrubs in the gridcell", "dimensions": "longitude latitude time", "out_name": "nppShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3606,7 +3607,7 @@ "comment": "added for completeness with npp_root", "dimensions": "longitude latitude time", "out_name": "nppStem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3624,7 +3625,7 @@ "comment": "Total NPP of trees in the gridcell", "dimensions": "longitude latitude time", "out_name": "nppTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3635,14 +3636,14 @@ "frequency": "mon", "modeling_realm": "land", "standard_name": "missing", - "units": "1", + "units": "%", "cell_methods": "area: mean where land over all_area_types time: mean", "cell_measures": "area: areacella", "long_name": "fraction of land use tile tile that is non-woody vegetation ( e.g. herbaceous crops)", "comment": "", "dimensions": "longitude latitude landUse time typenwd", "out_name": "nwdFracLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3652,7 +3653,7 @@ "ocontempdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3706,7 +3707,7 @@ "ocontemppmdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3724,7 +3725,7 @@ "ocontemppsmadvect": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3779,14 +3780,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Optical thickness at 443 nm Dust", "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "od443dust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3797,14 +3798,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "strat_aerosol_optical_depth", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Stratospheric Optical depth at 550 nm (all aerosols) 2D-field (here we limit the computation of OD to the stratosphere only)", "comment": "From tropopause to stratopause as defined by the model", "dimensions": "longitude latitude time", "out_name": "od550aerso", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3815,14 +3816,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "missing", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Stratospheric Optical depth at 550 nm (sulphate only) 2D-field (here we limit the computation of OD to the stratosphere only)", "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "od550so4so", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3833,14 +3834,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Optical thickness at 865 nm Dust", "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "od865dust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -3850,7 +3851,7 @@ "opottempdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3904,7 +3905,7 @@ "opottemppmdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3922,7 +3923,7 @@ "opottemppsmadvect": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -3994,7 +3995,7 @@ "osaltdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -4030,7 +4031,7 @@ "osaltpmdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -4048,7 +4049,7 @@ "osaltpsmadvect": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -4110,7 +4111,7 @@ "comment": "", "dimensions": "longitude latitude olevel time", "out_name": "pabigthetao", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4121,7 +4122,7 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "toa_bidirectional_reflectance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacella", "long_name": "PARASOL Reflectance", @@ -4146,7 +4147,7 @@ "comment": "Percentage of entire grid cell covered by C3 pasture", "dimensions": "longitude latitude time typec3pft typepasture", "out_name": "pastureFracC3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4164,7 +4165,7 @@ "comment": "Percentage of entire grid cell covered by C4 pasture", "dimensions": "longitude latitude time typec4pft typepasture", "out_name": "pastureFracC4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4182,7 +4183,7 @@ "comment": "", "dimensions": "longitude latitude olevel time", "out_name": "pathetao", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4290,7 +4291,7 @@ "comment": "includes both liquid and solid phases", "dimensions": "longitude latitude time", "out_name": "prCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4308,7 +4309,7 @@ "comment": "", "dimensions": "longitude latitude olevel time", "out_name": "prbigthetao", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4326,7 +4327,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "prhmax", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4344,7 +4345,7 @@ "comment": "", "dimensions": "longitude latitude olevel time", "out_name": "prthetao", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4380,7 +4381,7 @@ "comment": "Total RA of grass in the gridcell", "dimensions": "longitude latitude time", "out_name": "raGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4398,7 +4399,7 @@ "comment": "added for completeness with Ra_root", "dimensions": "longitude latitude time", "out_name": "raLeaf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4416,7 +4417,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "raLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4434,7 +4435,7 @@ "comment": "added for completeness with Ra_root", "dimensions": "longitude latitude time", "out_name": "raOther", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4452,7 +4453,7 @@ "comment": "Total autotrophic respiration from all belowground plant parts. This has benchmarking value because the sum of Rh and root respiration can be compared to observations of total soil respiration.", "dimensions": "longitude latitude time", "out_name": "raRoot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4470,7 +4471,7 @@ "comment": "Total RA of shrubs in the gridcell", "dimensions": "longitude latitude time", "out_name": "raShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4488,7 +4489,7 @@ "comment": "added for completeness with Ra_root", "dimensions": "longitude latitude time", "out_name": "raStem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4506,7 +4507,7 @@ "comment": "Total RA of trees in the gridcell", "dimensions": "longitude latitude time", "out_name": "raTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4524,7 +4525,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rac13", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4542,7 +4543,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rac14", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4553,14 +4554,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_rain_in_air", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "rain_mixing_ratio", "comment": "Rain mixing ratio", "dimensions": "longitude latitude plev27 time", "out_name": "rainmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4650,7 +4651,7 @@ "comment": "Total RH of grass in the gridcell", "dimensions": "longitude latitude time", "out_name": "rhGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4668,7 +4669,7 @@ "comment": "Needed to calculate litter bulk turnover time. Includes respiration from CWD as well.", "dimensions": "longitude latitude time", "out_name": "rhLitter", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4686,7 +4687,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "rhLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4704,7 +4705,7 @@ "comment": "Total RH of shrubs in the gridcell", "dimensions": "longitude latitude time", "out_name": "rhShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4722,7 +4723,7 @@ "comment": "Needed to calculate soil bulk turnover time", "dimensions": "longitude latitude time", "out_name": "rhSoil", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4740,7 +4741,7 @@ "comment": "Total RH of trees in the gridcell", "dimensions": "longitude latitude time", "out_name": "rhTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4758,7 +4759,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rhc13", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4776,7 +4777,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rhc14", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4794,7 +4795,7 @@ "comment": "Net longwave surface radiation", "dimensions": "longitude latitude time", "out_name": "rls", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -4812,7 +4813,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "rlusLut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -4831,7 +4832,7 @@ "dimensions": "longitude latitude olevel time", "out_name": "rsdoabsorb", "type": "real", - "positive": "down", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -4884,7 +4885,7 @@ "comment": "Net downward shortwave radiation at the surface", "dimensions": "longitude latitude time", "out_name": "rss", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -4920,7 +4921,7 @@ "comment": "mass concentration of dust dry aerosol in air in model lowest layer", "dimensions": "longitude latitude time", "out_name": "sconcdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4938,7 +4939,7 @@ "comment": "mass concentration of sulfate dry aerosol in air in model lowest layer.", "dimensions": "longitude latitude time", "out_name": "sconcso4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4956,7 +4957,7 @@ "comment": "mass concentration of seasalt dry aerosol in air in model lowest layer", "dimensions": "longitude latitude time", "out_name": "sconcss", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -4974,7 +4975,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "sedustCI", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5003,14 +5004,14 @@ "frequency": "mon", "modeling_realm": "atmos", "standard_name": "mass_fraction_of_snow_in_air", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "snow_mixing_ratio", "comment": "Snow mixing ratio", "dimensions": "longitude latitude plev27 time", "out_name": "snowmxrat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5046,7 +5047,7 @@ "comment": "", "dimensions": "longitude latitude landUse time", "out_name": "sweLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5064,7 +5065,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "swsrfasdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5082,7 +5083,7 @@ "comment": "Balkanski - LSCE", "dimensions": "longitude latitude time", "out_name": "swsrfcsdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5100,7 +5101,7 @@ "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", "dimensions": "longitude latitude time", "out_name": "swtoaasdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5118,7 +5119,7 @@ "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", "dimensions": "longitude latitude time", "out_name": "swtoacsdust", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5136,7 +5137,7 @@ "comment": "Air temperature squared", "dimensions": "longitude latitude alevel time", "out_name": "t2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5154,7 +5155,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "t20d", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5172,7 +5173,7 @@ "comment": "defined as 1/(turnover time) for each soil pool. Use the same pools reported under cSoilPools", "dimensions": "longitude latitude soilpools time1", "out_name": "tSoilPools", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5190,7 +5191,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude plev27 time", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5208,7 +5209,7 @@ "comment": "", "dimensions": "longitude latitude landUse time height2m", "out_name": "tasLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5226,7 +5227,7 @@ "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", "dimensions": "longitude latitude time height2m", "out_name": "tasmaxCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5244,7 +5245,7 @@ "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", "dimensions": "longitude latitude time height2m", "out_name": "tasminCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5262,7 +5263,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "tdps", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5280,7 +5281,7 @@ "comment": "Vertical average of the sea water potential temperature through the whole ocean depth", "dimensions": "longitude latitude time", "out_name": "thetaot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5298,7 +5299,7 @@ "comment": "Upper 2000m, 2D field", "dimensions": "longitude latitude time depth2000m", "out_name": "thetaot2000", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5316,7 +5317,7 @@ "comment": "Upper 300m, 2D field", "dimensions": "longitude latitude time depth300m", "out_name": "thetaot300", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5334,7 +5335,7 @@ "comment": "Upper 700m, 2D field", "dimensions": "longitude latitude time depth700m", "out_name": "thetaot700", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5352,7 +5353,7 @@ "comment": "Includes all boundary layer terms including diffusive terms.", "dimensions": "longitude latitude alevel time", "out_name": "tnhuspbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5370,7 +5371,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "tnhusscp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5388,7 +5389,7 @@ "comment": "This includes any horizontal or vertical numerical temperature diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the temperature budget.", "dimensions": "longitude latitude alevel time", "out_name": "tntd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5424,7 +5425,7 @@ "comment": "Includes all boundary layer terms including diffusive terms.", "dimensions": "longitude latitude alevel time", "out_name": "tntpbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5442,7 +5443,7 @@ "comment": "Tendency of air temperature due to longwave radiative heating", "dimensions": "longitude latitude plev27 time", "out_name": "tntrl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5460,7 +5461,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", "dimensions": "longitude latitude alevel time", "out_name": "tntrlcs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5478,7 +5479,7 @@ "comment": "Tendency of air temperature due to shortwave radiative heating", "dimensions": "longitude latitude plev27 time", "out_name": "tntrs", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5496,7 +5497,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", "dimensions": "longitude latitude alevel time", "out_name": "tntrscs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5514,7 +5515,7 @@ "comment": "", "dimensions": "longitude latitude alevel time", "out_name": "tntscp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5532,7 +5533,7 @@ "comment": "Full column sum of density*cell thickness*prognostic temperature. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", "dimensions": "longitude latitude time", "out_name": "tomint", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5550,7 +5551,7 @@ "comment": "This is the fraction of the entire grid cell that is covered by broadleaf deciduous trees.", "dimensions": "longitude latitude time typetreebd", "out_name": "treeFracBdlDcd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5568,7 +5569,7 @@ "comment": "This is the fraction of the entire grid cell that is covered by broadleaf evergreen trees.", "dimensions": "longitude latitude time typetreebe", "out_name": "treeFracBdlEvg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5586,7 +5587,7 @@ "comment": "This is the fraction of the entire grid cell that is covered by needleleaf deciduous trees.", "dimensions": "longitude latitude time typetreend", "out_name": "treeFracNdlDcd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5604,7 +5605,7 @@ "comment": "This is the fraction of the entire grid cell that is covered by needleleaf evergreen trees.", "dimensions": "longitude latitude time typetreene", "out_name": "treeFracNdlEvg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5622,7 +5623,7 @@ "comment": "Surface temperature (i.e. temperature at which long-wave radiation emitted)", "dimensions": "longitude latitude landUse time", "out_name": "tslsiLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5640,7 +5641,7 @@ "comment": "Product of air temperature and pressure tendency", "dimensions": "longitude latitude alevel time", "out_name": "twap", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5658,7 +5659,7 @@ "comment": "u*u", "dimensions": "longitude latitude alevel time", "out_name": "u2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5694,7 +5695,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5712,7 +5713,7 @@ "comment": "Column integrated eastward wind times specific humidity", "dimensions": "longitude latitude time", "out_name": "uqint", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5730,7 +5731,7 @@ "comment": "Product of air temperature and eastward wind", "dimensions": "longitude latitude alevel time", "out_name": "ut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5748,7 +5749,7 @@ "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", "dimensions": "longitude latitude plev19 time", "out_name": "utendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5766,7 +5767,7 @@ "comment": "Tendency of the eastward wind by parameterized orographic gravity waves.", "dimensions": "longitude latitude plev19 time", "out_name": "utendogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5784,7 +5785,7 @@ "comment": "u*v", "dimensions": "longitude latitude alevel time", "out_name": "uv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5802,7 +5803,7 @@ "comment": "u*omega", "dimensions": "longitude latitude alevel time", "out_name": "uwap", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5820,7 +5821,7 @@ "comment": "v*v", "dimensions": "longitude latitude alevel time", "out_name": "v2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5856,7 +5857,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5874,7 +5875,7 @@ "comment": "fraction of grid cell that is covered by vegetation.This SHOULD be the sum of tree, grass, crop and shrub fractions.", "dimensions": "longitude latitude time typeveg", "out_name": "vegFrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5892,7 +5893,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeight", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5910,7 +5911,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeightCrop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5928,7 +5929,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeightGrass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5946,7 +5947,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeightPasture", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5964,7 +5965,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeightShrub", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -5982,7 +5983,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "vegHeightTree", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6000,7 +6001,7 @@ "comment": "Column integrated northward wind times specific humidity", "dimensions": "longitude latitude time", "out_name": "vqint", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6018,7 +6019,7 @@ "comment": "Product of air temperature and northward wind", "dimensions": "longitude latitude alevel time", "out_name": "vt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6036,7 +6037,7 @@ "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", "dimensions": "longitude latitude plev19 time", "out_name": "vtendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6054,7 +6055,7 @@ "comment": "Tendency of the northward wind by parameterized orographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", "dimensions": "longitude latitude plev19 time", "out_name": "vtendogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6072,7 +6073,7 @@ "comment": "v*omega", "dimensions": "longitude latitude alevel time", "out_name": "vwap", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6108,7 +6109,7 @@ "comment": "omega*omega", "dimensions": "longitude latitude alevel time", "out_name": "wap2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6126,7 +6127,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetlandCH4", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6144,7 +6145,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetlandCH4cons", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6162,7 +6163,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wetlandCH4prod", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6180,7 +6181,7 @@ "comment": "Report only one year if specified fraction is used, or time series if values are determined dynamically.", "dimensions": "longitude latitude time typewetla", "out_name": "wetlandFrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6198,7 +6199,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "wtd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6216,7 +6217,7 @@ "comment": "Parameterised x-component of gravity wave drag", "dimensions": "longitude latitude alevel time", "out_name": "xgwdparam", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6234,7 +6235,7 @@ "comment": "Parameterised y- component of gravity wave drag", "dimensions": "longitude latitude alevel time", "out_name": "ygwdparam", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -6252,61 +6253,7 @@ "comment": "", "dimensions": "longitude latitude plev27 time", "out_name": "zg", - "type": "float", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomeso": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomeso", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomicro": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomicro", - "type": "", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoomisc": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Other Zooplankton Carbon Concentration", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude olevel time", - "out_name": "zoomisc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_EmonZ.json b/TestTables/CMIP6_EmonZ.json index 0e5bd73b..bb2d8aad 100644 --- a/TestTables/CMIP6_EmonZ.json +++ b/TestTables/CMIP6_EmonZ.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table EmonZ", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "alevel olevel", @@ -24,7 +25,7 @@ "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fy of Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3a of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", "dimensions": "latitude plev39 time", "out_name": "epfy", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Transformed Eulerian Mean Diagnostics Meridional component Fz of the Eliassen-Palm (EP) flux (Fy, Fz) derived from 6hr or higher frequency fields (use daily fields or 12 hr fields if the 6 hr are not available). Please use the definitions given by equation 3.5.3b of Andrews, Holton and Leovy text book, but scaled by density to have units m3 s-2.", "dimensions": "latitude plev39 time", "out_name": "epfz", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Rate of photolysis of molecular oxygen to atomic oxygen (o2 -> o1d+o)", "dimensions": "latitude plev39 time", "out_name": "jo2", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "sum of rates o3 -> o1d+o2 and o3 -> o+o2", "dimensions": "latitude plev39 time", "out_name": "jo3", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "total chemical loss rate for o+o1d+o3", "dimensions": "latitude plev39 time", "out_name": "oxloss", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "total production rate of o+o1d+o3 including o2 photolysis and all o3 producing reactions", "dimensions": "latitude plev39 time", "out_name": "oxprod", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "function of latitude, basin", "dimensions": "latitude basin time", "out_name": "sltbasin", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "", "dimensions": "latitude basin time", "out_name": "sltnortha", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Temperature tendency due to dissipation of parameterized nonorographic gravity waves.", "dimensions": "latitude plev39 time", "out_name": "tntnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Temperature tendency due to dissipation of parameterized orographic gravity waves.", "dimensions": "latitude plev39 time", "out_name": "tntogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Tendency of air temperature due to longwave radiative heating", "dimensions": "latitude plev39 time", "out_name": "tntrl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", "dimensions": "latitude plev39 time", "out_name": "tntrlcs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Tendency of air temperature due to shortwave radiative heating", "dimensions": "latitude plev39 time", "out_name": "tntrs", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", "dimensions": "latitude plev39 time", "out_name": "tntrscs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "", "dimensions": "latitude plev39 time", "out_name": "tntscp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "Tendency of the zonal mean zonal wind due to the divergence of the Eliassen-Palm flux.", "dimensions": "latitude plev39 time", "out_name": "utendepfd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "Tendency of the eastward wind by parameterized nonorographic gravity waves.", "dimensions": "latitude plev39 time", "out_name": "utendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "Mole Fraction of Ox", "dimensions": "latitude plev39 time", "out_name": "vmrox", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Transformed Eulerian Mean Diagnostics v*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available).", "dimensions": "latitude plev39 time", "out_name": "vtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Tendency of the northward wind by parameterized nonorographic gravity waves. (Note that CF name tables only have a general northward tendency for all gravity waves, and we need it separated by type.)", "dimensions": "latitude plev39 time", "out_name": "vtendnogw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Transformed Eulerian Mean Diagnostics w*, meridional component of the residual meridional circulation (v*, w*) derived from 6 hr or higher frequency data fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Scale height: 6950 m", "dimensions": "latitude plev39 time", "out_name": "wtem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "Parameterised x-component of gravity wave drag", "dimensions": "latitude plev39 time", "out_name": "xgwdparam", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "Parameterised y- component of gravity wave drag", "dimensions": "latitude plev39 time", "out_name": "ygwdparam", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "The diabatic heating rates due to all the processes that may change potential temperature", "dimensions": "latitude plev39 time", "out_name": "zmtnt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Esubhr.json b/TestTables/CMIP6_Esubhr.json index 486a4a0a..b2c720e8 100644 --- a/TestTables/CMIP6_Esubhr.json +++ b/TestTables/CMIP6_Esubhr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Esubhr", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.017361", "generic_levels": "alevel alevhalf", @@ -24,7 +25,7 @@ "comment": "Boundary layer depth", "dimensions": "longitude latitude time1", "out_name": "bldep", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -71,14 +72,14 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Specific Humidity", "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "hus", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -89,7 +90,7 @@ "frequency": "subhrPt", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", "long_name": "Near-Surface Specific Humidity", @@ -132,7 +133,7 @@ "comment": "includes both liquid and solid phases", "dimensions": "longitude latitude time1", "out_name": "pr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", "dimensions": "longitude latitude time1", "out_name": "ps", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -272,11 +273,11 @@ "units": "W m-2", "cell_methods": "area: mean time: point", "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiatio", + "long_name": "TOA Outgoing Longwave Radiation", "comment": "at the top of the atmosphere (to be compared with satellite measurements)", "dimensions": "longitude latitude time1", "out_name": "rlut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "at the top of the atmosphere", "dimensions": "longitude latitude time1", "out_name": "rsut", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "Air Temperature", "dimensions": "longitude latitude alevel time1", "out_name": "ta", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "longitude latitude time1 height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Includes all boundary layer terms including diffusive terms.", "dimensions": "alevel site time1", "out_name": "tnhuspbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "", "dimensions": "alevel site time1", "out_name": "tnhusscp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "This includes any horizontal or vertical numerical temperature diffusion not associated with the parametrized moist physics or the resolved dynamics. For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics. This term is required to check the closure of the temperature budget.", "dimensions": "alevel site time1", "out_name": "tntd", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "Includes all boundary layer terms including diffusive terms.", "dimensions": "alevel site time1", "out_name": "tntpbl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "Tendency of air temperature due to longwave radiative heating", "dimensions": "alevel site time1", "out_name": "tntrl", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", "dimensions": "alevel site time1", "out_name": "tntrlcs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,7 +511,7 @@ "comment": "Tendency of air temperature due to shortwave radiative heating", "dimensions": "alevel site time1", "out_name": "tntrs", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", "dimensions": "alevel site time1", "out_name": "tntrscs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -546,7 +547,7 @@ "comment": "", "dimensions": "alevel site time1", "out_name": "tntscp", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "ua", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "", "dimensions": "longitude latitude alevel time1", "out_name": "va", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Eyr.json b/TestTables/CMIP6_Eyr.json index 6054088a..b6ea9bbb 100644 --- a/TestTables/CMIP6_Eyr.json +++ b/TestTables/CMIP6_Eyr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Eyr", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "365", "generic_levels": "alevel olevel", @@ -60,7 +61,7 @@ "comment": "end of year values (not annual mean)", "dimensions": "longitude latitude landUse time1", "out_name": "cLitterLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "anthropogenic pools associated with land use tiles into which harvests and cleared carbon are deposited before release into atmosphere PLUS any remaining anthropogenic pools that may be associated with lands which were converted into land use tiles during reported period . Does NOT include residue which is deposited into soil or litter; end of year values (not annual mean)", "dimensions": "longitude latitude landUse time1", "out_name": "cProductLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "end of year values (not annual mean)", "dimensions": "longitude latitude landUse time1", "out_name": "cSoilLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "end of year values (not annual mean)", "dimensions": "longitude latitude landUse time1", "out_name": "cVegLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", "dimensions": "longitude latitude landUse time", "out_name": "fracInLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "end of year values (not annual mean); note that fraction should be reported as fraction of land grid cell (example: frac_lnd = 0.5, frac_ocn = 0.5, frac_crop_lnd = 0.2 (of land portion of grid cell), then frac_lut(crop) = 0.5*0.2 = 0.1)", "dimensions": "longitude latitude landUse time1", "out_name": "fracLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", "dimensions": "longitude latitude landUse time", "out_name": "fracOutLut", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "fraction of grid cell that is covered by vegetation.This SHOULD be the sum of tree, grass, crop and shrub fractions.", "dimensions": "longitude latitude time typeveg", "out_name": "vegFrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_IfxAnt.json b/TestTables/CMIP6_IfxAnt.json index f4846930..afdf5617 100644 --- a/TestTables/CMIP6_IfxAnt.json +++ b/TestTables/CMIP6_IfxAnt.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table IfxAnt", "realm": "landIce", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Area of the target grid (not the interpolated area of the source grid).", "dimensions": "longitude latitude", "out_name": "areacellg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Upward geothermal heat flux per unit area beneath land ice", "dimensions": "xant yant", "out_name": "hfgeoubed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "The thickness of the ice sheet", "dimensions": "xant yant", "out_name": "lithk", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "The bedrock topography beneath the land ice", "dimensions": "xant yant", "out_name": "topg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_IfxGre.json b/TestTables/CMIP6_IfxGre.json index 4af9fbb3..9f6a4358 100644 --- a/TestTables/CMIP6_IfxGre.json +++ b/TestTables/CMIP6_IfxGre.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table IfxGre", "realm": "landIce", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Area of the target grid (not the interpolated area of the source grid).", "dimensions": "longitude latitude", "out_name": "areacellg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Upward geothermal heat flux per unit area beneath land ice", "dimensions": "xgre ygre", "out_name": "hfgeoubed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "The thickness of the ice sheet", "dimensions": "xgre ygre", "out_name": "lithk", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "The bedrock topography beneath the land ice", "dimensions": "xgre ygre", "out_name": "topg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_ImonAnt.json b/TestTables/CMIP6_ImonAnt.json index 8eb935d0..9f726f19 100644 --- a/TestTables/CMIP6_ImonAnt.json +++ b/TestTables/CMIP6_ImonAnt.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table ImonAnt", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", "dimensions": "xant yant time", "out_name": "acabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xant yant time", "out_name": "icem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xant yant time", "out_name": "libmassbffl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xant yant time", "out_name": "libmassbfgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", "dimensions": "xant yant time", "out_name": "licalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", "dimensions": "xant yant time", "out_name": "lifmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xant yant time", "out_name": "litempbotfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xant yant time", "out_name": "litempbotgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", "dimensions": "xant yant time", "out_name": "litemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Runoff flux over land ice is the difference between any available liquid water in the snowpack less any refreezing. Computed as the sum of rainfall and melt of snow or ice less any refreezing or water retained in the snowpack", "dimensions": "xant yant time", "out_name": "mrroLi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", "dimensions": "xant yant time", "out_name": "snc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xant yant time", "out_name": "snicefreez", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xant yant time", "out_name": "snicem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "time height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_ImonGre.json b/TestTables/CMIP6_ImonGre.json index 91db0af8..f1066fbb 100644 --- a/TestTables/CMIP6_ImonGre.json +++ b/TestTables/CMIP6_ImonGre.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table ImonGre", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", "dimensions": "xgre ygre time", "out_name": "acabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xgre ygre time", "out_name": "icem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xgre ygre time", "out_name": "libmassbffl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xgre ygre time", "out_name": "libmassbfgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", "dimensions": "xgre ygre time", "out_name": "licalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", "dimensions": "xgre ygre time", "out_name": "lifmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xgre ygre time", "out_name": "litempbotfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xgre ygre time", "out_name": "litempbotgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", "dimensions": "xgre ygre time", "out_name": "litemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Runoff flux over land ice is the difference between any available liquid water in the snowpack less any refreezing. Computed as the sum of rainfall and melt of snow or ice less any refreezing or water retained in the snowpack", "dimensions": "xgre ygre time", "out_name": "mrroLi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", "dimensions": "xgre ygre time", "out_name": "snc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xgre ygre time", "out_name": "snicefreez", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "xgre ygre time", "out_name": "snicem", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "time height2m", "out_name": "tas", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_IyrAnt.json b/TestTables/CMIP6_IyrAnt.json index 8b23dcf9..0718cb22 100644 --- a/TestTables/CMIP6_IyrAnt.json +++ b/TestTables/CMIP6_IyrAnt.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table IyrAnt", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "365.00", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", "dimensions": "xant yant time", "out_name": "acabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Upward geothermal heat flux per unit area beneath land ice", "dimensions": "xant yant time", "out_name": "hfgeoubed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Total area of the floating ice shelves (the component of ice sheet that flows over ocean)", "dimensions": "time", "out_name": "iareafl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Total area of the grounded ice sheets (the component of ice sheet resting over bedrock)", "dimensions": "time", "out_name": "iareagr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xant yant time", "out_name": "libmassbffl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xant yant time", "out_name": "libmassbfgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", "dimensions": "xant yant time", "out_name": "licalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", "dimensions": "xant yant time", "out_name": "lifmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "The ice sheet mass is computed as the volume times density", "dimensions": "time", "out_name": "lim", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "The ice sheet mass is computed as the volume above flotation times density. Changes in land_ice_mass_not_displacing_sea_water will always result in a change in sea level, unlike changes in land_ice_mass which may not result in sea level change (such as melting of the floating ice shelves, or portion of ice that sits on bedrock below sea level)", "dimensions": "time", "out_name": "limnsw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xant yant time", "out_name": "litempbotfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xant yant time", "out_name": "litempbotgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", "dimensions": "xant yant time", "out_name": "litemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "The thickness of the ice sheet", "dimensions": "xant yant time", "out_name": "lithk", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Horizontal area of ice-sheet grid cells", "dimensions": "xant yant time", "out_name": "modelCellAreai", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -309,10 +310,10 @@ "cell_methods": "area: time: mean", "cell_measures": "area: areacellg", "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", + "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over sea water", "dimensions": "xant yant time typefis", "out_name": "sftflf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "Fraction of grid cell covered by grounded ice sheet", "dimensions": "xant yant time typegis", "out_name": "sftgrf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", "dimensions": "xant yant time", "out_name": "snc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Magnitude of basal drag at land ice base", "dimensions": "xant yant time", "out_name": "strbasemag", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "The total surface mass balance flux over land ice is a spatial integration of the surface mass balance flux", "dimensions": "time", "out_name": "tendacabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "The total basal mass balance flux over land ice is a spatial integration of the basal mass balance flux", "dimensions": "time", "out_name": "tendlibmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "The total calving flux over land ice is a spatial integration of the calving flux", "dimensions": "time", "out_name": "tendlicalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "The bedrock topography beneath the land ice", "dimensions": "xant yant time", "out_name": "topg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", "dimensions": "xant yant time", "out_name": "xvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", "dimensions": "xant yant time", "out_name": "xvelmean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,7 +511,7 @@ "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.", "dimensions": "xant yant time", "out_name": "xvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", "dimensions": "xant yant time", "out_name": "yvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -546,7 +547,7 @@ "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", "dimensions": "xant yant time", "out_name": "yvelmean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.'", "dimensions": "xant yant time", "out_name": "yvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). 'basal' means the lower boundary of the atmosphere", "dimensions": "xant yant time", "out_name": "zvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface called 'surface' means the lower boundary of the atmosphere", "dimensions": "xant yant time", "out_name": "zvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_IyrGre.json b/TestTables/CMIP6_IyrGre.json index 60de2ca6..24b49084 100644 --- a/TestTables/CMIP6_IyrGre.json +++ b/TestTables/CMIP6_IyrGre.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table IyrGre", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "365.00", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", "dimensions": "xgre ygre time", "out_name": "acabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Upward geothermal heat flux per unit area beneath land ice", "dimensions": "xgre ygre time", "out_name": "hfgeoubed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "Total area of the floating ice shelves (the component of ice sheet that flows over ocean)", "dimensions": "time", "out_name": "iareafl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Total area of the grounded ice sheets (the component of ice sheet resting over bedrock)", "dimensions": "time", "out_name": "iareagr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the floating land ice (floating ice shelf) portion of the grid cell divided by floating land ice (floating ice shelf) area in the grid cell. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xgre ygre time", "out_name": "libmassbffl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. A negative value means loss of ice. Computed as the total basal mass balance on the grounded land ice portion of the grid cell divided by grounded land ice area in the grid cell. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xgre ygre time", "out_name": "libmassbfgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Loss of ice mass resulting from iceberg calving. Computed as the rate of mass loss by the ice shelf (in kg s-1) divided by the horizontal area of the ice sheet (m2) in the grid box.", "dimensions": "xgre ygre time", "out_name": "licalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", "dimensions": "xgre ygre time", "out_name": "lifmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "The ice sheet mass is computed as the volume times density", "dimensions": "time", "out_name": "lim", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "The ice sheet mass is computed as the volume above flotation times density. Changes in land_ice_mass_not_displacing_sea_water will always result in a change in sea level, unlike changes in land_ice_mass which may not result in sea level change (such as melting of the floating ice shelves, or portion of ice that sits on bedrock below sea level)", "dimensions": "time", "out_name": "limnsw", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice shelf-ocean interface. Cell_methods: area: mean where floating_ice_shelf", "dimensions": "xgre ygre time", "out_name": "litempbotfl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Basal temperature that is used to force the ice sheet models, it is the temperature AT ice sheet - bedrock interface. Cell_methods: area: mean where grounded_ice_sheet", "dimensions": "xgre ygre time", "out_name": "litempbotgr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", "dimensions": "xgre ygre time", "out_name": "litemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "The thickness of the ice sheet", "dimensions": "xgre ygre time", "out_name": "lithk", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "Horizontal area of ice-sheet grid cells", "dimensions": "xgre ygre time", "out_name": "modelCellAreai", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -309,10 +310,10 @@ "cell_methods": "area: time: mean", "cell_measures": "area: areacellg", "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", + "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over sea water", "dimensions": "xgre ygre time typefis", "out_name": "sftflf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "Fraction of grid cell covered by grounded ice sheet", "dimensions": "xgre ygre time typegis", "out_name": "sftgrf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", "dimensions": "xgre ygre time", "out_name": "snc", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Magnitude of basal drag at land ice base", "dimensions": "xgre ygre time", "out_name": "strbasemag", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "The total surface mass balance flux over land ice is a spatial integration of the surface mass balance flux", "dimensions": "time", "out_name": "tendacabf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -420,7 +421,7 @@ "comment": "The total basal mass balance flux over land ice is a spatial integration of the basal mass balance flux", "dimensions": "time", "out_name": "tendlibmassbf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "The total calving flux over land ice is a spatial integration of the calving flux", "dimensions": "time", "out_name": "tendlicalvf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "The bedrock topography beneath the land ice", "dimensions": "xgre ygre time", "out_name": "topg", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", "dimensions": "xgre ygre time", "out_name": "xvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", "dimensions": "xgre ygre time", "out_name": "xvelmean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,7 +511,7 @@ "comment": "A velocity is a vector quantity. 'x' indicates a vector component along the grid x-axis, positive with increasing x. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.", "dimensions": "xgre ygre time", "out_name": "xvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. 'basal' means the lower boundary of the land ice.", "dimensions": "xgre ygre time", "out_name": "yvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -546,7 +547,7 @@ "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", "dimensions": "xgre ygre time", "out_name": "yvelmean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "A velocity is a vector quantity. 'y' indicates a vector component along the grid y-axis, positive with increasing y. 'Land ice' means glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves. The surface called 'surface' means the lower boundary of the atmosphere.'", "dimensions": "xgre ygre time", "out_name": "yvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). 'basal' means the lower boundary of the atmosphere", "dimensions": "xgre ygre time", "out_name": "zvelbase", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface called 'surface' means the lower boundary of the atmosphere", "dimensions": "xgre ygre time", "out_name": "zvelsurf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_LImon.json b/TestTables/CMIP6_LImon.json index 3f6a950f..ebfac434 100644 --- a/TestTables/CMIP6_LImon.json +++ b/TestTables/CMIP6_LImon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table LImon", "realm": "landIce land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice surface. Computed as the total surface mass balance on the land ice portion of the grid cell divided by land ice area in the grid cell. A negative value means loss of ice", "dimensions": "longitude latitude time", "out_name": "acabfIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Upward latent heat flux from the ice sheet surface", "dimensions": "longitude latitude time", "out_name": "hflsIs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Upward sensible heat flux from the ice sheet surface", "dimensions": "longitude latitude time", "out_name": "hfssIs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Loss of ice mass resulting from surface melting. Computed as the total surface melt water on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "longitude latitude time", "out_name": "icemIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -132,7 +133,7 @@ "comment": "Upper boundary temperature that is used to force ice sheet models. It is the temperature at the base of the snowpack models, and does not vary with seasons. Report surface temperature of ice sheet where snow thickness is zero", "dimensions": "longitude latitude time", "out_name": "litemptopIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "The total run-off (including drainage through the base of the soil model) per unit area leaving the land portion of the grid cell.", "dimensions": "longitude latitude time", "out_name": "mrroIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "The surface called 'surface' means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.", "dimensions": "longitude latitude time", "out_name": "orogIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Rainfall rate over the ice sheet", "dimensions": "longitude latitude time", "out_name": "prraIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "at surface; includes precipitation of all forms of water in the solid phase", "dimensions": "longitude latitude time", "out_name": "prsnIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rldsIs", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "", "dimensions": "longitude latitude time", "out_name": "rlusIs", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "Surface solar irradiance for UV calculations", "dimensions": "longitude latitude time", "out_name": "rsdsIs", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", "dimensions": "longitude latitude time", "out_name": "sblIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -363,10 +364,10 @@ "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Floating Ice Shelf Area Fraction", - "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over seawater", + "comment": "Fraction of grid cell covered by floating ice shelf, the component of the ice sheet that is flowing over sea water", "dimensions": "longitude latitude time typefis", "out_name": "sftflf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Fraction of grid cell covered by grounded ice sheet", "dimensions": "longitude latitude time typegis", "out_name": "sftgrf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -438,7 +439,7 @@ "comment": "Percentage of each grid cell that is occupied by snow that rests on land portion of cell.", "dimensions": "longitude latitude time", "out_name": "sncIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "Mass flux of surface meltwater which refreezes within the snowpack. Computed as the total refreezing on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "longitude latitude time", "out_name": "snicefreezIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "Loss of snow and ice mass resulting from surface melting. Computed as the total surface melt on the land ice portion of the grid cell divided by land ice area in the grid cell.", "dimensions": "longitude latitude time", "out_name": "snicemIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -528,7 +529,7 @@ "comment": "The total surface snow melt rate on the land portion of the grid cell divided by the land area in the grid cell; report as zero for snow-free land regions and missing where there is no land.", "dimensions": "longitude latitude time", "out_name": "snmIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "near-surface (usually, 2 meter) air temperature", "dimensions": "longitude latitude time", "out_name": "tasIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "Temperature of the lower boundary of the atmosphere", "dimensions": "longitude latitude time", "out_name": "tsIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "This temperature is averaged over all the snow in the grid cell that rests on land or land ice. When computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights. Reported as missing in regions free of snow on land.", "dimensions": "longitude latitude time", "out_name": "tsnIs", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Lmon.json b/TestTables/CMIP6_Lmon.json index 7182a83f..6c6692de 100644 --- a/TestTables/CMIP6_Lmon.json +++ b/TestTables/CMIP6_Lmon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Lmon", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "", @@ -313,7 +314,7 @@ "dimensions": "longitude latitude time", "out_name": "evspsblsoi", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -331,7 +332,7 @@ "dimensions": "longitude latitude time", "out_name": "evspsblveg", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -457,7 +458,7 @@ "dimensions": "longitude latitude time", "out_name": "gpp", "type": "real", - "positive": "down", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -485,7 +486,7 @@ "frequency": "mon", "modeling_realm": "land", "standard_name": "leaf_area_index", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Leaf Area Index", @@ -957,7 +958,7 @@ "cell_methods": "area: mean where land time: mean", "cell_measures": "area: areacella", "long_name": "Temperature of Soil", - "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", + "comment": "Temperature of soil. Reported as missing for grid cells with no land.", "dimensions": "longitude latitude sdepth time", "out_name": "tsl", "type": "real", diff --git a/TestTables/CMIP6_Oclim.json b/TestTables/CMIP6_Oclim.json index 6e80af78..64bc74fc 100644 --- a/TestTables/CMIP6_Oclim.json +++ b/TestTables/CMIP6_Oclim.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Oclim", "realm": "ocean", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "olevel", diff --git a/TestTables/CMIP6_Oday.json b/TestTables/CMIP6_Oday.json index 40d5fe7f..c8f992a2 100644 --- a/TestTables/CMIP6_Oday.json +++ b/TestTables/CMIP6_Oday.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Oday", "realm": "ocnBgChem", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "olevel", diff --git a/TestTables/CMIP6_Odec.json b/TestTables/CMIP6_Odec.json index e251bfd7..02858f58 100644 --- a/TestTables/CMIP6_Odec.json +++ b/TestTables/CMIP6_Odec.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Odec", "realm": "ocean", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "3650.00000", "generic_levels": "olevel", @@ -93,7 +94,7 @@ "cell_methods": "area: sum where sea time: mean", "cell_measures": "", "long_name": "Sea Water Mass", - "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", + "comment": "Total mass of liquid sea water. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", "dimensions": "time", "out_name": "masso", "type": "real", @@ -399,7 +400,7 @@ "cell_methods": "area: sum where sea time: mean", "cell_measures": "", "long_name": "Sea Water Volume", - "comment": "Total volume of liquid seawater.", + "comment": "Total volume of liquid sea water.", "dimensions": "time", "out_name": "volo", "type": "real", diff --git a/TestTables/CMIP6_Ofx.json b/TestTables/CMIP6_Ofx.json index a62ac296..0777eaf4 100644 --- a/TestTables/CMIP6_Ofx.json +++ b/TestTables/CMIP6_Ofx.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Ofx", "realm": "ocean", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.00000", "generic_levels": "olevel", @@ -35,7 +36,7 @@ "frequency": "fx", "modeling_realm": "ocean", "standard_name": "region", - "units": "1.0", + "units": "1", "cell_methods": "area: mean", "cell_measures": "area: areacello", "long_name": "Region Selection Index", @@ -152,7 +153,7 @@ "comment": "Ony required for models with unstructured grids: this label should be used for a file containing information about the grid structure, following the UGRID convention.", "dimensions": "longitude latitude", "out_name": "ugrido", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_Omon.json b/TestTables/CMIP6_Omon.json index ce9c167c..664d5e43 100644 --- a/TestTables/CMIP6_Omon.json +++ b/TestTables/CMIP6_Omon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Omon", "realm": "ocnBgChem", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "olevel", @@ -1015,7 +1016,7 @@ "dimensions": "longitude latitude time", "out_name": "evs", "type": "real", - "positive": "up", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -1672,7 +1673,7 @@ "hfbasinpmadv": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", + "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", "units": "W", "cell_methods": "longitude: mean (basin) time: mean", "cell_measures": "", @@ -1690,7 +1691,7 @@ "hfbasinpmdiff": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", + "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", "units": "W", "cell_methods": "longitude: mean (basin) time: mean", "cell_measures": "", @@ -1708,7 +1709,7 @@ "hfbasinpsmadv": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", + "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_eddy_advection", "units": "W", "cell_methods": "longitude: mean (basin) time: mean", "cell_measures": "", @@ -2393,7 +2394,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "iron_growth_limitation_of_calcareous_phytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Iron limitation of Calcareous Phytoplankton", @@ -2411,7 +2412,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "iron_growth_limitation_of_diatoms", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Iron limitation of Diatoms", @@ -2429,7 +2430,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "iron_growth_limitation_of_diazotrophs", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Iron limitation of Diazotrophs", @@ -2447,7 +2448,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "iron_growth_limitation_of_miscellaneous_phytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Iron Limitation of Other Phytoplankton", @@ -2465,7 +2466,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "iron_growth_limitation_of_picophytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Iron limitation of Picophytoplankton", @@ -2483,7 +2484,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Irradiance limitation of Calcareous Phytoplankton", @@ -2501,7 +2502,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "growth_limitation_of_diatoms_due_to_solar_irradiance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Irradiance limitation of Diatoms", @@ -2519,7 +2520,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "growth_limitation_of_diazotrophs_due_to_solar_irradiance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Irradiance limitation of Diazotrophs", @@ -2537,7 +2538,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Irradiance Limitation of Other Phytoplankton", @@ -2555,7 +2556,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "growth_limitation_of_picophytoplankton_due_to_solar_irradiance", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Irradiance limitation of Picophytoplankton", @@ -2573,7 +2574,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "nitrogen_growth_limitation_of_calcareous_phytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Nitrogen limitation of Calcareous Phytoplankton", @@ -2591,7 +2592,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "nitrogen_growth_limitation_of_diatoms", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Nitrogen limitation of Diatoms", @@ -2609,7 +2610,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "nitrogen_growth_limitation_of_diazotrophs", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Nitrogen limitation of Diazotrophs", @@ -2627,7 +2628,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "nitrogen_growth_limitation_of_miscellaneous_phytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Nitrogen Limitation of Other Phytoplankton", @@ -2645,7 +2646,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "nitrogen_growth_limitation_of_picophytoplankton", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Nitrogen limitation of Picophytoplankton", @@ -2685,7 +2686,7 @@ "cell_methods": "area: sum where sea time: mean", "cell_measures": "", "long_name": "Sea Water Mass", - "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", + "comment": "Total mass of liquid sea water. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", "dimensions": "time", "out_name": "masso", "type": "real", @@ -2824,7 +2825,7 @@ "msftmrhompa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", "cell_measures": "", @@ -2860,7 +2861,7 @@ "msftmzmpa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", "cell_measures": "", @@ -2878,7 +2879,7 @@ "msftmzsmpa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", "cell_measures": "", @@ -2914,7 +2915,7 @@ "msftyrhompa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "time: mean grid_longitude: mean", "cell_measures": "", @@ -2950,7 +2951,7 @@ "msftyzmpa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", + "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "time: mean grid_longitude: mean", "cell_measures": "", @@ -2968,7 +2969,7 @@ "msftyzsmpa": { "frequency": "mon", "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", + "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", "units": "kg s-1", "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", "cell_measures": "", @@ -3221,7 +3222,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", "long_name": "pH", @@ -3239,7 +3240,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_abiotic_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", "long_name": "Abiotic pH", @@ -3257,7 +3258,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_abiotic_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Surface Abiotic pH", @@ -3275,7 +3276,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_natural_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", "long_name": "Natural pH", @@ -3293,7 +3294,7 @@ "frequency": "mon", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_natural_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", "long_name": "Surface Natural pH", @@ -3422,7 +3423,7 @@ "units": "mol m-3", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", + "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Iron in Sea Water", "comment": "sum of phytoplankton iron component concentrations", "dimensions": "longitude latitude time depth0m", "out_name": "phyfeos", @@ -4449,7 +4450,7 @@ "cell_methods": "area: sum where sea time: mean", "cell_measures": "", "long_name": "Sea Water Volume", - "comment": "Total volume of liquid seawater.", + "comment": "Total volume of liquid sea water.", "dimensions": "time", "out_name": "volo", "type": "real", diff --git a/TestTables/CMIP6_Omonmissing.json b/TestTables/CMIP6_Omonmissing.json index 80261b55..164a2b6f 100644 --- a/TestTables/CMIP6_Omonmissing.json +++ b/TestTables/CMIP6_Omonmissing.json @@ -12,7 +12,7 @@ "approx_interval": "30.00000", "generic_levels": "olevel", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { "alt16": { diff --git a/TestTables/CMIP6_Oyr.json b/TestTables/CMIP6_Oyr.json index e6f2401a..038ef686 100644 --- a/TestTables/CMIP6_Oyr.json +++ b/TestTables/CMIP6_Oyr.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table Oyr", "realm": "ocnBgChem", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "365.00000", "generic_levels": "olevel", @@ -571,60 +572,6 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "dpocdtcalc": { - "frequency": "yr", - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Calcareous Phytoplankton", - "comment": "Primary (organic carbon) production by the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpocdtdiaz": { - "frequency": "yr", - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Diazotrophs", - "comment": "Primary (organic carbon) production by the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpocdtpico": { - "frequency": "yr", - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Tendency of Mole Concentration of Organic Carbon in sea water due to Net Primary Production by Picophytoplankton", - "comment": "Primary (organic carbon) production by the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "dpocdtpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, "exparag": { "frequency": "yr", "modeling_realm": "ocnBgChem", @@ -952,7 +899,7 @@ "ocontempdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1006,7 +953,7 @@ "ocontemppmdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1024,7 +971,7 @@ "ocontemppsmadvect": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1078,7 +1025,7 @@ "opottempdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1132,7 +1079,7 @@ "opottemppmdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1150,7 +1097,7 @@ "opottemppsmadvect": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection", "units": "W m-2", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1204,7 +1151,7 @@ "osaltdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_dianeutral_mixing", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1240,7 +1187,7 @@ "osaltpmdiff": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_diffusion", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1258,7 +1205,7 @@ "osaltpsmadvect": { "frequency": "yr", "modeling_realm": "ocean", - "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_advection", + "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection", "units": "kg m-2 s-1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", @@ -1381,29 +1328,11 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "pdi": { - "frequency": "yr", - "modeling_realm": "ocnBgChem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Diatom Primary Carbon Production", - "comment": "Primary (organic carbon) production by the diatom component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "pdi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, "phabio": { "frequency": "yr", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_abiotic_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", "long_name": "Abiotic pH", @@ -1421,7 +1350,7 @@ "frequency": "yr", "modeling_realm": "ocnBgChem", "standard_name": "sea_water_ph_natural_analogue_reported_on_total_scale", - "units": "1.0", + "units": "1", "cell_methods": "area: mean where sea time: mean", "cell_measures": "area: areacello volume: volcello", "long_name": "Natural pH", @@ -1717,7 +1646,7 @@ "dimensions": "longitude latitude olevel time", "out_name": "rsdoabsorb", "type": "real", - "positive": "down", + "positive": "", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", diff --git a/TestTables/CMIP6_SIday.json b/TestTables/CMIP6_SIday.json index 6e4ff5ce..358924ba 100644 --- a/TestTables/CMIP6_SIday.json +++ b/TestTables/CMIP6_SIday.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table SIday", "realm": "seaIce", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "", @@ -60,7 +61,7 @@ "comment": "Actual thickness of snow (snow volume divided by snow-covered area)", "dimensions": "longitude latitude time", "out_name": "sisnthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", "dimensions": "longitude latitude time", "out_name": "sispeed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "Report surface temperature of snow where snow covers the sea ice.", "dimensions": "longitude latitude time", "out_name": "sitemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -125,14 +126,14 @@ "frequency": "day", "modeling_realm": "seaIce", "standard_name": "sea_ice_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Fraction of time steps with sea ice", "comment": "Fraction of time steps of the averaging period during which sea ice is present (siconc >0 ) in a grid cell", "dimensions": "longitude latitude time", "out_name": "sitimefrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -150,7 +151,7 @@ "comment": "The x-velocity of ice on native model grid", "dimensions": "longitude latitude time", "out_name": "siu", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "The y-velocity of ice on native model grid", "dimensions": "longitude latitude time", "out_name": "siv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_SImon.json b/TestTables/CMIP6_SImon.json index 54690865..d224fae1 100644 --- a/TestTables/CMIP6_SImon.json +++ b/TestTables/CMIP6_SImon.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table SImon", "realm": "seaIce", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "30.00000", "generic_levels": "", @@ -24,7 +25,7 @@ "comment": "This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", "dimensions": "longitude latitude time", "out_name": "sfdsi", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -42,7 +43,7 @@ "comment": "Age of sea ice", "dimensions": "longitude latitude time", "out_name": "siage", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -60,7 +61,7 @@ "comment": "net (sum of transport in all directions) sea ice area transport through the following four passages, positive into the Arctic Ocean 1. Fram Strait = (11.5W,81.3N to (10.5E,79.6N) 2. Canadian Archipelago = (128.2W,70.6N) to (59.3W,82.1N) 3. Barents opening = (16.8E,76.5N) to (19.2E,70.2N) 4. Bering Strait = (171W,66.2N) to (166W,65N)", "dimensions": "siline time", "out_name": "siareaacrossline", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -78,7 +79,7 @@ "comment": "total area of sea ice in the Northern hemisphere", "dimensions": "time", "out_name": "siarean", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -96,7 +97,7 @@ "comment": "total area of sea ice in the Southern hemisphere", "dimensions": "time", "out_name": "siareas", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -114,7 +115,7 @@ "comment": "Computed strength of the ice pack, defined as the energy (J m-2) dissipated per unit area removed from the ice pack under compression, and assumed proportional to the change in potential energy caused by ridging. For Hibler-type models, this is P (= P*hexp(-C(1-A)))", "dimensions": "longitude latitude time", "out_name": "sicompstren", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -168,7 +169,7 @@ "comment": "Total change in sea-ice area fraction through dynamics-related processes (advection, divergence...)", "dimensions": "longitude latitude time", "out_name": "sidconcdyn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -186,7 +187,7 @@ "comment": "Total change in sea-ice area fraction through thermodynamic processes", "dimensions": "longitude latitude time", "out_name": "sidconcth", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -204,7 +205,7 @@ "comment": "Divergence of sea-ice velocity field (first shear strain invariant)", "dimensions": "longitude latitude time1", "out_name": "sidivvel", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -222,7 +223,7 @@ "comment": "Total change in sea-ice mass through dynamics-related processes (advection,...) divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmassdyn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -240,7 +241,7 @@ "comment": "The rate of change of sea-ice mass change through evaporation and sublimation divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmassevapsubl", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -258,7 +259,7 @@ "comment": "The rate of change of sea ice mass due to vertical growth of existing sea ice at its base divided by grid-cell area.", "dimensions": "longitude latitude time", "out_name": "sidmassgrowthbot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -276,7 +277,7 @@ "comment": "The rate of change of sea ice mass due to sea ice formation in supercooled water (often through frazil formation) divided by grid-cell area. Together, sidmassgrowthwat and sidmassgrowthbot should give total ice growth", "dimensions": "longitude latitude time", "out_name": "sidmassgrowthwat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -294,7 +295,7 @@ "comment": "The rate of change of sea ice mass through lateral melting divided by grid-cell area (report 0 if not explicitly calculated thermodynamically)", "dimensions": "longitude latitude time", "out_name": "sidmasslat", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -312,7 +313,7 @@ "comment": "The rate of change of sea ice mass through melting at the ice bottom divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmassmeltbot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -330,7 +331,7 @@ "comment": "The rate of change of sea ice mass through melting at the ice surface divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmassmelttop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -348,7 +349,7 @@ "comment": "The rate of change of sea ice mass due to transformation of snow to sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmasssi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -366,7 +367,7 @@ "comment": "Total change in sea-ice mass from thermodynamic processes divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sidmassth", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -384,7 +385,7 @@ "comment": "Includes transport of both sea ice and snow by advection", "dimensions": "longitude latitude time", "out_name": "sidmasstranx", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -402,7 +403,7 @@ "comment": "Includes transport of both sea ice and snow by advection", "dimensions": "longitude latitude time", "out_name": "sidmasstrany", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -413,14 +414,14 @@ "frequency": "mon", "modeling_realm": "seaIce", "standard_name": "surface_drag_coefficient_for_momentum_in_water", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc or siconca)", "cell_measures": "area: areacello OR areacella", "long_name": "Ocean drag coefficient", "comment": "Oceanic drag coefficient that is used to calculate the oceanic momentum drag on sea ice", "dimensions": "longitude latitude time", "out_name": "sidragbot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -431,14 +432,14 @@ "frequency": "mon", "modeling_realm": "seaIce", "standard_name": "surface_drag_coefficient_for_momentum_in_air", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc or siconca)", "cell_measures": "area: areacello OR areacella", "long_name": "Atmospheric drag coefficient", "comment": "Atmospheric drag coefficient that is used to calculate the atmospheric momentum drag on sea ice", "dimensions": "longitude latitude time", "out_name": "sidragtop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -456,7 +457,7 @@ "comment": "Total area of all Northern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", "dimensions": "time", "out_name": "siextentn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -474,7 +475,7 @@ "comment": "Total area of all Southern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", "dimensions": "time", "out_name": "siextents", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -492,7 +493,7 @@ "comment": "Mean height of sea-ice surface (=snow-ice interface when snow covered) above sea level", "dimensions": "longitude latitude time", "out_name": "sifb", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -510,8 +511,8 @@ "comment": "the net heat conduction flux at the ice base", "dimensions": "longitude latitude time", "out_name": "siflcondbot", - "type": "", - "positive": "", + "type": "real", + "positive": "down", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -528,8 +529,8 @@ "comment": "the net heat conduction flux at the ice surface", "dimensions": "longitude latitude time", "out_name": "siflcondtop", - "type": "", - "positive": "", + "type": "real", + "positive": "down", "valid_min": "", "valid_max": "", "ok_min_mean_abs": "", @@ -546,7 +547,7 @@ "comment": "Total flux of fresh water from water into sea ice divided by grid-cell area; This flux is negative during ice growth (liquid water mass decreases, hence upward flux of freshwater), positive during ice melt (liquid water mass increases, hence downward flux of freshwater)", "dimensions": "longitude latitude time", "out_name": "siflfwbot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -564,7 +565,7 @@ "comment": "Total flux of fresh water from sea-ice surface into underlying ocean. This combines both surface melt water that drains directly into the ocean and the drainage of surface melt pond. By definition, this flux is always positive.", "dimensions": "longitude latitude time", "out_name": "siflfwdrain", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -582,7 +583,7 @@ "comment": "the net latent heat flux over sea ice", "dimensions": "longitude latitude time", "out_name": "sifllatstop", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -600,7 +601,7 @@ "comment": "the downwelling longwave flux over sea ice (always positive)", "dimensions": "longitude latitude time", "out_name": "sifllwdtop", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -618,7 +619,7 @@ "comment": "the upwelling longwave flux over sea ice (always negative)", "dimensions": "longitude latitude time", "out_name": "sifllwutop", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -636,7 +637,7 @@ "comment": "the net sensible heat flux over sea ice", "dimensions": "longitude latitude time", "out_name": "siflsenstop", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -654,7 +655,7 @@ "comment": "the net sensible heat flux under sea ice from the ocean", "dimensions": "longitude latitude time", "out_name": "siflsensupbot", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -672,7 +673,7 @@ "comment": "The downwelling shortwave flux underneath sea ice (always positive)", "dimensions": "longitude latitude time", "out_name": "siflswdbot", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -690,7 +691,7 @@ "comment": "The downwelling shortwave flux over sea ice (always positive by sign convention)", "dimensions": "longitude latitude time", "out_name": "siflswdtop", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -708,7 +709,7 @@ "comment": "The upwelling shortwave flux over sea ice (always negative)", "dimensions": "longitude latitude time", "out_name": "siflswutop", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -726,7 +727,7 @@ "comment": "X-component of force on sea ice caused by coriolis force", "dimensions": "longitude latitude time", "out_name": "siforcecoriolx", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -744,7 +745,7 @@ "comment": "Y-component of force on sea ice caused by coriolis force", "dimensions": "longitude latitude time", "out_name": "siforcecorioly", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -762,7 +763,7 @@ "comment": "X-component of force on sea ice caused by internal stress (divergence of sigma)", "dimensions": "longitude latitude time", "out_name": "siforceintstrx", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -780,7 +781,7 @@ "comment": "Y-component of force on sea ice caused by internal stress (divergence of sigma)", "dimensions": "longitude latitude time", "out_name": "siforceintstry", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -798,7 +799,7 @@ "comment": "X-component of force on sea ice caused by sea-surface tilt", "dimensions": "longitude latitude time", "out_name": "siforcetiltx", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -816,7 +817,7 @@ "comment": "Y-component of force on sea ice caused by sea-surface tilt", "dimensions": "longitude latitude time", "out_name": "siforcetilty", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -834,7 +835,7 @@ "comment": "Heat content of all ice in grid cell divided by total grid-cell area. Water at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of snow, but does include heat content of brine. Heat content is always negative, since both the sensible and the latent heat content of ice are less than that of water", "dimensions": "longitude latitude time", "out_name": "sihc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -852,7 +853,7 @@ "comment": "Area fraction of grid cell covered by each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", "dimensions": "longitude latitude iceband time", "out_name": "siitdconc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -870,7 +871,7 @@ "comment": "Area fraction of grid cell covered by snow in each ice-thickness category (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of the categories as third coordinate axis)", "dimensions": "longitude latitude iceband time", "out_name": "siitdsnconc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -888,7 +889,7 @@ "comment": "Actual thickness of snow in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", "dimensions": "longitude latitude iceband time", "out_name": "siitdsnthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -906,7 +907,7 @@ "comment": "Actual (floe) thickness of sea ice in each category (NOT volume divided by grid area), (vector with one entry for each thickness category starting from the thinnest category, netcdf file should use thickness bounds of categories as third coordinate axis)", "dimensions": "longitude latitude iceband time", "out_name": "siitdthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -924,7 +925,7 @@ "comment": "Total mass of sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "simass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -942,7 +943,7 @@ "comment": "net (sum of transport in all directions) sea ice area transport through the following four passages, positive into the Arctic Ocean 1. Fram Strait = (11.5W,81.3N to (10.5E,79.6N) 2. Canadian Archipelago = (128.2W,70.6N) to (59.3W,82.1N) 3. Barents opening = (16.8E,76.5N) to (19.2E,70.2N) 4. Bering Strait = (171W,66.2N) to (166W,65N)", "dimensions": "siline time", "out_name": "simassacrossline", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -960,7 +961,7 @@ "comment": "Fraction of sea ice, by area, which is covered by melt ponds, giving equal weight to every square metre of sea ice .", "dimensions": "longitude latitude time typemp", "out_name": "simpconc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -978,7 +979,7 @@ "comment": "Meltpond mass per area of sea ice.", "dimensions": "longitude latitude time", "out_name": "simpmass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -996,7 +997,7 @@ "comment": "Volume of refrozen ice on melt ponds divided by meltpond covered area", "dimensions": "longitude latitude time", "out_name": "simprefrozen", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1014,7 +1015,7 @@ "comment": "mass of liquid precipitation falling onto sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sipr", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1025,14 +1026,14 @@ "frequency": "mon", "modeling_realm": "seaIce", "standard_name": "fraction_of_ridged_sea_ice", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean where sea_ice (comment: mask=siconc or siconca)", "cell_measures": "area: areacello OR areacella", "long_name": "Percentage Cover of Sea-Ice by Ridging", "comment": "Fraction of sea ice, by area, which is covered by sea ice ridges, giving equal weight to every square metre of sea ice .", "dimensions": "longitude latitude time", "out_name": "sirdgconc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1050,7 +1051,7 @@ "comment": "Sea Ice Ridge Height (representing mean height over the ridged area)", "dimensions": "longitude latitude time", "out_name": "sirdgthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1068,7 +1069,7 @@ "comment": "Mean sea-ice salinity of all sea ice in grid cell", "dimensions": "longitude latitude time", "out_name": "sisali", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1086,7 +1087,7 @@ "comment": "Total mass of all salt in sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sisaltmass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1104,7 +1105,7 @@ "comment": "Maximum shear of sea-ice velocity field (second shear strain invariant)", "dimensions": "longitude latitude time1", "out_name": "sishevel", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1122,7 +1123,7 @@ "comment": "Fraction of sea ice, by area, which is covered by snow, giving equal weight to every square metre of sea ice . Exclude snow that lies on land or land ice.", "dimensions": "longitude latitude time", "out_name": "sisnconc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1140,7 +1141,7 @@ "comment": "Heat-content of all snow in grid cell divided by total grid-cell area. Snow-water equivalent at 0 Celsius is assumed to have a heat content of 0 J. Does not include heat content of sea ice.", "dimensions": "longitude latitude time", "out_name": "sisnhc", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1158,7 +1159,7 @@ "comment": "Total mass of snow on sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sisnmass", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1176,7 +1177,7 @@ "comment": "Actual thickness of snow (snow volume divided by snow-covered area)", "dimensions": "longitude latitude time", "out_name": "sisnthick", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1194,7 +1195,7 @@ "comment": "Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", "dimensions": "longitude latitude time", "out_name": "sispeed", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1212,7 +1213,7 @@ "comment": "Maximum shear stress in sea ice (second stress invariant)", "dimensions": "longitude latitude time1", "out_name": "sistremax", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1230,7 +1231,7 @@ "comment": "Average normal stress in sea ice (first stress invariant)", "dimensions": "longitude latitude time1", "out_name": "sistresave", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1248,7 +1249,7 @@ "comment": "X-component of atmospheric stress on sea ice", "dimensions": "longitude latitude time", "out_name": "sistrxdtop", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -1266,7 +1267,7 @@ "comment": "X-component of ocean stress on sea ice", "dimensions": "longitude latitude time", "out_name": "sistrxubot", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1284,7 +1285,7 @@ "comment": "Y-component of atmospheric stress on sea ice", "dimensions": "longitude latitude time", "out_name": "sistrydtop", - "type": "", + "type": "real", "positive": "down", "valid_min": "", "valid_max": "", @@ -1302,7 +1303,7 @@ "comment": "Y-component of ocean stress on sea ice", "dimensions": "longitude latitude time", "out_name": "sistryubot", - "type": "", + "type": "real", "positive": "up", "valid_min": "", "valid_max": "", @@ -1320,7 +1321,7 @@ "comment": "Report temperature at interface, NOT temperature within lowermost model layer", "dimensions": "longitude latitude time", "out_name": "sitempbot", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1338,7 +1339,7 @@ "comment": "Report surface temperature of ice where snow thickness is zero", "dimensions": "longitude latitude time", "out_name": "sitempsnic", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1356,7 +1357,7 @@ "comment": "Report surface temperature of snow where snow covers the sea ice.", "dimensions": "longitude latitude time", "out_name": "sitemptop", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1385,14 +1386,14 @@ "frequency": "mon", "modeling_realm": "seaIce", "standard_name": "sea_ice_time_fraction", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Fraction of time steps with sea ice", "comment": "Fraction of time steps of the averaging period during which sea ice is present (siconc >0 ) in a grid cell", "dimensions": "longitude latitude time", "out_name": "sitimefrac", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1410,7 +1411,7 @@ "comment": "The x-velocity of ice on native model grid", "dimensions": "longitude latitude time", "out_name": "siu", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1428,7 +1429,7 @@ "comment": "The y-velocity of ice on native model grid", "dimensions": "longitude latitude time", "out_name": "siv", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1446,7 +1447,7 @@ "comment": "Total volume of sea ice divided by grid-cell area (this used to be called ice thickness in CMIP5)", "dimensions": "longitude latitude time", "out_name": "sivol", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1464,7 +1465,7 @@ "comment": "total volume of sea ice in the Northern hemisphere", "dimensions": "time", "out_name": "sivoln", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1482,7 +1483,7 @@ "comment": "total volume of sea ice in the Southern hemisphere", "dimensions": "time", "out_name": "sivols", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1500,7 +1501,7 @@ "comment": "the rate of change of snow mass through advection with sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmassdyn", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1518,7 +1519,7 @@ "comment": "the rate of change of snow mass through melt divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmassmelt", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1536,7 +1537,7 @@ "comment": "the rate of change of snow mass due to transformation of snow to sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmasssi", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1554,7 +1555,7 @@ "comment": "mass of solid precipitation falling onto sea ice divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmasssnf", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1572,7 +1573,7 @@ "comment": "the rate of change of snow mass through sublimation and evaporation divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmasssubl", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1590,7 +1591,7 @@ "comment": "the rate of change of snow mass through wind drift of snow (from sea-ice into the sea) divided by grid-cell area", "dimensions": "longitude latitude time", "out_name": "sndmasswindrif", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", @@ -1608,7 +1609,7 @@ "comment": "net (sum of transport in all directions) snow mass transport through the following four passages, positive into the Arctic Ocean 1. Fram Strait = (11.5W,81.3N to (10.5E,79.6N) 2. Canadian Archipela", "dimensions": "siline time", "out_name": "snmassacrossline", - "type": "", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_cf3hr_0.json b/TestTables/CMIP6_cf3hr_0.json index 48117c9a..fd59c181 100644 --- a/TestTables/CMIP6_cf3hr_0.json +++ b/TestTables/CMIP6_cf3hr_0.json @@ -11,7 +11,7 @@ "approx_interval": "1.00", "generic_levels": "", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { "height40": { diff --git a/TestTables/CMIP6_cf3hr_1.json b/TestTables/CMIP6_cf3hr_1.json index 924d44ae..3e6cb542 100644 --- a/TestTables/CMIP6_cf3hr_1.json +++ b/TestTables/CMIP6_cf3hr_1.json @@ -10,7 +10,7 @@ "approx_interval": "1.00", "generic_levels": "", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { "height40": { diff --git a/TestTables/CMIP6_cf3hr_2.json b/TestTables/CMIP6_cf3hr_2.json index d8699e7a..a293154c 100644 --- a/TestTables/CMIP6_cf3hr_2.json +++ b/TestTables/CMIP6_cf3hr_2.json @@ -11,7 +11,7 @@ "approx_interval": "1.00", "generic_levels": "", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { "time1": { diff --git a/TestTables/CMIP6_chunking.json b/TestTables/CMIP6_chunking.json index 8af4ba14..7f33bcff 100644 --- a/TestTables/CMIP6_chunking.json +++ b/TestTables/CMIP6_chunking.json @@ -9,7 +9,7 @@ "generic_levels": "alevel alevhalf", "product":"model-output", "data_specs_version": "10.10.10", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "variable_entry": { "tas": { diff --git a/TestTables/CMIP6_coordinate.json b/TestTables/CMIP6_coordinate.json index fd23d468..211d6683 100644 --- a/TestTables/CMIP6_coordinate.json +++ b/TestTables/CMIP6_coordinate.json @@ -681,31 +681,6 @@ "z_factors": "", "bounds_values": "" }, - "icesheet": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "Ice Sheet", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "region", - "positive": "", - "requested": [ - "antarctic", - "greenland" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "" - }, "landUse": { "standard_name": "area_type", "units": "", @@ -1698,7 +1673,7 @@ }, "scatratio": { "standard_name": "backscattering_ratio", - "units": "1.0", + "units": "1", "axis": "", "long_name": "lidar backscattering ratio", "climatology": "", @@ -1820,14 +1795,10 @@ "out_name": "line", "positive": "", "requested": [ - "Fram", - "Strait,", - "Canadian", - "Archipelego,", - "Barents", - "opening,", - "Bering", - "Strait" + "fram_strait,", + "canadian_archipelego,", + "barents_opening,", + "bering_strait" ], "requested_bounds": "", "stored_direction": "", @@ -2046,7 +2017,7 @@ }, "tau": { "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1.0", + "units": "1", "axis": "", "long_name": "cloud optical thickness", "climatology": "", diff --git a/TestTables/CMIP6_day.json b/TestTables/CMIP6_day.json index 709a4f61..3c62ae87 100644 --- a/TestTables/CMIP6_day.json +++ b/TestTables/CMIP6_day.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table day", "realm": "atmos", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "1.00000", "generic_levels": "", @@ -143,7 +144,7 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "time: mean", "cell_measures": "area: areacella", "long_name": "Specific Humidity", @@ -161,7 +162,7 @@ "frequency": "day", "modeling_realm": "atmos", "standard_name": "specific_humidity", - "units": "1.0", + "units": "1", "cell_methods": "area: time: mean", "cell_measures": "area: areacella", "long_name": "Near-Surface Specific Humidity", diff --git a/TestTables/CMIP6_fx.json b/TestTables/CMIP6_fx.json index 51f9f0ae..402b249b 100644 --- a/TestTables/CMIP6_fx.json +++ b/TestTables/CMIP6_fx.json @@ -1,11 +1,12 @@ { "Header": { - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "table_id": "Table fx", "realm": "land", "cmor_version": "3.2", - "table_date": "03 January 2018", + "table_date": "14 February 2018", "missing_value": "1e20", + "int_missing_value": "-999", "product": "model-output", "approx_interval": "0.00000", "generic_levels": "alevel", @@ -150,7 +151,7 @@ "comment": "", "dimensions": "longitude latitude alevel", "out_name": "zfull", - "type": "float", + "type": "real", "positive": "", "valid_min": "", "valid_max": "", diff --git a/TestTables/CMIP6_grids.json b/TestTables/CMIP6_grids.json index 7c8b6cad..285c9189 100644 --- a/TestTables/CMIP6_grids.json +++ b/TestTables/CMIP6_grids.json @@ -4,9 +4,9 @@ "cmor_version": "3.2", "Conventions": "CF-1.7 CMIP-6.2", "table_id": "Table grids", - "data_specs_version": "01.00.20", + "data_specs_version": "01.00.21", "missing_value": "1e20", - "table_date": "03 January 2018" + "table_date": "14 February 2018" }, "mapping_entry": { "sample_user_mapping": { diff --git a/TestTables/python_test_table_A b/TestTables/python_test_table_A index d845d308..a26781a1 100644 --- a/TestTables/python_test_table_A +++ b/TestTables/python_test_table_A @@ -10,7 +10,7 @@ "approx_interval": "30.00000", "generic_levels": "alevel alevhalf", "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" + "Conventions": "CF-1.7 CMIP-6.0" }, "axis_entry": { diff --git a/configure b/configure index 73bf5cbb..607987e8 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cmor 3.3.0. +# Generated by GNU Autoconf 2.69 for cmor 3.3.1. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cmor' PACKAGE_TARNAME='cmor' -PACKAGE_VERSION='3.3.0' -PACKAGE_STRING='cmor 3.3.0' +PACKAGE_VERSION='3.3.1' +PACKAGE_STRING='cmor 3.3.1' PACKAGE_BUGREPORT='nadeau1@llnl.gov' PACKAGE_URL='' @@ -667,6 +667,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -748,6 +749,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1000,6 +1002,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1137,7 +1148,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1250,7 +1261,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cmor 3.3.0 to adapt to many kinds of systems. +\`configure' configures cmor 3.3.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1290,6 +1301,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1316,7 +1328,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cmor 3.3.0:";; + short | recursive ) echo "Configuration of cmor 3.3.1:";; esac cat <<\_ACEOF @@ -1418,7 +1430,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cmor configure 3.3.0 +cmor configure 3.3.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1636,7 +1648,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cmor $as_me 3.3.0, which was +It was created by cmor $as_me 3.3.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4967,7 +4979,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cmor $as_me 3.3.0, which was +This file was extended by cmor $as_me 3.3.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5020,7 +5032,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cmor config.status 3.3.0 +cmor config.status 3.3.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index ac83f39e..a7d3ac9f 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl dnl Process this file with autoconf to produce a configure script. dnl AC_PREREQ(2.59) -AC_INIT(cmor, 3.3.0, nadeau1@llnl.gov) +AC_INIT(cmor, 3.3.1, nadeau1@llnl.gov) GIT_TAG=`cd $srcdir ; ./get_git_version.sh` diff --git a/include/cmor.h b/include/cmor.h index b5cc3fd0..740dc33b 100644 --- a/include/cmor.h +++ b/include/cmor.h @@ -3,7 +3,7 @@ #define CMOR_VERSION_MAJOR 3 #define CMOR_VERSION_MINOR 3 -#define CMOR_VERSION_PATCH 0 +#define CMOR_VERSION_PATCH 1 #define CMOR_CF_VERSION_MAJOR 1 #define CMOR_CF_VERSION_MINOR 6 diff --git a/include/cmor_users_functions.mod b/include/cmor_users_functions.mod index 8449c860..ced103c4 100644 Binary files a/include/cmor_users_functions.mod and b/include/cmor_users_functions.mod differ diff --git a/recipes/cmor/meta.yaml b/recipes/cmor/meta.yaml index 071deba7..6a747a35 100644 --- a/recipes/cmor/meta.yaml +++ b/recipes/cmor/meta.yaml @@ -1,6 +1,6 @@ package: name: cmor - version: 3.3.0 + version: 3.2.8 source: git_rev: master @@ -21,18 +21,17 @@ requirements: - python - ossuuid 1.6.2.* - udunits2 - - hdf5 1.8.* + - hdf5 1.8.18|1.8.18.* - libnetcdf 4.4.* - - numpy {{ NPY_VER }}.* + - numpy {{ NPY_VER }} - libgcc [osx] - run: - python - ossuuid 1.6.2.* - udunits2 - - hdf5 1.8.* + - hdf5 1.8.18|1.8.18.* - libnetcdf 4.4.* - - numpy {{ NPY_VER }}.* + - numpy {{ NPY_VER }} - cdms2 - libgcc [osx] diff --git a/scripts/conda_upload.sh b/scripts/conda_upload.sh index 53ac2409..90d6c42d 100755 --- a/scripts/conda_upload.sh +++ b/scripts/conda_upload.sh @@ -5,17 +5,33 @@ echo "Trying to upload conda" if [ `uname` == "Linux" ]; then OS=linux-64 echo "Linux OS" - export PATH="$HOME/miniconda2/bin:$PATH" - conda update -y -q conda + yum install -y wget git gcc + # wget --no-check https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda3.sh 2> /dev/null + wget --no-check https://repo.continuum.io/miniconda/Miniconda2-4.3.30-Linux-x86_64.sh -O miniconda2.sh 2> /dev/null + bash miniconda2.sh -b -p ${HOME}/miniconda + export SYSPATH=$PATH + export PATH=${HOME}/miniconda/bin:${SYSPATH} + echo $PATH + conda config --set always_yes yes --set changeps1 no + conda config --set anaconda_upload false --set ssl_verify false + conda install -n root gcc future + which python else echo "Mac OS" OS=osx-64 fi -mkdir ~/conda-bld -conda install -q anaconda-client conda-build conda config --set anaconda_upload no -binstar config --set verify_ssl False +mkdir ~/conda-bld +if [ `uname` == "Linux" ]; then + conda install -n root -q anaconda-client "conda-build<3.3" +fi +if [ `uname` == "Darwin" ]; then + # fix conda and anaconda-client conflict + conda install conda==4.2.16 + conda install -n root -q anaconda-client conda-build +fi + export CONDA_BLD_PATH=${HOME}/conda-bld export VERSION=`date +%Y.%m.%d` export UVCDAT_ANONYMOUS_LOG=no @@ -25,10 +41,17 @@ cd conda-recipes cmorversion=`echo $1 | cut -d- -f2` python ./prep_for_build.py -v `date +%Y.%m.%d`.${cmorversion} -b $1 echo "Building now" -conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.13 cmor -conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.12 cmor -conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.11 cmor -conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.10 cmor -conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.9 cmor -anaconda -t $CONDA_UPLOAD_TOKEN upload -u $USER -l nightly $CONDA_BLD_PATH/$OS/$PKG_NAME-`date +%Y.%m.%d`.${cmorversion}-*_0.tar.bz2 --force +#conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.13 cmor +#conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.12 cmor +#conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.11 cmor +#conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat --numpy=1.10 cmor +conda build -c conda-forge -c uvcdat/label/nightly -c uvcdat cmor +mkdir -p ~/.continuum/anaconda-client/ +echo "ssl_verify: false" >> ~/.continuum/anaconda-client/config.yaml +echo "verify_ssl: false" >> ~/.continuum/anaconda-client/config.yaml +if [ `uname` == "Darwin" ]; then + # fix conda and anaconda-client conflict + conda install conda==4.2.16 +fi +anaconda -t $CONDA_UPLOAD_TOKEN upload -u $USER -l nightly $CONDA_BLD_PATH/$OS/$PKG_NAME-`date +%Y.%m.%d`.${cmorversion}*_0.tar.bz2 --force diff --git a/scripts/createCMIP6CV.py b/scripts/createCMIP6CV.py index 6a763f87..0e12bb7c 100644 --- a/scripts/createCMIP6CV.py +++ b/scripts/createCMIP6CV.py @@ -63,7 +63,10 @@ def readGit(self): Dico = OrderedDict() for file in filelist: url = githubRepo + file - response = requests.get(url, verify="./cspca.crt") + try: + response = requests.get(url, verify="/Users/nadeau1/miniconda/lib/python2.7/site-packages/certifi/cacert.pem") + except: + response = requests.get(url, verify="/software/anaconda2/envs/cmor3/lib/python2.7/site-packages/certifi/cacert.pem") print url urlJson = response.content.decode('utf-8') myjson = json.loads(urlJson, object_pairs_hook=OrderedDict) @@ -94,7 +97,7 @@ def run(): regexp["forcing_index"] = [ "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" ] regexp["initialization_index"] = [ "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" ] regexp["data_specs_version"] = [ "^[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}$" ] - regexp["license"] = [ "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License .https://creativecommons.org/licenses/\\?.\\. *Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. *Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file).*\\. *The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. *All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" ] + regexp["license"] = [ "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License .https://creativecommons.org/licenses.* *Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. *Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file).*\\. *The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. *All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" ] CV['CV'] = OrderedDict(CV['CV'].items() + regexp.items())